1、2019/11/12,1,第三章 软件体系结构风格, 3.1 概述 3.2 经典软件体系结构风格 3.3 公共对象请求代理体系结构 3.4 正交体系结构 3.5 基于层次消息总线的体系结构风格 3.6 异构结构风格 3.7 互联系统构成的系统及其体系结构 3.8 面向体系结构的架构(SOA),2019/11/12,2,3.3 公共对象请求代理体系结构,公共对象请求代理体系结构CORBA(Common Object Request Broker Architecture)是由对象管理组织OMG(Object Management Group)提出的应用软件体系结构和对象技术规范,其核心是一套标准
2、的语言、接口和协议,以支持异构分布应用程序间的互操作性及独立于平台和编程语言的对象重用;,2019/11/12,3,3.3 公共对象请求代理体系结构,OMG简介: 成立于1989年,作为一个非营利性组织,致力于开发在技术上具有先进性、在商业上具有可行性并且独立于厂商的软件互联规范,推广面向对象模型技术,增强软件的可移植性(Portability)、可重用性(Reusability)和互操作性(Interoperability); 该组织成立之初,成员包括Unisys、Sun、Cannon、Hewlett-Packard、Philips等在业界享有声誉的软硬件厂商,目前该组织拥有800多家成员。
3、,2019/11/12,4,3.3 公共对象请求代理体系结构,CORBA主要版本的发展历程: 1990.11,OMG发表对象管理体系指南,初步阐明CORBA的思想; 1991.10,1.0版,定义了接口定义语言(IDL)、对象管理模型以及基于动态请求的API和接口仓库等内容; 1991.12,1.1版,引入了对象适配器的概念; 1996.8, 2.0版,对象请求代理间协议(IIOP,Internet Inter-ORB Protocol)的引入,用以实现不同厂商的ORB的互通; 1998.9,2.3版,增加了支持CORBA对象的异步实时传输、服务质量规范等内容。,2019/11/12,5,3.
4、3 公共对象请求代理体系结构,目标是提供一种机制,使得对象可以透明地发出请求和获得应答; ORB (Object Request Broker )是其关键通信机制,以实现互操作性为目标,处理对象之间的消息分布; 对象服务实现基本的对象创建,通用服务则使用对象管理结构所规定的类接口实现一些通用功能。,2019/11/12,6,2019/11/12,7,CORBA技术规范包括:接口定义语言IDL (Interface Definition Language)、接口池IR (Interface Repository)、动态调用接口DII (Dynamic Invocation Interface)、
5、对象适配器OA (Object Adapter)等。 1、接口定义语言 面向对象,虽不是编程语言,但它为客户对象提供了语言的独立性; 一种中性语言,描述对象的接口,不涉及对象的具体实现; 定义了IDL到C、C+、Java的映射。,2019/11/12,8,2、接口池 包括了分布计算环境中所有可用的服务器对象的接口表示; 支持动态搜索可用服务器接口、动态请求及参数。 3、动态调用接口 提供一些标准函数以供客户对象动态创建请求、动态构造请求参数; 服务器进行对象接口的动态搜索、请求及参数的动态构造与动态发送;,2019/11/12,9,4、对象适配器 屏蔽ORB内核的实现细节,为服务器对象的实现者
6、提供抽象接口,以便他们使用ORB内部的某些功能; 如,服务器对象的登录与激活、客户请求的认证,等等。,2019/11/12,10,CORBA定义一种面向对象的软件构件构造方法,提供不同的应用共享; 封装细节,精确定义接口、降低复杂度和开发费用; CORBA的平台无关性实现了对象的跨平台引用。,2019/11/12,11,CORBA词汇表=构 件:=客户系统/服务器系统/其他构件;连接件:=请求/服务 ;约 束:=接口池/配置 ; 客户机系统包括客户机应用程序、客户桩、上下文对象和接口仓库等构件,以及桩类型激发API和动态激发API等连接件; 服务器系统包括服务器应用程序库、服务器框架和对象请求
7、代理等构件,以及对象适配器等连接件。,2019/11/12,12,客户桩(stub):也译为“代码存根”,它给客户端程序提供一个桩,这个桩上“绑”着服务器对象。当客户程序需要调用远程对象时,这个桩被下载到客户端,客户就可以像调用本地方法一样调用远程方法。 客户桩的作用是将客户向服务器的请求进行编码、进行传输,服务器执行这次调用后将结果返回到客户桩,客户桩进行解码,将解码后的结果传送到客户程序中。,2019/11/12,13,2019/11/12,14,3.4 正交软件体系结构,正交(Orthogonal)软件体系结构由组织层和线索的构件构成; 层由一组具有相同抽象级别的构件构成,线索是子系统的
8、特例,由完成不同层次功能的构件组成,每一条线索完成整个系统中相对独立的一部分功能; 每条线索的实现与其他线索的实现关联很少,在同一层的构件之间不存在相互调用。,2019/11/12,15,正交软件体系结构特征: 正交软件体系结构由完成不同功能的n (n1)个线索(子系统)组成; 系统具有m (m1)个不同抽象级别的层; 线索之间是相互独立的(正交的); 系统有一个公共驱动层(最高层)和公共数据结构(最低层) ;,2019/11/12,16,3.5基于层次消息总线的体系结构,层次消息总线HMB (Hierarchy Message Bus)体系结构风格是北大杨芙清院士等人提出: 网络和分布式构件
9、技术日趋成熟,具有分布和并发特点的软件系统成为普遍需求; 基于事件驱动的编程模式在图形用户界面程序设计中得到广泛应用; 硬件总线体系结构具有良好的扩展性和适应性。,2019/11/12,17,HMB风格基于层次消息总线、支持构件的分布和并发,构件之间通过消息总线进行通信; 消息总线是系统的连接件,负责消息的分派、传递、过滤及处理结果的返回; 各个构件挂接在消息总线上,向总线登记感兴趣的消息类型;构件发送的消息由总线传送到其他构件,处理结果也由总线返回; 不要求各个构件具有相同的地址空间或局限在同一台机器上,可较好地刻画分布式并发系统。,2019/11/12,18,2019/11/12,19,3
10、.5.1 HMB的构件模型,HMB风格的构件模型包括接口、静态结构和动态行为: 一个构件支持多个不同的接口,每个接口包括一组输入和输出,刻画了构件对外提供的服务及要求的服务环境; 构件收到消息后,根据当前所处状态对消息进行响应,并可能导致状态的变迁; 复合构件是更简单的子构件通过局部消息总线连接而成。,2019/11/12,20,3.5.2 HMB的构件接口,HMB风格的构件接口的特点: 降低构件之间的耦合:构件只对消息本身感兴趣,不关心消息如何产生;切断构件之间的直接联系; 构件之间连接的匹配不固定:构件对外来消息进行响应后,可能导致状态的变迁;同一构件在不同状态下收到同样消息可能作出不同的
11、响应; 消息有接收消息和发送消息、同步消息(过程调用)和异步消息(信号)。,2019/11/12,21,3.5.3 HMB的消息总线,消息登记:构件需要向总线登记响应的消息集合; 消息分派和传递:总线负责消息的分派、传递,并负责处理结果的返回;总线是逻辑上整体,物理上可跨越多个机器(位置透明); 消息过滤:总线提供消息的转换和阻塞。,2019/11/12,22,3.5.3 HMB的消息总线(续),2019/11/12,23,3.5.4 HMB的构件静态结构,HMB风格支持自顶向下的层次化分解,复合构件由简单子构件构成; 子构件通过复合构件内部的消息总线连接,各层次的消息总线在逻辑功能上一致;
12、子构件还可进一步再分,整个系统用统一的方式描述。,2019/11/12,24,3.5.4 HMB的构件动态行为,同一事件,由于构件的状态不同,可具有不同的响应; 可采用带输出的有限状态机描述构件的行为。,2019/11/12,25,3.5.4 HMB运行时刻的系统演化,在对系统持续可用性要求较高时,需要在不必对软件进行重新编译和加载的前提下,为最终用户提供系统定制和扩展的能力; 动态删除和增加构件: 系统功能需要扩充时,增加新的构件,只需登记消息响应; 系统功能裁减或某构件出现问题时,删除构件,需阻塞一些消息; 用增强功能或改正错误的新构件替换旧构件。,2019/11/12,26,动态改变构件
13、响应的消息类型: 构件可以动态地改变对外提供的服务; 消息过滤: 通过消息过滤机制,解决某些构件集成的不匹配问题。,2019/11/12,27,3.6 异构结构风格,3.6.1 为什么要使用异构结构 不同的结构有不同的处理能力、不同的优缺点;体系结构应该根据实际需要进行选择; 遗留的系统可能具有不同的风格和结构; 软件包、框架、通信等方面存在多种不同的标准; 同一标准中存在不同的解释和表示。应用系统中10%代码实现公开功能,其余完成输入/输出、用户界面、文本编辑、图表、对话框等管理功能,重用主要受限于数据表示、数据组织、通信协议等方面的差异。,2019/11/12,28,3.6.2 异构组合匹
14、配问题,组合的方法很多,如可以利用分层组织方式,以不同的结构类型描述体系结构中的每一层。 异构体系结构组合时,如何解决不同体系结构下构件间的协调问题?假设:两个构件(A和B)不能协调工作的原因是各自事先对数据表示、通信协议、同步控制、语法作了假设。,2019/11/12,29,解决A、B不匹配的方法: 按照B的形式重写A,即将A的形成改变成B的形式; 公布A的形式的抽象化信息,即开放API; 数据传输过程中从A的形式转变到B的形式; 通过协商,A和B达成一个统一的形式; 使B成为支持多种形式; 为B提供进口/出口转换器:独立程序或系统协调扩充;,2019/11/12,30,引入中间形式,如ID
15、L(接口描述语言)、标准的发布形式等; 为A添加一个适配器(adapter)或包装器; 保持对A和B的版本并行一致。,2019/11/12,31,C/S与B/S混合软件体系结构,2019/11/12,32,C/S与B/S混合软件体系结构: 优点:外部用户不直接访问数据库服务器,能保证企业数据库的相对安全。企业内部用户的交互性较强,数据查询和修改的响应速度较快; 缺点:企业外部用户修改和维护数据时,速度较慢,较烦琐,数据的动态交互性不强。,2019/11/12,33,三种不同的异构风格: 空间异构(Spatial/Locational Heterogeneity):构件使用不同连接件混合,不同子
16、系统使用不同风格; 时间异构(Temporal/Simultaneous Heterogeneity):系统在不同时间或阶段采用不同风格; 层次异构(Hierachical Heterogeneity):各构件和连接件内部采用不同风格。,2019/11/12,34,3.7 互联系统的体系结构,3.7.1 互联系统构成的系统 SIS (System of Interconnected systems)由Herbert H. Simon在1981年提出; 系统可分成若干部分,每个部分作为单独的系统开发;整个系统通过一组互联系统实现,互联系统之间相互通信,履行系统的职责; 上级系统(superord
17、inate system):体现整体性能; 从属系统(subordinate system):子系统,上级系统模型中所指定内容的一个实现。,2019/11/12,35,2019/11/12,36,3.7.2 基于SASIS的软件过程,1、系统分解 当系统达到相当的规模和复杂性,或系统可由若干个物理上独立的系统组成; 如何将一个上级系统的功能分布在几个从属系统之间,每个从属系统负责一个明确定义的功能子集; “分而治之”,独立实现每个系统。,2019/11/12,37,2、用例建模 为每个系统在SIS系统中建立一个用例(use case)模型; 上级系统的高级用例分解到子系统上的多个从属系统的用例
18、; 从任何一个从属系统的角度来看,其他从属系统都是它的用例模型的主角。,2019/11/12,38,3、分析和设计 标识构件、选择体系结构风格、映射构件、分析构件相互作用和产生体系结构; 上级系统:考虑上级系统的关键用例、SIS的分级结构,及如何处理从属系统之间的重用; 从属系统:考虑从属系统在SIS中角色、从属系统的关键用例,履行它的职责,如何重用。,2019/11/12,39,4、实现 构件的开发和测试,上级系统的原型设计; 5、测试 组装不同从属系统时的集成测试; 6、演化和维护 当从属系统的需求发生变化时,不必开发新版本的上级系统,不会影响其他从属系统。,2019/11/12,40,3
19、.7.3 SIS体系结构的应用,1、大规模系统 如电话网络,顶层上级系统由一个标准化实体掌握,不同竞争公司开发符合该标准的从属系统; 系统功能包含多个业务领域,如全球移动通信系统(GSM:Global System for Mobile )包括呼叫用户到被呼叫用户的整个系统。 2、分布式系统 系统分布在多个计算机系统中,各系统之间明确定义接口,从属系统可由不同团队开发。,2019/11/12,41,3、遗留系统的重用 基本上不能进行修改和演化以满足新的变化了的业务需求的系统; 通常为大型软件系统,有着重要的作用,但已经不能满足要求,维护困难; 技术落后,性能低下; 系统没有使用现代软件工程方法
20、进行管理和开发,基本没有文档,很难理解。 可将遗留系统作为系统的一个从属系统重用。,2019/11/12,42,3.8 面向服务的架构SOA,3.8.1 传统IT架构面临的挑战 程序冗余 在同一个企业,同一类型的功能模块在不同的应用系统中大多需要重复编写,因而开发费用增加。 接口多样性 右图中的5个应用程序组成的集合需要20个直接接口,如果添加第6个应用程序将需要10个新接口。而且必须修改每个已有的应用程序中的代码以包括进新的接口,因而将发生大量的测试费用。,2019/11/12,43,传统架构问题分析,传统的架构是面向应用的,是为了解决某个领域的某一特定问题进行开发,各个系统间彼此独立。应用
21、通常基于不同的操作系统、不同的开发语言进行开发,使用的规范、技术不一致,造成软件组件的重用、集成各个不同系统的部件非常困难。由此造成了“信息孤岛”,使得软件系统的维护与新系统的开发投资很高。业务的发展要求更强的信息处理功能,一方面需要将现有的多个应用系统进行集成,另一方面要求新的应用系统能快速的搭建与实施。如电子商务供应链、电子政务的横向数据共享、数字地球、智能交通等。为满足上述需求,软件的组件化和重用化设计将变得越来越重要。,2019/11/12,44,3.8.3 SOA的解决方案,SOA架构把应用功能部件封装成为独立的服务,与平台、操作系统、应用的编 写语言、地域无关,可以在多个不同的应用
22、系统中重用。,SOA架构下,各个应用系统采用发送消息的方式,提供多个服务接口,由 服务总线完成各个系统间的数据传递。 而各个应用系统的运行平台、操作系统、编 写语言可以不同,只要服务都遵循 相同的规范(例如Web Service)。,2019/11/12,45,3.8.2 面向服务的架构(SOA),SOA(service-oriented architecture)是面向服务的体系结构,是一类分布式系统的体系结构。这类系统是将异构平台上应用程序的不同功能部件(称为服务)通过这些服务之间定义良好的接口和规范按松耦合方式整合在一起,即将多个现有的应用软件通过网络将其整合成一个新系统。 SOA解决的
23、两大目标是:系统整合和随需应变,,2019/11/12,46,术语表,SOA:Service-Oriented Architecture,面向服务的架构 ESB:Enterprise Service Bus,企业服务总线 BPM:Business Process Management,业务流程管理 BPEL:Business Process Execution Language,业务流程执行语言,2019/11/12,47,SOA体系结构,系统整合:是将异构平台上应用程序的不同功能部件封装成为“服务”,将这些服务按照统一的规范整合在一起,构成新的应用系统,由此,解决了传统IT架构的“信息孤岛”
24、问题。,随需应变:通过对服务的编排(用BPM),可以增加新的应用,并能适应变化,同时,这些服务构件不再仅仅为某一个系统服务,而是可为整个企业内部大多数的系统所用。,2019/11/12,48,SOA是软件技术的重大发展方向之一,国外从2001年就开始研究SOA,并已取得了实际应用 目前国内的研究和应用水平已经落后于国外,在国内建行已有应用,但用的是IBM的产品 必须加大投入,提升国内软件技术水平 SOA的市场前景十分广阔 Gartner Group预计,到2008年基于SOA的软件产品将占领70%的市场份额 IDC预测到 2007年,基于SOA的支撑平台、应用软件等相关市场将达到210亿美元,2019/11/12,49,SOA带来的改变,2019/11/12,50,SOA的适用范围,跨组织、跨地域、跨平台的即时协同 如: 制造业:资源标准化、即时构建动态联盟 电子政务:低成本、动态协同、政府资源规划 电子商务:以客户为中心的资源整合、灵活配置 物流:服务资源的合理规划、统筹配置 服务业:个性化、一站式服务,