1三、分布式系统的软件体系结构软件的体系结构有一个范围、视角问题即:在什么样的范围内以什么样的视角看待软件的体系结构传统的方法主要在单机环境中从系统功能角度看待软件的体系结构随着软件系统规模的增长及底层机制的完善需要新的软件体系结构描述方法2分布式系统对软件的需求自治性Autonomy可靠性Reliability可接受性Availability可扩展性Scalability互操作性Interoperability3自治性应用程序的自治性是指应用程序有能力控制其自身的关键资源关键资源是应用程序作为独立的实体完成其功能时所需要的珍贵资源例如:RDBMS连接大型机连接事务等4可靠性可靠性是指应用程序提供准确结果的能力在一个多用户的环境中确保准确的结果是困难的例子:从一个帐户(A1)向另一个帐户(A2)转一笔帐(M)需要将A1减去M并同时将A2增加M5可接受性可接受性指应用程序的响应时间能够被用户接受这依赖于许多因素:硬件可接受性软件可接受性网络可接受性等资源冗余可以提高响应时间6可扩展性可扩展性是对处理能力能够与资源的增加呈线性增长的一种期望这使得应用程序在从支持10个用户发展为支持10000个用户时只要增加必要的资源扩大应用程序的规模即可7互操作性互操作性是指应用程序访问其它平台上的应用程序、数据等资源的能力许多企业环境支持多种不同的硬件与软件它们必须协同工作以共同为企业的运作服务8目前存在三种描述分布式环境中软件体系结构的模型:DNA:DistributedinterNetApplicationArchitectureOMA:ObjectManagementArchitectureEJB;EnterpriseJavaBean9DNA、OMA、EJB皆是在分布式环境中从系统底层角度看待软件的体系结构它们解决的问题是类似的分布式系统的软件体系结构解决问题的方式也是类似的基于互操作模型(构件间交互)分离出公共功能(构件)由于EJB与OMA很类似,不予详述10核心业务功能横向人机交互数据服务DNA倡导:3-TierApplication11纵向OSORBServicesFacilitiesDomainObjectsObjectsObjectsObjectsObjectsOMA倡导:LayeredApplication12DNA与OMA互相渗透:DNA在3层结构中不断地增加公共服务例如:MTSMSMQ负载平衡等OMA在公共服务之上也定义了水平服务例如:UserInterfaceInformationManagementSystemManagementTaskManagement等13内容1、DNA2、MTS3、MSMQ四、DNADNA14DNA是Windows平台上的应用程序开发模型用以指导如何:利用Windows平台开发强壮、可扩展、分布式的应用程序;扩展现有的数据与外部应用程序以支持Internet;支持不同类型的客户设备以增加应用程序的范围由于DNA依赖于由Windows平台提供的综合、集成的服务开发者可以省缺分布式应用程序所需要的基础设施的开发而将精力集中在业务问题上1、DNADNA15DNA设计原则:Internetready.开发方案能完全利用平台的灵活性Internet的优势通讯能力Fastertimetomarket.快速开发、部署应用程序,不需要对开发者进行重新培训降低开发者必须写的代码Trueinteroperability.各模块皆具有互操作能力,以方便地向现有系统增加功能符合开放的协议与标准,以集成其它厂商的产品DNA16Reducedcomplexity.将关键服务直接集成到操作系统中并通过构件以一般的方式提供服务降低对IT专家的依赖以集中精力解决业务问题Language,toolandhardwareindependence.提供语言中立的构件模型使开发者可以使用任务专用的工具以个人计算为基本模型客户可以在大量可用的硬件上部署程序Lowertotalcostofownership.开发的程序易于部署且易于维护DNA17DNA18DNA19DNA20DNA提供多种表示服务开发者可以根据具体情况选择最佳方案基于Windows的构件各种Internet技术等HTMLScriptingDHTMLComponentsWin32API以支持丰富的界面与客户环境从手持无线设备到高端工作站DNA21DNA22WebServicesInternetInformationServer(IIS)可用于开发基于Web的商务应用系统这样的系统便于扩展、便于部署作为IIS技术之一的ActiveServerPages(ASP)具有语言中立编译省缺的特点是服务器端脚本环境用于创建、运行动态且交互的Web服务器应用程序利用ASP脚本及其它协调构件构造的应用程序可以与现有的系统、应用程序及数据协同工作DNA23ComponentServices基于互操作模型ComponentObjectModel(COM)增强分布处理功能MicrosoftTransactionServer(MTS)目前已发展为COM+通过降低为利用底层系统服务而编写的代码量使开发分布式应用系统更为快速容易廉价DNA24COM+服务包括新的或增强的服务包括:Bringyourowntransaction.COM构件可以参与由非COM+事务处理环境管理的事务只要它支持TransactionInternetProtocol(TIP)Loadbalancing.基于构件的应用程序可以以客户透明的方式在应用程序群中分布工作负载In-memorydatabase.内存数据库是一个事务性数据库系统用以支持对数据的快速访问DNA25Queuedcomponents.异步执行在网络环境下是不可避免的队列可以对异步执行提供良好支持Eventnotification.COM+事件是同时支持单播/多播、发布/订阅的事件机制允许多个客户“订阅”由各种服务器“发布”的事件Expandedsecurity.支持基于角色的安全与处理访问许可安全COM+增加了方法级安全Centralizedadministration.ComponentServicesExplorer提供了一致的管理模型减少了部署、管理及监控n层的应用程序DNA26MessagingServicesMicrosoftMessageQueueServer提供松耦合、可靠的通讯服务通过实现push风格的商务事件方便了应用系统的集成在不可靠、代价低的网络上建立起可靠的应用系统MicrosoftMessageQueueServer还提供了与其它消息队列产品的无缝连接例如:IBM’sMQSeries等DNA27•向大型机事务处理扩展通过使用COM构件及COMTransactionIntegrator(TI)开发者可以扩展大型机上的事务程序例如:CustomerInformationControlSystem(CICS)InformationManagementSystem(IMS)等COMTI包括一系列的开发工具与服务可以自动“封装”IBM的事务功能所有的COMTI处理皆在WindowsNTServer上进行DNA28关键的ApplicationServerTechnologies包括:MicrosoftTransactionServerActiveServerPagesMicrosoftInternetInformationServerMicrosoftMessageQueueServerMicrosoftComponentObjectModelDNA29DNA30企业需要从分布的数据与信息中获取最大的商业利益UniversalDataAccess提供对各种信息资源的高性能访问包括关系、非关系数据提供独立于工具与语言的编程接口UniversalDataAccess基于开放的工业规范得到了工业界及数据库厂商的广泛支持DNA31DNA中基于UniversalDataAccess的框架包含两层:在系统层:OLEDB定义了一个基于构件的体系结构封装了各种数据库管理系统服务OLEDB不对数据源进行约束在应用层:ActiveXDataObjects(ADO)提供了高层接口使开发者可以从任何编程语言访问数据在每一层:ExtensibleMarkupLanguage(XML)使开发者可以在应用程序客户之间进行描述、交付、交换结构化数据XML也可以在服务器之间进行结构化数据的传送DNA32DNA优点总结:为分布式应用程序的开发提供集成、综合的平台将开发者从底层工作中解放出来方便地与现有系统、数据等协作保护对现有系统的投资提供构件模型、共性服务以及支持工具减少开发分布式系统的时间DNA333、MTS什么是事务事务是一个不可分割的工作单元在一个不可靠的环境中事务是保证系统获得准确结果的有效措施一个事务可以正常完成也可以被终止,并“卷回”到初始状态如果一个过程的执行满足上述“事务”特性则我们称该过程是“事务性”的DNA34事务的四个特性(ACID):原子性(Atomicity):包含在事务中的活动或者全部有效,或者全部无效一致性(Consistency):事务涉及的各种数据必须保持一致性分离性(Isolation):不同事务之间互不干扰永久性(Durability):只要事务成功完成,则其结果一定有效其中:一致性是开发者需关注的原子性、分离性、持续性由底层的事务处理系统提供DNA35MTS(MicrosoftTransactionServer)MTS是一个基于构件的运行时基础设施是开发、部署、管理分布式服务应用程序的事务处理系统MTS是台式机的灵活性、代价低与高端大型机系统的业务关键处理的结合MTS还是构件管理器负责将应用系统的客户程序与应用构件对象以及各种资源有机地结合起来DNA36MTS对象与MTS客户MTS对象是指运行在MTS环境下的COM构件实例MTS为每个对象维护了一个环境对象MTS对象与其环境对象具有同样的生存周期环境对象实现了IObjectContext接口环境对象通过该接口提供事务、安全控制等能力MTS客户是指MTS对象的客户程序可以是一个运行于MTS环境之外的应用程序也可以是另一个MTS对象DNA37IObjectContext:publicIUnknown{public:virtualHRESULTCreateInstance(REFCLSIDrclsid,REFIIDriid,LPVOID__RPC_FAR*ppv)=0;virtualHRESULTSetComplete(void)=0;virtualHRESULTSetAbort(void)=0;virtualHRESULTEnableCommit(void)=0;virtualHRESULTDisableCommit(void)=0;virtualBOOLIsInTransaction(void)=0;virtualBOOLIsSecurityEnabled(void)=0;virtualHRESULTIsCallerInRole(BSTR__MIDL_0000,BOOL__RPC_FAR*__MIDL_0001)=0;};DNA38其中:CreateInstance函数用来创建另一个MTS对象SetComplete函数结束一次操作并指示一次事务被提交SetAbort函数结束一次操作并指示一次事务被取消EnableCommit函数允许事务提交操作DisableCommit函数禁止事务提交操作IsInTransaction函数判断当前对象是否在事务状态下运行IsSecurityEnabled函数判断对象的安全许可IsCallerInRole函数指定对象的调用者是否在当前服务进程的安全角色中DNA39MTS特性事务管理器简化数据库应用对数据的操作对分布式数据库的支持尤为明显对象管理器为基于COM的构件应用应用系统提供配置和管理的基础及时激活(