第三章_软件体系结构风格_第1页
第三章_软件体系结构风格_第2页
第三章_软件体系结构风格_第3页
第三章_软件体系结构风格_第4页
第三章_软件体系结构风格_第5页
已阅读5页,还剩107页未读 继续免费阅读

下载本文档

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

文档简介

1、第三章 软件体系结构风格本章内容o 3.1 软件体系结构风格概述o 3.2 常用的软件体系结构风格o 3.3 管道/过滤器体系结构风格o 3.4 面向对象体系结构风格o 3.5 事件驱动体系结构风格o 3.6 分层体系结构风格o 3.7 C2体系结构风格o 3.8 数据共享体系结构风格本章内容o 3.9 解释器体系结构风格o 3.10 反馈控制环体系结构风格o 3.11 客户机/服务器体系结构风格o 3.12 浏览器/服务器体系结构风格o 3.13 公共对象请求代理体系结构风格o 3.14 正交体系结构风格o 3.15 基于层次消息总线的体系结构风格o 3.16 MVC体系结构风格o 3.17

2、 异构体系结构集成3.1 软件体系结构风格概述o 软件体系结构表示系统的框架结构,用于从较高的层次上来描述各部分之间的关系和接口,主要包括:构件、构件性质和构件之间的关系o 软件框架设计的核心问题是:能否复用已经成型的体系结构方案o 不同系统的设计方案存在着许多共性问题,把这些共性部分抽取出来,就形成了具有代表性的和可广泛接受的体系结构风格3.1 软件体系结构风格概述o 软件体系结构风格也称为软件体系结构惯用模式,是指不同系统所拥有的共同组织结构和语义特征o 软件体系结构是构件和连接件之间相互作用的形式化说明,用以指导将多个模块组织成一个完整的应用程序o 软件体系结构风格定义了用于系统描述的术

3、语表和一组用于指导系统构建的规则3.1 软件体系结构风格概述o 软件体系结构风格包括构件、连接件和一组将它们结合在一起的约束限制,诸如:拓扑限制和语义限制等o 对于高质量的软件产品而言,首先要为其选择合适的体系结构风格,这样就能够更好地重用已有的设计方案和实现方案o 利用软件体系结构风格中的不变部分,可以使系统大粒度地重用已有的实现代码3.2 常用的软件体系结构风格o 数据流风格:批处理和管道/过滤器o 调用/返回风格:主程序/子程序、层次结构和客户机/服务器o 面向对象风格o 独立部件风格:进程通讯和事件驱动o 虚拟机风格:解释器和基于规则的系统o 数据共享风格:数据库系统和黑板系统3.3

4、管道/过滤器体系结构风格o 管道/过滤器结构主要包括过滤器和管道两种元素o 构件被称为过滤器,负责对数据进行加工处理o 每个过滤器都有一组输入端口和输出端口,从输入端口接收数据,经过内部加工处理之后,传送到输出端口上o 数据通过相邻过滤器之间的连接件进行传输,连接件可以看作输入数据流和输出数据流之间的通路,这就是所谓的管道3.3 管道/过滤器体系结构风格o 管道/过滤器结构将数据流处理分为几个顺序的步骤来进行,一个步骤的输出是下一个步骤的输入,每个处理步骤由一个过滤器来实现o 每个过滤器独立完成自己的任务,不同过滤器之间不需要进行交互o 在管道/过滤器结构中,数据输出的最终结果与各个过滤器执行

5、的顺序无关3.3 管道/过滤器体系结构风格o 每个过滤器都是一个独立的个体元素,各个过滤器的状态互不相关,非邻近过滤器不共享任何信息o 运行结果的正确性与各个过滤器运行的先后顺序无关3.3 管道/过滤器体系结构风格o 管道/过滤器风格具有以下优点:n 简单性,允许将系统的输入和输出看作是各个过滤器行为的简单组合,独立的过滤器能够减小构件之间的耦合程度n 系统具有可扩展性和可进化性,各个过滤器是相互独立的,因此可以很容易地将新过滤器添加到现有的系统之中,以扩展系统的业务处理能力,原有过滤器可以很方便地被改进的过滤器所替代3.3 管道/过滤器体系结构风格n 支持复用,如果一个过滤器的输出数据格式与

6、另一个过滤器的输入数据格式是一致的,就可以将这两个过滤器连接在一起n 系统并发性,各个过滤器能够独立运行,因此,不同子任务可以并行执行,提高了系统运行效率n 便于系统分析,由于系统是独立构件的组合,具有清晰的拓扑结构,因而有利于对数据吞吐量、死锁和计算准确性进行分析3.3 管道/过滤器体系结构风格o 管道/过滤器风格也存在着一定的问题:n 系统处理过程是批处理方式,过滤器具有很强的独立性,对于每一个过滤器,设计者必须考虑从输入到输出的转换过程,这种方式会造成过滤器对输入数据的批量转换处理n 不适合用来设计交互式应用系统n 由于没有通用的数据传输标准,因此每个过滤器都需要解析输入数据和合成数据,

7、添加和去除标记需要花费一定的时间,从而导致了系统性能下降,增加了过滤器设计的复杂性3.3 管道/过滤器体系结构风格n 难以进行错误处理,管道/过滤器结构的固有特性,决定了很难制定错误处理的一般性策略o 传统的编译器是管道/过滤器体系结构风格的一个实例3.4 面向对象体系结构风格o 在这种体系结构中,数据表示和相关原语操作都被封装在抽象数据类型中o 对象是构件,也称为抽象数据类型的实例o 对象是一种被称为管理器的构件,负责保持资源的完整性o 在对象和对象之间,通过函数调用和过程调用来进行交互3.4 面向对象体系结构风格o 面向对象风格具有以下优点:n 一个对象对外界隐藏了自己的详细信息,改变一个

8、对象的表示,不会影响系统的其它部分n 继承和封装方法为对象复用提供了技术支持3.4 面向对象体系结构风格n 对象将数据和操作封装在一起,提高了系统内聚性,减小了模块之间的耦合程度,使系统更容易分解为既相互作用又相互独立的对象集合o 面向对象体系结构风格也存在着一些问题:n 如果一个对象要调用另一个对象,则必须知道它的标识和名称n 会产生连锁反应,如果一个对象的标识发生改变,那么必须修改所有显式调用它的其它对象,并消除由此引发的副作用3.5 事件驱动体系结构风格o 事件驱动就是在当前系统的基础之上,根据事件声明和发展状况来驱动整个应用程序运行o 系统对外部的行为表现可以通过它对事件的处理来实现o

9、 构件不再直接调用过程,而是声明事件o 系统其它构件的过程可以在这些事件中进行注册,当触发一个事件时,系统会自动调用在这个事件中注册的所有过程3.5 事件驱动体系结构风格o 事件驱动系统的构件提供了一个过程集合和一组事件o 过程可以使用显示方法进行调用,同时,也可以由构件在系统事件中注册o 在消息机制的控制下,系统作为一个整体与外界环境进行交互o 事件驱动体系结构风格具有以下优点:3.5 事件驱动体系结构风格n 事件声明者不需要知道哪些构件会响应事件,因此,不能确定构件处理的先后顺序,甚至不能确定事件会引发哪些过程调用n 提高了软件复用能力,只要在系统事件中注册构件的过程,就可以将该构件集成到

10、系统中n 便于系统升级,只要构件名和事件中所注册的过程名保持不变,原有构件就可以被新构件所替代o 事件驱动体系结构风格也存在着一些问题:3.5 事件驱动体系结构风格n 构件放弃了对计算的控制权,完全由系统来决定,当构件触发一个事件时,它不知道其余构件是如何对其进行处理的n 存在数据传输问题,数据可以通过事件来进行传输,但是,在大多数情况下,系统本身需要维护一定的存储空间,这将对系统的逻辑功能和资源管理有一定影响3.6 分层体系结构风格o 在分层风格中,系统将划分为一个层次结构o 每一层都具有高度的内聚性,包含抽象程度一致的各种构件,支持信息隐藏o 分层有助于将复杂系统划分为独立的模块,从而简化

11、程序的设计和实现o 通过分解,可以将系统功能划分为一些具有明确定义的层,较高层是面向特定应用问题的,较低层更具有一般性3.6 分层体系结构风格o 每层都为上层提供服务,同时又利用了下层的逻辑功能o 每层只对相邻层可见,层次之间的连接件是协议和过程调用,用以实现各层之间的交互o 上层通过下层提供的接口来使用下层的功能,而下层却不能使用上层的功能o 良好的层次结构将有助于对逻辑功能实施灵活的增加、删除和修改3.6 分层体系结构风格o 利用接口,可以将下层实现细节隐藏起来,从而有助于抽象设计,形成松散耦合的结构模型3.6 分层体系结构风格o 分层体系结构风格具有以下优点:n 设计者可以将系统分解为一

12、个增量的步骤序列,从而完成复杂的业务逻辑n 每一层至多和相邻的上下两层进行交互,每一层的功能变化最多只影响相邻两层,便于实现系统功能的扩展n 只要给相邻层提供相同的接口,就可以使用不同的方法来实现每一层,支持软件资源的复用o 分层体系结构风格也存在着一些问题:3.6 分层体系结构风格n 并非所有系统都能够按照层次来进行划分,即使一个系统的逻辑结构是层次化的,但是出于对系统性能的考虑,需要把不同抽象程度的功能合并到一层,破坏了逻辑独立性n 很难找到一种合适和正确的层次划分方法,其应用范围受到限制n 在传输数据时,需要经过多个层次,导致了系统性能下降n 多层结构难以调试,往往需要通过一系列的跨层次

13、调用来实现3.6 分层体系结构风格o 分层体系结构应用实例:n 开放系统互联国际标准组织(Open Systems Interconnection-International Standards Organization,OSI-ISO)所指定的分层通信协议、计算机网络协议TCP/IP、操作系统和数据库系统n 引文管理系统是采用分层体系结构来进行设计的o 主要包括3种类型的构件:用户界面构件、引文格式化构件以及引文存储和检索构件3.7 C2体系结构风格o C2结构是一个层次网络,包括构件和连接件两种软件元素o 构件和连接件都是包含顶部和底部的软件元素o 构件与构件之间只能通过连接件进行连接,连

14、接件之间则可以直接进行连接o 构件的顶部、底部分别与连接件的底部、顶部相连,连接件的顶部、底部也分别与连接件的底部、顶部相连3.7 C2体系结构风格o 构件之间的所有通讯必须使用消息传递机制来实现,构件之间所传递的消息可以分为两种:n 一种是向上层构件发出服务请求的请求消息,一种是向下层构件发送指示状态变化的通知消息o 连接件负责消息的过滤、路由、广播、通信和相关处理o 构件只能使用其上层构件所提供的服务,而不能感知下层构件的存在3.7 C2体系结构风格o 上下层的含义与一般情况相反,最下层构件是用户界面和IO设备,上层构件则是比较低级的逻辑操作3.7 C2体系结构风格o C2体系结构风格具有

15、以下优点:n 可以使用任何编程语言来开发构件,构件重用和替换比较容易实现n 具有一定的扩展能力,可以有多种不同粒度的构件,构件之间相对独立,且依赖性较小,构件可以在分布式和异构坏境中运行,利用构件来实现应用需求,对任意复杂的逻辑功能进行封装n 构件不需要共享地址空间,避免了共享全局变量所造成的复杂关系,构件可以有自己的控制线程,即构件可以是多线程的3.7 C2体系结构风格n 具有良好的适应性,可以实现多个用户和多个系统之间的交互,能够同时激活多个对话并使用不同的形式来进行表示n 可以使用多个工具集和多种媒体类型,能够动态地更新系统的框架结构o 在构件和连接件之间,存在着以下关系:n 构件顶部与

16、连接件底部相连,构件底部与连接件顶部相连,构件与构件之间不允许直接相连n 与某一个连接件相关联的构件和连接件的数目没有限制3.8 数据共享体系结构风格o 数据共享风格也称为仓库风格,有两种不同类型的软件元素:n 一种是中央数据单元,也称为资源库,用于表示系统的当前状态,另一种是相互依赖的构件组o 中央数据单元和构件之间可以进行信息交换,这是数据共享体系结构的技术实现基础o 根据所使用的控制策略不同,数据共享体系结构可以分为两种类型:n 一种是传统的数据库,另一种是黑板3.8 数据共享体系结构风格o 如果由输入流中的事件来驱动系统进行信息处理,把执行结果存储到中央数据单元中,则这个系统就是数据库

17、应用系统o 如果由中央数据单元的当前状态来驱动系统运行,则这个系统就是黑板应用系统o 黑板是数据共享体系结构的一个特例,用以解决状态冲突并处理可能存在的不确定性知识源3.8 数据共享体系结构风格o 黑板经常被用于信号处理,例如:语音和模式识别,同时,在自然语言处理领域中也有广泛的应用,诸如:机器翻译和句法分析3.8 数据共享体系结构风格o 黑板系统主要包括3部分:n 知识源是主要的信息来源,知识源在逻辑上和物理上都是独立的,知识源只与产生它们的应用有关,通过中央数据单元,多个知识源相互配合,完成相关业务逻辑,这一过程对外部环境是透明的n 中央数据单元,黑板系统的运行完全依赖于中央数据单元的状态

18、变化,中央数据单元是整个系统的核心部分,反映了业务逻辑的求解状态,在多个知识源之间,中央数据单元起到了通信机制的作用3.8 数据共享体系结构风格n 控制单元是由中央数据单元的状态来驱动的,知识源的执行导致了中央数据单元的状态发生变化,控制单元根据预先定义的策略,启动相应的知识源,以完成系统的控制任务o 黑板体系结构有以下优点:n 便于多客户共享大量数据,而不必关心数据是何时产生的、由谁提供的以及通过何种途径来提供n 便于将构件作为知识源添加到系统中来3.8 数据共享体系结构风格o 黑板体系结构风格也存在着一些问题:n 对共享数据结构,不同知识源要达成一致,因为要考虑各个知识源的调用问题,这会使

19、得共享数据结构的修改变得非常困难n 需要同步机制和加锁机制来保证数据的完整性和一致性,增大了系统设计的复杂度3.9 解释器体系结构风格o 解释器作为一种体系结构,主要用于构建虚拟机,以弥合程序语义和计算机硬件之间的间隙o 解释器是利用软件来创建的一种虚拟机,因此,解释器风格又被称为虚拟机风格o 程序的逻辑功能很复杂,用户需要采用复杂的方式来进行操作,一个较好的解决方案是提供面向领域的虚拟机语言3.9 解释器体系结构风格o 解释器体系结构具有以下优点:n 能够提高应用程序的移植能力和编程语言的跨平台移植能力n 实际测试工作可能非常复杂,测试代价极其昂贵,具有一定的风险性,可以利用解释器对未实现的

20、硬件进行仿真o 解释器体系结构风格也存在着一些问题:n 由于使用了特定语言和自定义操作规则,因此增加了系统运行的开销n 解释器系统难以设计和测试3.9 解释器体系结构风格o 解释器体系结构有许多现实应用,可以将其作为整个软件系统的一个组成部分,以下是一些具体的应用实例:n Java和Smalltalk的编译器n 基于规则的系统,诸如:专家系统领域中的Prolog语言n 脚本语言,例如:Awk和Perl3.10 反馈控制环体系结构风格o 反馈控制环是一种特定的数据流结构,传统数据流结构是线性的,控制连续循环过程的体系结构应该是环形的o 在反馈控制环系统中,主要包括以下3个部分:n 过程,指操纵过

21、程变量的相关机制n 数据元素,指连续更新的过程变量,包括:输入变量、控制变量、操纵变量和相关参考值3.10 反馈控制环体系结构风格n 控制器,通过控制规则来修正变量,收集过程的实际状态和目标状态,调节变量以驱动实际状态朝目标状态前进o 反馈控制环结构能够处理复杂的自适应问题,机器学习就是一个典型的实例3.10 反馈控制环体系结构风格o 将训练样本输入到学习构件中,作为被查询的基本数据和知识源o 然后输入真实数据,经过学习构件的分析和计算,输出学习结果o 检测构件要检查学习结果与预期结果之间的差异,并反馈给学习构件3.11 客户机/服务器体系结构风格o 在集中计算时代,主要采用大型机/小型机模型

22、,在这种模型中,通过与宿主机相连的非智能终端来实现宿主机程序的逻辑功能o 个人计算机和工作站的采用,改变了这种协作计算模式,导致了分散计算模型的出现o 分散计算模型的主要优点是:用户可以选择适合自己的工作站、操作系统和应用程序,在这一时期,集中计算模式逐渐被以PC机为主的网络计算模式所取代3.11 客户机/服务器体系结构风格o 客户机/服务器(Client/Server,C/S)是20世纪90年代开始成熟的一项技术,主要针对资源不对等问题而提出的一种共享策略o 客户机/服务器是两个相互独立的逻辑系统,为了完成特定任务,它们形成了一种协作关系o 在C/S体系结构中,主要包括三个部分:服务器、客户

23、机和网络3.11 客户机/服务器体系结构风格o 客户机向服务器发送操作请求,期待服务器的响应o 二者之间具有一定的连接机制,遵循公共的通信协议,都需要处理请求表达、返回结果表示、连接关系和状态表达等一系列问题3.11 客户机/服务器体系结构风格o 数据和业务处理分布在一定范围内的多个构件上,包括客户机程序中的构件和服务器程序中的构件,构件与构件之间是通过网络进行连接的o 定义了工作站与服务器的连接方法,从而使数据存储和逻辑计算可以分布到物理上的多个处理器上o 服务器负责存储和管理数据信息,客户机负责数据显示、用户交互以及对业务逻辑的处理3.11 客户机/服务器体系结构风格o C/S系统可以分为

24、前台客户机程序和后台服务器程序两部分o 服务器程序负责管理客户机程序的数据,而客户机程序负责完成与用户之间的交互,发送请求消息,接收和分析从服务器返回的数据o 客户机程序是表示层,包括用户界面和业务处理程序o 服务器程序是数据层,包括中心数据库、数据查询程序、数据存储程序和数据更新程序3.11 客户机/服务器体系结构风格3.11 客户机/服务器体系结构风格o 服务器程序负责管理系统资源,包括:管理数据库的安全性、控制数据库访问的并发性、定义全局数据完整性规则以及备份恢复数据库o 服务器永远处于激活状态,监听用户请求,为客户提供服务操作o 客户机程序的主要任务包括:提供用户与数据库交互的界面、向

25、服务器提交用户请求、接收来自服务器的信息以及对客户机数据执行业务逻辑操作3.11 客户机/服务器体系结构风格o 网络通信软件的主要功能是完成服务器程序和客户机程序之间的数据传输o 在代理风格中,服务器将其服务和数据发布到代理服务器上,客户机通过代理服务器来访问服务,提高了系统的安全性3.11 客户机/服务器体系结构风格o C/S体系结构具有以下优点:n 客户机构件和服务器构件分别运行在不同的计算机上,有利于分布式数据的组织和处理n 构件之间的位置是相互透明的,客户机程序和服务器程序都不必考虑对方的实际存储位置n 客户机侧重数据的显示和分析,服务器则注重数据的管理,因此,客户机程序和服务器程序可

26、以运行在不同的操作系统上,便于实现异构环境和多种不同开发技术的融合3.11 客户机/服务器体系结构风格n 构件之间是彼此独立和充分隔离的,这使得软件环境和硬件环境的配置具有极大的灵活性,易于系统功能的扩展n 将大规模的业务逻辑分布到多个通过网络连接的低成本的计算机上,降低了系统的整体开销o C/S体系结构也逐渐暴露出一些问题:n 开发成本较高,客户机的软件配置和硬件配置的要求比较高,随着软件版本的升级,对硬件性能的要求也越来越高,从而增加了系统成本,使客户机变得臃肿3.11 客户机/服务器体系结构风格n 在开发C/S结构系统时,大部分工作都集中在客户机程序的设计上,增加了设计的复杂度,客户机负

27、荷太重,难以应对客户端的大量业务处理,降低了系统性能n 信息内容和形式单一,传统应用一般都是事务处理型,界面基本上遵循数据库的字段解释,在开发之初就已经确定,用户无法及时获取办公信息和文档信息,只能获得单纯的字符和数字,非常枯燥和死板3.11 客户机/服务器体系结构风格n 如果对C/S体系结构的系统进行升级,开发人员需要到现场来更新客户机程序,同时需要对运行环境进行重新配置,增加了维护费用n 两层C/S结构采用了单一的服务器,同时以局域网为中心,因此难以扩展到Intranet和Internetn 数据安全性不高,客户机程序可以直接访问数据库服务器,因此,客户机上的其它恶意性程序也有可能访问到数

28、据库,无法保证中心数据库的安全3.11 客户机/服务器体系结构风格o 为了克服两层C/S结构的缺点,可以将客户机和服务器中的部分业务逻辑抽取出来,形成功能层,放在应用服务器上,这就是所谓的三层C/S体系结构o 三层C/S结构包括:客户机、应用服务器和数据库服务器三个部分3.11 客户机/服务器体系结构风格3.11 客户机/服务器体系结构风格o 在三层C/S结构中,针对一类应用问题建立了中间层,即功能层,配置在应用服务器上o 应用服务器负责处理客户机与数据库服务器之间的交互,而不是直接让客户机与中心数据库相连,因此减少了同数据库服务器相连的客户机的数目,提高了系统安全性o 由于将数据存取构件放在

29、应用服务器上,客户机只存放系统的表示层,因此,客户机程序不必关心数据的操作细节,便于实现软件的安装与维护3.11 客户机/服务器体系结构风格o 在三层C/S体系结构中,通过增加应用服务器,在不增加数据库服务器负担的情况下,使客户机变“瘦”,这种风格又被称为“瘦客户机”C/S结构o 在三层C/S结构中,减小了数据库服务器的工作量,应用服务器可以建立数据备份,因此,提高了系统的可靠性o 在三层C/S结构的软件系统中,可以将业务逻辑划分为表示层、功能层和数据层3个部分3.11 客户机/服务器体系结构风格3.11 客户机/服务器体系结构风格o 表示层,是系统和用户之间的接口,实现用户与系统之间的对话功

30、能,用于检查从键盘和鼠标等设备输入的数据,显示输出结果o 功能层,负责处理所有的业务逻辑o 数据层就是数据库管理系统,负责读写数据,数据库管理系统必须能够迅速地执行大量数据的更新和检索操作o 在开发三层C/S结构的应用系统时,需要对这三层的功能进行明确地划分,使之在逻辑上相互独立3.11 客户机/服务器体系结构风格o 设计过程中的难点是:如何从两层C/S结构的表示层和数据层中分离各自的应用程序,同时使层次之间的接口简单明了o 在实现三层C/S体系结构时,通常可以采用中间件技术o 中间件是一个用API定义的软件层,是一种具有强大通信能力和良好扩展能力的分布式软件管理框架3.11 客户机/服务器体

31、系结构风格o 在客户机和服务器以及服务器和服务器之间,使用中间件来传送数据,完成客户机群和服务器群之间的通信任务o 在配置三层C/S结构的系统时,通常有多种不同的选择方案n 将表示层放在客户机上,功能层和数据层都放在同一个服务器上,与两层C/S结构相比,虽然提高了程序的可维护性,但两层C/S结构的缺陷并未得到完全解决3.11 客户机/服务器体系结构风格n 由于三层分别放在不同的计算结点上,因此提高了系统的灵活性,能够适应客户机数目和处理负荷的变动,但是,在这种情况下,服务器之间要进行数据传送,增加了系统开销3.11 客户机/服务器体系结构风格n 如果将表示层和功能层都放在客户机上,其配置方案如

32、下所示,在这种情况下,客户机的工作负担很重,类似于两层C/S结构3.11 客户机/服务器体系结构风格n 如果将表示层和功能层都放在客户机上,其配置方案如下所示,在这种情况下,客户机的工作负担很重,类似于两层C/S结构3.11 客户机/服务器体系结构风格o 与两层C/S结构相比,三层C/S体系结构具有以下优点:n 如果合理地划分三层结构的功能,可以使系统的逻辑结构更加清晰,提高了软件的可维护性和可扩充性n 在实现三层C/S结构时,可以更有效地选择运行平台和硬件环境,从而使每一层都具有清晰的逻辑结构、良好的负荷处理能力和较好的开放性,清晰和合理地划分三层C/S结构,使各层之间保持相互独立,可以降低

33、每一层应用的修改难度3.11 客户机/服务器体系结构风格n 在三层C/S结构中,可以分别选择合适的编程语言来并行地开发每一层的逻辑功能,以提高开发效率,同时,每一层的维护也更加容易n 系统具有较高的安全性,可以充分利用功能层来将数据层和表示层分隔开来,使未授权用户难以绕过功能层,无法利用数据库工具和黑客手段来非法访问数据层,从而保证了中心数据库的安全性,整个系统也更加便于控制,管理层次也更加合理3.11 客户机/服务器体系结构风格o 在实现三层C/S结构时,需要注意以下几个问题:n 如果各层之间的通信效率不高,即使每一层的硬件配置都很高,系统的整体性能也不会太高n 必须慎重考虑三层之间的通信方

34、法、通信频率和传输数据量,这和提高各层的独立性一样也是实现三层C/S结构的关键性问题3.12 浏览器/服务器体系结构风格o 浏览器/服务器(Browser/Server,B/S),是三层C/S体系结构的一种实现方式,主要包括:浏览器、Web服务器和数据库服务器o B/S结构主要利用了不断成熟的WWW技术,结合浏览器的多脚本语言,采用通用浏览器来实现原来需要复杂的专用软件才能实现的强大功能,节约了开发成本o 与三层C/S结构的解决方案相比,B/S体系结构在客户机上采用了WWW浏览器,将Web服务器作为应用服务器3.12 浏览器/服务器体系结构风格o B/S体系结构的核心是Web服务器,可以将应用

35、程序以网页的形式存放在Web服务器上3.12 浏览器/服务器体系结构风格o 当用户运行某个应用程序时,只需要在客户端的浏览器中键入相应的URL,向Web服务器提出HTTP请求o 当Web服务器接收HTTP请求之后,会调用相关的应用程序,同时向数据库服务器发送数据操作请求o 数据库服务器对数据操作请求进行响应,将结果返回给Web服务器的应用程序3.12 浏览器/服务器体系结构风格o Web服务器应用程序执行业务处理逻辑,利用HTML来封装操作结果,通过浏览器呈现给用户o 在B/S结构中,数据请求、网页生成、数据库访问和应用程序执行全部由Web服务器来完成o 在B/S结构中,系统的安装、修改和维护

36、都在Web服务器和数据库服务器上进行3.12 浏览器/服务器体系结构风格o 在使用系统时,用户仅使用一个浏览器就可以运行全部的应用程序,真正实现了“零客户端”的运作模式o 在系统运行期间,可以对浏览器进行自动升级,B/S结构为异构机、异构网和异构应用服务的集成提供了有效的框架基础o B/S体系结构具有以下优点:n 客户端只需要安装浏览器,操作简单,能够发布动态信息和静态信息3.12 浏览器/服务器体系结构风格n 运用HTTP标准协议和统一客户端软件,能够实现跨平台通信n 开发成本比较低,只需要维护Web服务器程序和中心数据库,客户端升级可以通过升级浏览器来实现,使所有用户同步更新o B/S体系

37、结构风格也存在着一些问题:n 个性化程度比较低,所有客户端程序的功能都是一样的3.12 浏览器/服务器体系结构风格n 客户端数据处理能力比较差,加重了Web服务器的工作负担,影响系统的整体性能n 在B/S结构的系统中,数据提交一般以页面为单位,动态交互性不强,不利于在线事务处理(Online Transaction Processing,OLTP)n B/S体系结构的可扩展性比较差,系统安全性难以保障n B/S结构的应用系统查询中心数据库,其速度要远低于C/S体系结构3.13 公共对象请求代理体系结构风格o 在异构分布式环境下,可以利用CORBA来实现应用程序之间的交互操作o CORBA规范主

38、要包括:n 对象请求代理ORB、对象适配器(Object Adapter,OA)、接口定义语言IDL、接口存储(Interface Repository,IR)和ORB内部的相关协议o CORBA体系结构的核心是ORB,ORB作为“软件总线”用来连接网络上的不同应用对象3.13 公共对象请求代理体系结构风格o ORB的任务是定位服务器,通过对象适配器OA将操作请求传送给相应的服务器o OA位于ORB和对象之间,屏蔽了ORB内部的实现细节,为服务器对象提供了抽象接口n 其功能包括:登录服务器、注册对象、创建对象、激活对象、分发客户请求和认证客户请求o CORBA提供了透明访问对象的相关方法,能够

39、屏蔽实现方式、对象状态、通信机制和开发技术之间的差异3.13 公共对象请求代理体系结构风格3.13 公共对象请求代理体系结构风格o 在客户端,ORB定义了一个动态调用接口(Dynamic Invocation Interface,DII),以API的形式出现,用来发送操作请求,提供了动态调用方法o 在服务器端,OA利用动态框架接口(Dynamic Skeleton Interface,DSI)来传输操作请求,提供了动态实现方法o 接口定义语言(Interface Definition Language,IDL)用来定义客户端和服务器之间的静态接口3.13 公共对象请求代理体系结构风格o IDL

40、不是编程语言,它是CORBA规范的一种中性定义语言,用于描述对象接口o 客户端与ORB之间的静态接口,被称为静态调用接口(Static Invocation Interface,SII)o 服务器与ORB之间的静态接口,被称为静态框架接口(Static Skeleton Interface,SSI)3.13 公共对象请求代理体系结构风格o CORBA规范包含了ORB的内部协议,即Internet ORB内部协议(Internet Inter-ORB Protocol,IIOP),用以描述IDL类型的在线表示方法和协议数据单元o IIOP使用TCP/IP来传输ORB之间的操作请求和相关参数3.1

41、3 公共对象请求代理体系结构风格o IR包含了运行时所需要的IDL规范,定义了基本类型映射机制o IMR存储服务器的详细信息o CORBA体系结构风格具有以下优点:n 实现了客户端程序与服务器程序的分离,客户不再直接与服务器发生联系,而仅需要和ORB进行通信,客户端和服务器之间的关系更加灵活n 将分布式计算模式与面向对象技术结合起来,提高了软件复用效率3.13 公共对象请求代理体系结构风格n 提供了软件总线机制,软件总线是指一组定义完整的接口规范,应用程序、软件构件和相关工具只要具有与接口规范相符的接口定义,就能集成到应用系统中,这个接口规范是独立于编程语言和开发环境的n CORBA能够支持不

42、同的编程语言和操作系统,在更大的范围内,开发人员能够相互利用已有的开发成果3.14 正交体系结构风格o 正交体系结构是一种以垂直线索构件族为基础的层次化结构,包括组织层和线索o 在每一个组织层中,都包含具有相同抽象级别的构件o 线索是子系统的实例,是由完成不同层次功能的构件通过相互调用而形成的,每一条线索完成系统的一部分相对独立的功能o 在正交体系结构中,每条线索的实现与其它线索的实现无关或关联很少,在同一层次中,构件之间不存在相互调用关系3.14 正交体系结构风格o 正交体系结构的基本思想是:n 按照功能的正交相关性,将系统垂直地划分为若干个子系统,每个子系统用一条线索来实现n 每条线索由多

43、个具有不同层次功能和抽象级别的构件组成o 如果线索之间是相互独立的,即不同线索中的构件不存在调用关系,那么这种结构就是完全正交体系结构o 在同一层次上,各个线索的构件具有相同的抽象级别3.14 正交体系结构风格o 在正交体系结构中,有一个公共的顶层,用于触发各条线索运行,还有一个公共的底层,包含了各条线索需要的数据3.14 正交体系结构风格o 正交体系结构具有以下特征:n 正交体系结构由完成不同功能的n(n1)个线索(子系统)组成n 线索之间是相互独立的,系统的某一变动仅涉及一条线索,而不会影响到其它线索n 系统具有m(m1)个不同抽象级别的层次n 具有一个驱动线索运行的公共顶层和一个存储共享

44、数据的公共底层o 正交体系结构具有以下优点:3.14 正交体系结构风格n 结构清晰,线索与线索之间是独立的,不进行相互调用,构件的位置可以清楚地说明它所实现的抽象层次和担负的功能n 便于修改和维护,因为线索之间是相互独立的,因此,某一条线索的修改不会影响到其它线索,当需求发生变动时,可以将新需求分解为独立的子需求,然后使用线索和构件来实现每一个子需求n 易于重用,在同一应用领域中,不同软件系统往往具有相同的层次和线索,因此,可以共享同一个框架结构3.15 基于层次消息总线的体系结构风格o 层次消息总线的理论基础是消息驱动的编程方法和计算机硬件总线概念o 计算机硬件总线的概念为层次消息总线体系结

45、构的设计提供了很好的借鉴和启示o 构件之间是通过消息总线来进行通信的,可以支持构件的分布式存储和并发运行o 消息总线是系统的连接件,负责消息的分派、传递和过滤,并返回处理结果3.15 基于层次消息总线的体系结构风格o 构件挂接在消息总线上,向总线登记自己所感兴趣的消息类型o 在构件之间,消息是唯一的通信方式n 构件发出请求消息,然后总线把请求消息分派到系统中所有对此感兴趣的构件n 在接收到请求消息后,构件将根据自身状态对其进行响应,并通过总线返回处理结果o 由于构件是通过消息总线进行连接的,不要求各个构件具有相同的地址空间3.15 基于层次消息总线的体系结构风格o 复杂构件分解为粒度更细的子构

46、件,通过局部消息总线进行连接,从而形成复合构件o 如果子构件仍然比较复杂,则可以进一步分解,如此分解下去,系统将形成树状的拓扑结构o 叶结点是系统的原子构件,不再包含子构件o 原子构件的设计可以采用不同的软件体系结构风格3.15 基于层次消息总线的体系结构风格o 整个系统可以作为一个构件,通过更高层次的消息总线集成到更大的应用系统中o 在HMB体系结构中,主要包括构件和消息总线两种软件元素3.15 基于层次消息总线的体系结构风格nHMB构件主要包括接口部分、行为部分和结构部分:o 在接口部分,定义了构件与外界之间交互的信息和承担的责任,HMB构件的接口是一种基于消息的互连接口3.15 基于层次

47、消息总线的体系结构风格o 在行为部分,使用有限状态自动机来描述构件的功能,构件行为要同时受到外来消息和自身状态的影响o 结构部分描述了复合构件的拓扑结构,复合构件由简单的子构件组合而成,子构件通过复合构件内部的消息总线进行连接3.15 基于层次消息总线的体系结构风格n 消息总线:o 在HMB体系结构中,消息总线是连接件o 构件向消息总线登记自己感兴趣的消息,形成构件消息响应登记表o 消息总线根据接收到的消息,查阅构件消息响应登记表,确定能够响应该消息的构件,并将消息传递给该构件,同时,负责返回处理结果o 从逻辑上看,消息总线是一个整体,但是,从物理上讲,它可以跨越多个不同的机器o 挂接在消息总线上的构件可以分布在多个不同的机器上,并行运行3.15 基于层次消息总线的体系结构风格n 消息登记:在基于消息的系统中,构件需要向消息总线登记自己所感兴趣的消息,不关心该消息是由哪个构件发出的3.15 基于层次消息总线的体系结构风格n 消息分派和传递:消息总线负责在构件之间传递消息,根据构件消息响应登记表把消息分派给对其感兴趣的构件,并返回处理结果n 消息过滤:在不同的构件中,同一消息可能使用了不同的名字,不同的消息也可能使用了相同的名字,在构件集成时,需要对消息进行过滤n HMB体系结构风格支持运行时系统演化:3.15 基于层次消息总线的体系结

温馨提示

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

评论

0/150

提交评论