第九章软件架构集成技术_第1页
第九章软件架构集成技术_第2页
第九章软件架构集成技术_第3页
第九章软件架构集成技术_第4页
第九章软件架构集成技术_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件架构集成技术 软件架构集成技术 l软件体系结构是构建计算机软件实践的基础。与建筑师设定建筑项目的设计原则和目标,作为绘图员画图的基础一样,一个软件架构师或系统架构师陈述软件构架,以作为实际系统的设计方案的基础。l软件架构(software architecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。 软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通讯。架构的目标是什么 l可靠性(Reliable)。软件系统对于用户的商业经营和管理来说极为重要,因此软件系统必须非常可靠。l安全行(Secure

2、)。软件系统所承担的交易的商业价值极高,系统的安全性非常重要。l可扩展性(Scalable)。软件必须能够在用户的使用率、用户的数目增加很快的情况下,保持合理的性能。只有这样,才能适应用户的市场扩展得可能性。 l可定制化(Customizable)。同样的一套软件,可以根据客户群的不同和市场需求的变化进行调整。l可扩展性(Extensible)。在新技术出现的时候,一个软件系统应当允许导入新技术,从而对现有系统进行功能和性能的扩展l可维护性(Maintainable)。软件系统的维护包括两方面,一是排除现有的错误,二是将新的软件需求反映到现有系统中去。一个易于维护的系统可以有效地降低技术支持的

3、花费9.1.1什么是CORBA lCORBA(Common Object Request Broker Architecture公共对象请求代理体系结构)是由OMG组织制订的一种标准的面向对象应用程序体系规范。其职责是为应用开发提供一个公共框架,制订工业指南和对象管理规范,加快对象技术的发展。lCORBA用于在不同进程(程序)之间,甚至是不同物理机器上的进程之间通讯。底层技术依靠RPC(远程过程调用)实现。面向对象的软件,以数据为中心设计,对象类既具有模块的封装性和类属等特性,还具有继承特性,极大地提高了类的可扩充性和可复用能力。对象类较之于传统软件的功能模块而另具有的优点是:l(1) 易于理

4、解,具有完整的语义特征;l(2) 易于扩充和修改,具有较高的通用性和适应性;l(3) 易于构造组装,具有规范的外部接口。9.1.1什么是CORBAlCORBA具有如下突出特点:l(1)分布计算技术和面向对象编程技术(Object Oriented Programming,OOP)相融合。通过OOP 继承性,实现软件源代码的复用。l(2)引入了“代理”的概念。代理的基本作用是完成对客户方提出的抽象服务请求的映射;自动发现和寻找服务器;自动设定路由,实现到服务方的执行。通过代理,用户在编制客户程序时不需要了解实现的细节,只需完整地定义和说明所需完成的任务和目标。l(3)客户端程序与服务器端程序的完

5、全分离。通过代理机制,客户方不再同服务器发生直接联系,而仅和代理进行交互。因此在保持调用方式不变的情况下,服务器方和客户方程序都可以自由地修改和升级而无须通知对方,从根本上改变了传统的面向过程调用机制的客户端服务器模式。l(4)提供了“软件总线”的功能。软件总线是CORBA定义的一组独立于语言和环境的接口规范,按照该接口规范开发出来的软件,便可以方便地集成到该系统中,而这个规范独立于任何实现语言。l(5)设计原则和设计方式的层次化。CORBA规范仅定义了ORB中用到的最基本对象、属性和方法,而面向应用的对象可以在OMA的应用对象、领域对象或开发环境中逐层进行定义和实现,CORBA规范是针对OR

6、B通信中间件制定的工业标准,而面向应用的对象定义则可以在对象管理体系结构的应用对象或应用开发环境中逐步分层定义和实现。9.1.2 CORBA的标准规范 lCORBA的核心是对象请求代理ORB,它提供对象定位、对象激活和对象通讯的透明机制。客户发出要求服务的请求,而对象则提供服务,ORB把请求发送给对象、把输出值返回给客户。ORB的服务对客户而言是透明的,客户不知道对象驻留在网络中何处、对象是如何通讯、如何实现以及如何执行的,只要他持有对某对象的对象引用,就可以向该对象发出服务请求。CORBA允许用户以两种不同的方式提出对象请求:l1)静态调用静态调用:l通过给定接口的存根,在编译了对象代码后,

7、进入客户端的程序。因此,静态调用必须在编译时就知道对象及其类型。l2)动态调用动态调用:l通过ORB的动态调用接口DII,在运行时生成访问对象的代码。l不管客户以哪一种形式提出请求,ORB的任务是:找出所要对象的位置,激活该对象,向对象传递此请求。对象执行所请求的服务后,把输出值返回给ORB,然后再由ORB返回给客户。9.1.2 CORBA的标准规范lCORBA的重要概念是:l1对象连接对象连接lCORBA广泛地支持对象的实现,在单服务器系统中也可以实现由接口定义语言定义的接口。ORB的灵活性既可以直接集成已有的应用,又不会使新对象受某些原则的制约。对象连接提供了有不同类型对象实现时,使用OR

8、B服务的方法,服务包括:对象引用、方法调用、安全控制、对象实现的激活与静候等。l2接口定义语言(IDL)lCORBA用IDL来描述对象接口,IDL是一种说明性语言,它的语法类似于C+。IDL提供的数据类型有:基本数据类型、构造类型、模板类型、和复合类型、操作说明。这些类型可以用来定义变元的类型和返回类型,操作说明则可以用来定义对象提供的服务。lIDL还提供模块构造,其中可以包含接口,而接口是IDL各类型中最重要的,它除了描述CORBA对象以外,还可以用作对象引用类型。lIDL提供了接口继承性,派生接口可以继承其基类接口所定义的操作与类型。IDL的接口继承性有其特殊性,此处不赘述。l总之,COR

9、BA的IDL是一种说明性语言,描述面向对象系统开发所遵循的接口与实现相分离的基本原则。l3动态调用接口动态调用接口l把IDL说明编译成面向对象程序设计语言的实代码后,客户可以调用已知对象的操作。在某些应用中,用户并不了解应用接口编译信息,但也要求调用对象的操作,这时就要动态调用接口来调用用户的操作了。例如,图形用户接口应支持用户浏览接口公共库,以获得每个对象所支持的操作信息,用户可根据自己的需求从浏览对象中挑选出所需的对象操作,具体的对象操作的调用实际上是用动态调用接口来完成的。l4接口公用库接口公用库l接口公用库持久地存储IDL的接口说明,借助于接口公用库,可以实现对象继承性层次结构的导航,

10、并且提供了有关对象支持的所有操作的描述。接口公用库最常见的功能是为接口浏览器提供信息,帮助应用开发者找出潜在的可重用的软件部件。ORB可以利用接口公用库检查运行时的操作参数类型,但接口公用库的基本功能是提供类型信息,为动态调用接口发送请求提供信息支持。 9.1.3 CORBA的核心内容的核心内容l对象管理体系结构对象管理体系结构OMA图9.1 OMA参考模型 对象请求代理公共设施应用接口领域接口 对象服务9.1.3 CORBA的核心内容的核心内容l(1)对象服务object services(OS)。定义加入ORB的系统级服务,如安全性、命名和事务处理,它们是与应用域无关的。对象服务是一些最有

11、可能被用来支持分布式对象环境F构造应用的标准化部件。目前通过的对象服务包括对象命名服务、事件服务、对象生存期服务、永久对象服务、对象关系服务以及事务服务、并发控制服务等等。l(2)公共设施common facilities(CF)。水平级的服务,定义应用程序级服务,如复合文档等。公共设施是比对象服务粒度更大的可重用的部件块。它主要用来帮助构造跨多个应用域的应用程序。典型的公共设施包括用户接口、信息管理、系统管理和任务管理等。l(3)领域接口如domain interfaces(DI)。面向待定的领域,在OMA中所处的位置与对象服务与公共设施相似。l(4)应用接口application inte

12、rfaces(AI)。面向指定的现实世界应用。是指供应商或用户借助于ORB、公共对象服务及公共设施而开发的特定产品,它不在CORBA体系结构中标推化。 9.1.3 CORBA的核心内容的核心内容l对象框架(object frameworks) 图9.2 OMA的对象框架OS DFAI DI OSCF OSOS DFDI OSORB对象框架OS:对象服务 CF:公共设施DI:领域接口 AI:应用接口9.2.1 什么是什么是EJB lEJB是一种基于构件的开发模型,它是Java服务器端服务框架的规范。EJB详细地定义了一个可以方便地部署Java构件的服务框架模型,用于创建可伸缩、多层次、跨平台、分

13、布式的应用,并可创建具有动态扩展性的服务器端的应用。lEJB具有以下特点:l(1) EJB以构件的形式组织服务器:EJB构件是直接用Java语言编写的服务器构件,Java语言编写的跨平台特性使得EJB构件可以方便地移植到各种操作系统平台和EJB服务器上;l(2) EJB构件实现仅需考虑应用需求,其系统级服务诸如事务管理、安全性、构件生命周期和线程等,都通过EJB服务器自动进行管理的;l(3) EJB体系结构具有面向对象、分布式、跨平台、可扩充性、安全性以及便于开发等优点,同时它还是以协议为中心的,任何协议都可以被利用。9.2.2 EJB的规范介绍的规范介绍lEnterprise Bean 依赖

14、容器来获取它的需求。如果 Enterprise Bean 需要访问 JDBC 连接或另一个 Enterprise Bean,那么它需要利用容器来完成此项操作;如果 Enterprise Bean 需要访问调用者的身份、获取它自身的引用或访问特性,那么它需要利用容器来完成这些操作。Enterprise Bean 通过以下三种机制之一与容器交互:回调方法、EJBContext 接口或 JNDI。 回调方法: 每个 bean 都会实现 EnterpriseBean 接口的子类型,该接口定义了一些方法,称作回调方法。每个回调方法在 bean 的生命周期期间向它提示一个不同事件,当容器要合用某个 bea

15、n、将其状态存储到数据库、结束事务、从内存中除去该 bean 等操作时,它将调用这些方法来通知该 bean。回调方法可以让 bean 在事件之前或之后立即执行内部调整。在第 4 章中将详细讨论回调方法。 9.2.2 EJB的规范介绍的规范介绍lEJBContext: 每个 bean 都会得到一个 EJBContext 对象,它是对容器的直接引用。EJBContext 接口提供了用于与容器交互的方法,因此那个 bean 可以请求关于环境的信息,如其客户机的身份或事务的状态,或者 bean 可以获取它自身的远程引用。lJava 命名和目录接口 (JNDI): JNDI 是 Java 平台的标准扩展

16、,用于访问命名系统,如 LDAP、NetWare、文件系统等。每个 bean 自动拥有对某个特定命名系统(称作环境命名上下文 (ENC))的访问权。ENC 由容器管理,bean 使用 JNDI 来访问 ENC。JNDI ENC 允许 bean 访问资源,如 JDBC 连接、其它 Enterprise Bean,以及特定于该 bean 的属性。 9.2.2 EJB的规范介绍的规范介绍lEJB 规范定义了 bean-容器契约,它包括了以上描述的机制(回调、EJBContext、JNDI ENC)以及一组严谨的规则,这些规则描述了 Enterprise Bean 及其容器在运行时的行为、如何检查安全

17、性访问、如何管理事务、如何应用持续,等等。bean-容器契约旨在使 Enterprise Bean 可以在 EJB 容器之间移植,从而可以只开发一次 Enterprise Bean,然后在任何 EJB container 运行该 Enterprise Bean。供应商,如 BEA、IBM 和 GemStone,都销售包含 EJB 容器的应用程序服务器。理想情况下,任何符合规范的 Enterprise Bean 都应该可以在任何符合规范的 EJB 容器中运行。 9.2.3 EJB的体系结构的体系结构lEJB的软构件模型的软构件模型 l有两种类型的软构件模型:客户端构件模型和服务器端构件模型。客户

18、端构件模型如JavaBeans是专门用于处理程序的表示及用户界面问题的;服务器端构件模型如EJB则向面向事务的中间件提供基础设施。 l服务器端构件模型把构件模型的开发和中间件联系在一起。企业级应用的中间件以其复杂性著称,它不仅涉及到应用逻辑、并发性和伸缩性问题,而且涉及到如何把不兼容的系统组合在一起的问题。服务器端构件模型解决了中间件开发的复杂性问题,它使中间件开发人员集中于应用系统的逻辑部分,而不用处理同步、可伸缩性、事务集成、网络、分布式对象框架等一些分布式应用系统中存在的复杂的细节问题。 9.2.3 EJB的体系结构的体系结构图9.5 EJB构件模型 EJB客户容器客户视图EJB 服务器

19、9.2.3 EJB的体系结构的体系结构lEJB构件模型给开发者提供了一下的支持:1 构件包含应用程序逻辑2 可重用的构件3 可伸缩性4 资源管理5 事务支持6 并发性管理9.2.3 EJB的体系结构的体系结构lEJB构件模型的特点l(1) EJB将成为用Java语言开发分布式的、面向对象的企业级应用系统的标准构件体系结构,EJB使得通过组合构件得到分布式应用系统成为可能。 l(2) EJB使得应用系统开发变得容易,应用系统开发人员不需要理解底层的事务处理细节、状态管理、多线程、资源共享管理、以及其它复杂的底层API细节。l(3) EJB遵循Java的“write once,run anywhe

20、re”的思想,一旦一个EJB开发完成之后,就可以部署在任何支持EJB的平台上,而不需要重新编译或对源代码进行修改。 l(4) EJB定义了一个协议,使得用不同供应商提供的工具开发和部署的构件能在运行时互操作。l(5) EJB体系结构和已有的服务器平台、其它的Java APL、CORBA等兼容。l(6) EJB将支持Enterprise Beans和其它的非Java应用系统的互操作性。 9.2.3 EJB的体系结构的体系结构lEJB 结构中的角色结构中的角色 l一个完整的基于EJB的分布式计算结构由六个角色组成,这六个角色可以由不同的开发商提供,每个角色所作的工作必须遵循Sun公司提供的EJB规

21、范,以保证彼此之间的兼容性。l这六个角色分别是:lEnterprise Bean Provider:EJB组件开发者;lApplication Assembler:应用组合者;lDeployer:部署者;lEJB Server Provider:EJB 服务器提供者;lEJB Container Provider:EJB 容器提供者;lSystem Administrator:系统管理员。9.3.1什么是什么是COMlCOM(Component Object Model),组件对象模型,一般简称组件。是Microsoft提出的组件标准,它是一种以组件为发布单元的对象模型,这种对象模型使各软件组

22、件可以用一种统一的方式进行交互。COM不仅定义了组件程序之间进行交互的标准,也提供了组件程序运行所需的环境。lCOM标准包括规范和实现两个部分,规范部分定义了组件和组件之间通信的机制,这些规范不依赖于任何特定的语言和操作系统,只要按照该规范,任何语言都可以使用。COM标准的实现部分是COM库,COM库为COM规范的具体实现提供了一些核心服务。COM库包括以下内容:l提供了少量API函数实现客户和服务器端COM应用的创建;lCOM通过注册表查找本地服务器和EXE程序,以及程序名与CLSID(Class Identifier)的转换等;l提供了一种标准的内存控制方法,使应用程序可以控制进程中内存的

23、分配。9.3.1什么是什么是COMlCOM有以下特性:lCOM是一种规范。COM规范描述了为创建能共同操作的组件而必须遵守的标准。这个标准描述了COM是什么和它们是如何运转的,以及说明了如何可动态交替更新组件。lCOM是一套服务。COM规范是由一套服务或API来支持的。COM库提供这些服务,它们是WIN32平台操作系统的一部分并且可用于当作其他操作系统的一个单独的包。lCOM是面向对象的。COM组件对象有标识、状态和行为。lCOM能够容易的用户化和升级你的应用程序。COM组件动态地相互联结,并且COM定义了定位其他组件和鉴定其功能的标准。因此,组件可以交换而不必重新编译整个应用程序。lCOM能

24、够分布式应用。位置透明性是COM的特性之一。这使得你可以编写COM组件而不必考虑它们的位置。组件可以移动而不要求对使用它们的应用程序作任何改变。lCOM组件可以用任何语言编写。任何能够处理二进制语言都能用于创建COM对象。能创建组件的语言和工具包括C/C+、JAVA、Visual Basic和Visual C+等。 9.3.1什么是什么是COMl使用COM带来的好处是多方面的: l即插即用。使用组件的最大好处首先是可以将它们动态的插入或卸出应用系统,是真正意义上的软件模块即插即用。组件可以在运行时刻,在不被重新链接或编译应用程序的情况下,可以将系统中的组件用新的组件替换掉,以便即时方便地进行系

25、统的升级和定制。这样做的最大好处是程序员可以利用最新的技术写出的最新组件取代以有的旧组件而整个系统的其他部分不需要一点改动。应用程序可以随新组件不断取代旧的组件而渐趋完善且健壮。而且利用已有的组件,用户还可以快速的建立全新的应用。l二进制重用。按照COM规范,组件可以在多个应用系统中重复利用同一组件。l分布式应用。利用COM/DCOM组件技术,可以方便的将应用系统扩展到网络环境下。lCOM与语言无关。可以使用多种语言编写COM组件,如Delphi、Visual Basic等,这使得程序员可以利用自己擅长的语言来编写组件,而无须学习其他专门的语言来编写组件。lCOM与平台无关。利用已编写的组件可

26、以在不同的操作系统平台下开发软件。9.3.1什么是什么是COMlCOM服务端组件可分为三类:l进程内组件,进程内服务器是装入客户端的进程空间内的组件,即客户程序和组件程序在同一个进程地址空间内。在客户端和服务端组件间有大量数据转移操作的情况下是理想的。进程内服务器会更快地装载。由于它占用和客户端应用程序同样的地址空间,它可以与客户端更快的通信。进程内服务器是通过将组件作为动态连接库(DLL)的形式来实现的。DLL允许特定的一套功能以分离于可执行的、以DLL为扩展名的文件进行存储。只有当程序需要它们时,DLL才将其装入内存中,客户程序将组件程序加载到自己的进程地址空间后再调用组件程序的函数。l本

27、地(即进程外)组件,进程外组件指客户程序和组件程序分别处在不同的进程空间地址中。进程外服务器对需要运行于独立的处理空间或作为独立客户端应用程序的线程的组件是理想的。这种服务器的类型自身是EXE,因此具有独立的进程的资格。由于数据必须从一个地址空间移到另一个地址空间,因此这些服务器就会慢得多。由于进程外服务器是可执行的,它们运行在自己的线程内。当客户端代码正在执行时,客户端不锁住服务器。进程外服务器对需要表现为独立的应用程序的组件也是理想的。例如,Microsoft Internet Explorer的应用程序是本地服务器的例子。客户端和服务端的通信是通过进程内的通信协议进行的,这个通信协议是I

28、PC。9.3.1什么是什么是COMl远程组件,远程服务器与本地服务器类似,除了远程服务器是运行在通过网络连接的分离的计算机上。这种功能是使用DCOM实现的。DCOM的优点在于它并不要求任何特别的编程来使具有功能。另外服务端和客户端通信是通过RPC通信协议进行的。l对于这三种不同的服务器组件,客户程序和组件程序交互的内在方式是完全不同的。但是对于功能相同的进程内和进程外组件,从程序编写的角度看,客户程序是以同样的方法来使用组件程序的,客户程序不需要做任何的修改。9.3.2 DCOM技术技术 lMicrosoft的分布式COM(DCOM)扩展了部件对象模型技术(COM),使其能够支持在局域网、广域

29、网甚至Internet上不同计算机的对象之间的通信。使用DCOM,应用程序就可以在位置上达到分布件,从而满足客户相应用的需求。l因为DCOM是世界上领先的部件技术COM的无缝扩展,所以可以将现在对基于COM的应用、部件、工具以及知识转移到标准化的分布式计算领域中来。当在做分布式计算时,DCOM处理网络协议的低层次的细节问题,从而能够使开发人员集中精力解决用户所要求的问题。9.3.2 DCOM技术技术 lDCOM的结构的结构lDCOM是部件对象模型是部件对象模型(COM)的进一步扩展。的进一步扩展。COM定义下部件和它定义下部件和它们的客户之间互相作用的方式。它使得部件和客户端无需任何中介部们的

30、客户之间互相作用的方式。它使得部件和客户端无需任何中介部件就能相互联系。客户进程直接调用部件中的方法。图件就能相互联系。客户进程直接调用部件中的方法。图9.6说明了部说明了部件对象模型的表示法。件对象模型的表示法。图9.6 部件对象模型部件客户9.3.2 DCOM技术技术l当客户进程和部件位于不同的机器时,DCOM仅仅只是用网络协议来代替本地进程之间的通信。无论是客户还是部件部不会知道连接它们的线路比以前长了许多。图9.8显示了DC0M的整体结构:COM运行库向客户和部件提供了面向对象的服务,并且使用RPC和安全机制产生符合DCOM线路协议标准的标准网络包。图9.8 DCOM:不同机器上的CO

31、M部件运行时COM邮件安全机制 DCE RPC协议栈客户运行时COM安全机制 DCE RPC 协议栈DCOM网络协议9.3.2 DCOM技术技术l位置独立性 lDCOM的位置独立性极大地简化了将应用部件分布化的任务,使其能够达到最合适的执行效果。例如,设想某个部件必须位于某台特定的机器上或某个特定的位置,并且此应用有许多小部件,就可以通过将这些部件配置在同一个LAN上,或者同一台机器上,甚至同一个进程中来减少网络的负载。当应用是由比较少的大部件构成时,网络负载并不是问题,此时可以将部件放在速度快的机器上,而不用去管这些机器到底在哪儿。图9.9显示了相同的“有效性检查部件”在两种不同情况下是如何分别配置的。一种情况是当“客户”机和“中间层”机器之间的带宽足够大时,它就配置在客户机上;另一种情况是当客户进程通过比较慢的网络连接来访问部件时,它又可配置在服务器上。9.3.2 DCOM技术技术图9.9 位置独立性商业规则部件客户层后端中间层数据库部件合法性部件合法性部件客户用户接口部件COMDCOMCOMDCOMCOM数据库DCOM9.3.2 DCOM技术技术l有了DCOM的位置独立性,应用系统可以将互相关联的部件放到靠得比较近的机器上,甚至可以将它们放到同一台机器上或同一个进程中。即使是由大量的小部件来完成一个具有复杂逻辑结构的功能

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论