第三章软件体系结构风格课件

上传人:沈*** 文档编号:241654392 上传时间:2024-07-13 格式:PPT 页数:112 大小:1.46MB
返回 下载 相关 举报
第三章软件体系结构风格课件_第1页
第1页 / 共112页
第三章软件体系结构风格课件_第2页
第2页 / 共112页
第三章软件体系结构风格课件_第3页
第3页 / 共112页
点击查看更多>>
资源描述
第三章 软件体系结构风格本章内容o3.1 软件体系结构风格概述o3.2 常用的软件体系结构风格o3.3 管道/过滤器体系结构风格o3.4 面向对象体系结构风格o3.5 事件驱动体系结构风格o3.6 分层体系结构风格o3.7 C2体系结构风格o3.8 数据共享体系结构风格本章内容o3.9 解释器体系结构风格o3.10 反馈控制环体系结构风格o3.11 客户机/服务器体系结构风格o3.12 浏览器/服务器体系结构风格o3.13 公共对象请求代理体系结构风格o3.14 正交体系结构风格o3.15 基于层次消息总线的体系结构风格o3.16 MVC体系结构风格o3.17 异构体系结构集成3.1 软件体系结构风格概述o软件体系结构表示系统的框架结构,用于从较高的层次上来描述各部分之间的关系和接口,主要包括:构件、构件性质和构件之间的关系o软件框架设计的核心问题是:能否复用已经成型的体系结构方案o不同系统的设计方案存在着许多共性问题,把这些共性部分抽取出来,就形成了具有代表性的和可广泛接受的体系结构风格3.1 软件体系结构风格概述o软件体系结构风格也称为软件体系结构惯用模式,是指不同系统所拥有的共同组织结构和语义特征o软件体系结构是构件和连接件之间相互作用的形式化说明,用以指导将多个模块组织成一个完整的应用程序o软件体系结构风格定义了用于系统描述的术语表和一组用于指导系统构建的规则3.1 软件体系结构风格概述o软件体系结构风格包括构件、连接件和一组将它们结合在一起的约束限制,诸如:拓扑限制和语义限制等o对于高质量的软件产品而言,首先要为其选择合适的体系结构风格,这样就能够更好地重用已有的设计方案和实现方案o利用软件体系结构风格中的不变部分,可以使系统大粒度地重用已有的实现代码3.2 常用的软件体系结构风格o数据流风格:批处理和管道/过滤器o调用/返回风格:主程序/子程序、层次结构和客户机/服务器o面向对象风格o独立部件风格:进程通讯和事件驱动o虚拟机风格:解释器和基于规则的系统o数据共享风格:数据库系统和黑板系统3.3 管道/过滤器体系结构风格o管道/过滤器结构主要包括过滤器和管道两种元素o构件被称为过滤器,负责对数据进行加工处理o每个过滤器都有一组输入端口和输出端口,从输入端口接收数据,经过内部加工处理之后,传送到输出端口上o数据通过相邻过滤器之间的连接件进行传输,连接件可以看作输入数据流和输出数据流之间的通路,这就是所谓的管道3.3 管道/过滤器体系结构风格o管道/过滤器结构将数据流处理分为几个顺序的步骤来进行,一个步骤的输出是下一个步骤的输入,每个处理步骤由一个过滤器来实现o每个过滤器独立完成自己的任务,不同过滤器之间不需要进行交互o在管道/过滤器结构中,数据输出的最终结果与各个过滤器执行的顺序无关3.3 管道/过滤器体系结构风格o每个过滤器都是一个独立的个体元素,各个过滤器的状态互不相关,非邻近过滤器不共享任何信息o运行结果的正确性与各个过滤器运行的先后顺序无关3.3 管道/过滤器体系结构风格o管道/过滤器风格具有以下优点:n简单性,允许将系统的输入和输出看作是各个过滤器行为的简单组合,独立的过滤器能够减小构件之间的耦合程度n系统具有可扩展性和可进化性,各个过滤器是相互独立的,因此可以很容易地将新过滤器添加到现有的系统之中,以扩展系统的业务处理能力,原有过滤器可以很方便地被改进的过滤器所替代3.3 管道/过滤器体系结构风格n支持复用,如果一个过滤器的输出数据格式与另一个过滤器的输入数据格式是一致的,就可以将这两个过滤器连接在一起n系统并发性,各个过滤器能够独立运行,因此,不同子任务可以并行执行,提高了系统运行效率n便于系统分析,由于系统是独立构件的组合,具有清晰的拓扑结构,因而有利于对数据吞吐量、死锁和计算准确性进行分析3.3 管道/过滤器体系结构风格o管道/过滤器风格也存在着一定的问题:n系统处理过程是批处理方式,过滤器具有很强的独立性,对于每一个过滤器,设计者必须考虑从输入到输出的转换过程,这种方式会造成过滤器对输入数据的批量转换处理n不适合用来设计交互式应用系统n由于没有通用的数据传输标准,因此每个过滤器都需要解析输入数据和合成数据,添加和去除标记需要花费一定的时间,从而导致了系统性能下降,增加了过滤器设计的复杂性3.3 管道/过滤器体系结构风格n难以进行错误处理,管道/过滤器结构的固有特性,决定了很难制定错误处理的一般性策略o传统的编译器是管道/过滤器体系结构风格的一个实例3.4 面向对象体系结构风格o在这种体系结构中,数据表示和相关原语操作都被封装在抽象数据类型中o对象是构件,也称为抽象数据类型的实例o对象是一种被称为管理器的构件,负责保持资源的完整性o在对象和对象之间,通过函数调用和过程调用来进行交互3.4 面向对象体系结构风格o面向对象风格具有以下优点:n一个对象对外界隐藏了自己的详细信息,改变一个对象的表示,不会影响系统的其它部分n继承和封装方法为对象复用提供了技术支持3.4 面向对象体系结构风格n对象将数据和操作封装在一起,提高了系统内聚性,减小了模块之间的耦合程度,使系统更容易分解为既相互作用又相互独立的对象集合o面向对象体系结构风格也存在着一些问题:n如果一个对象要调用另一个对象,则必须知道它的标识和名称n会产生连锁反应,如果一个对象的标识发生改变,那么必须修改所有显式调用它的其它对象,并消除由此引发的副作用3.5 事件驱动体系结构风格o事件驱动就是在当前系统的基础之上,根据事件声明和发展状况来驱动整个应用程序运行o系统对外部的行为表现可以通过它对事件的处理来实现o构件不再直接调用过程,而是声明事件o系统其它构件的过程可以在这些事件中进行注册,当触发一个事件时,系统会自动调用在这个事件中注册的所有过程3.5 事件驱动体系结构风格o事件驱动系统的构件提供了一个过程集合和一组事件o过程可以使用显示方法进行调用,同时,也可以由构件在系统事件中注册o在消息机制的控制下,系统作为一个整体与外界环境进行交互o事件驱动体系结构风格具有以下优点:3.5 事件驱动体系结构风格n事件声明者不需要知道哪些构件会响应事件,因此,不能确定构件处理的先后顺序,甚至不能确定事件会引发哪些过程调用n提高了软件复用能力,只要在系统事件中注册构件的过程,就可以将该构件集成到系统中n便于系统升级,只要构件名和事件中所注册的过程名保持不变,原有构件就可以被新构件所替代o事件驱动体系结构风格也存在着一些问题:3.5 事件驱动体系结构风格n构件放弃了对计算的控制权,完全由系统来决定,当构件触发一个事件时,它不知道其余构件是如何对其进行处理的n存在数据传输问题,数据可以通过事件来进行传输,但是,在大多数情况下,系统本身需要维护一定的存储空间,这将对系统的逻辑功能和资源管理有一定影响3.6 分层体系结构风格o在分层风格中,系统将划分为一个层次结构o每一层都具有高度的内聚性,包含抽象程度一致的各种构件,支持信息隐藏o分层有助于将复杂系统划分为独立的模块,从而简化程序的设计和实现o通过分解,可以将系统功能划分为一些具有明确定义的层,较高层是面向特定应用问题的,较低层更具有一般性3.6 分层体系结构风格o每层都为上层提供服务,同时又利用了下层的逻辑功能o每层只对相邻层可见,层次之间的连接件是协议和过程调用,用以实现各层之间的交互o上层通过下层提供的接口来使用下层的功能,而下层却不能使用上层的功能o良好的层次结构将有助于对逻辑功能实施灵活的增加、删除和修改3.6 分层体系结构风格o利用接口,可以将下层实现细节隐藏起来,从而有助于抽象设计,形成松散耦合的结构模型3.6 分层体系结构风格o分层体系结构风格具有以下优点:n设计者可以将系统分解为一个增量的步骤序列,从而完成复杂的业务逻辑n每一层至多和相邻的上下两层进行交互,每一层的功能变化最多只影响相邻两层,便于实现系统功能的扩展n只要给相邻层提供相同的接口,就可以使用不同的方法来实现每一层,支持软件资源的复用o分层体系结构风格也存在着一些问题:3.6 分层体系结构风格n并非所有系统都能够按照层次来进行划分,即使一个系统的逻辑结构是层次化的,但是出于对系统性能的考虑,需要把不同抽象程度的功能合并到一层,破坏了逻辑独立性n很难找到一种合适和正确的层次划分方法,其应用范围受到限制n在传输数据时,需要经过多个层次,导致了系统性能下降n多层结构难以调试,往往需要通过一系列的跨层次调用来实现3.6 分层体系结构风格o分层体系结构应用实例:n开放系统互联国际标准组织(Open Systems Interconnection-International Standards Organization,OSI-ISO)所指定的分层通信协议、计算机网络协议TCP/IP、操作系统和数据库系统n引文管理系统是采用分层体系结构来进行设计的o主要包括3种类型的构件:用户界面构件、引文格式化构件以及引文存储和检索构件3.7 C2体系结构风格oC2结构是一个层次网络,包括构件和连接件两种软件元素o构件和连接件都是包含顶部和底部的软件元素o构件与构件之间只能通过连接件进行连接,连接件之间则可以直接进行连接o构件的顶部、底部分别与连接件的底部、顶部相连,连接件的顶部、底部也分别与连接件的底部、顶部相连3.7 C2体系结构风格o构件之间的所有通讯必须使用消息传递机制来实现,构件之间所传递的消息可以分为两种:n一种是向上层构件发出服务请求的请求消息,一种是向下层构件发送指示状态变化的通知消息o连接件负责消息的过滤、路由、广播、通信和相关处理o构件只能使用其上层构件所提供的服务,而不能感知下层构件的存在3.7 C2体系结构风格o上下层的含义与一般情况相反,最下层构件是用户界面和IO设备,上层构件则是比较低级的逻辑操作3.7 C2体系结构风格oC2体系结构风格具有以下优点:n可以使用任何编程语言来开发构件,构件重用和替换比较容易实现n具有一定的扩展能力,可以有多种不同粒度的构件,构件之间相对独立,且依赖性较小,构件可以在分布式和异构坏境中运行,利用构件来实现应用需求,对任意复杂的逻辑功能进行封装n构件不需要共享地址空间,避免了共享全局变量所造成的复杂关系,构件可以有自己的控制线程,即构件可以是多线程的3.7 C2体系结构风格n具有良好的适应性,可以实现多个用户和多个系统之间的交互,能够同时激活多个对话并使用不同的形式来进行表示n可以使用多个工具集和多种媒体类型,能够动态地更新系统的框架结构o在构件和连接件之间,存在着以下关系:n构件顶部与连接件底部相连,构件底部与连接件顶部相连,构件与构件之间不允许直接相连n与某一个连接件相关联的构件和连接件的数目没有限制3.8 数据共享体系结构风格o数据共享风格也称为仓库风格,有两种不同类型的软件元素:n一种是中央数据单元,也称为资源库,用于表示系统的当前状态,另一种是相互依赖的构件组o中央数据单元和构件之间可以进行信息交换,这是数据共享体系结构的技术实现基础o根据所使用的控制策略不同,数据共享体系结构可以分为两种类型:n一种是传统的数据库,另一种是黑板3.8 数据共享体系结构风格o如果由输入流中的事件来驱动系统进行信息处理,把执行结果存储到中央数据单元中,则这个系统就是数据库应用系统o如果由中央数据单元的当前状态来驱动系统运行,则这个系统就是黑板应用系统o黑板是数据共享体系结构的一个特例,用以解决状态冲突并处理可能存在的不确定性知识源3.8 数据共享体系结构风格o黑板经常被用于信号处理,例如:语音和模式识别,同时,在自然语言处理领域中也有广泛的应用,诸如:机器翻译和句法分析3.8 数据共享体系结构风格o黑板系统主要包括3部分:n知识源是主要的信息来源,知识源在逻辑上和物理上都是独立的,知识源只与产生它们的应用有关,通过中央数据单元,多个知识源相互配合,完成相关业务逻辑,这一过程对外部环境是透明的n中央数据单元,黑板系统的运行完全依赖于中央数据单元的状态变化,中央数据单元是整个系统的核心部分,反映了业务逻辑的求解状态,在多个知识源之间,中央数据单元起到了通信机制的作用3.8 数据共享体系结构风格n控制单元是由中央数据单元的状态来驱动的,知识源的执行导致了中央数据单元的状态发生变化,控制单元根据预先定义的策略,启动相应的知识源,以完成系统的控制任务o黑板体系结构有以下优点:n便于多客户共享大量数据,而不必关心数据是何时产生的、由谁提供的以及通过何种途径来提供n便于将构件作为知识源添加到系统中来3.8 数据共享体系结构风格o黑板体系结构风格也存在着一些问题:n对共享数据结构,不同知识源要达成一致,因为要考虑各个知识源的调用问题,这会使得共享数据结构的修改变得非常困难n需要同步机制和加锁机制来保证数据的完整性和一致性,增大了系统设计的复杂度3.9 解释器体系结构风格o解释器作为一种体系结构,主要用于构建虚拟机,以弥合程序语义和计算机硬件之间的间隙o解释器是利用软件来创建的一种虚拟机,因此,解释器风格又被称为虚拟机风格o程序的逻辑功能很复杂,用户需要采用复杂的方式来进行操作,一个较好的解决方案是提供面向领域的虚拟机语言3.9 解释器体系结构风格o解释器体系结构具有以下优点:n能够提高应用程序的移植能力和编程语言的跨平台移植能力n实际测试工作可能非常复杂,测试代价极其昂贵,具有一定的风险性,可以利用解释器对未实现的硬件进行仿真o解释器体系结构风格也存在着一些问题:n由于使用了特定语言和自定义操作规则,因此增加了系统运行的开销n解释器系统难以设计和测试3.9 解释器体系结构风格o解释器体系结构有许多现实应用,可以将其作为整个软件系统的一个组成部分,以下是一些具体的应用实例:nJava和Smalltalk的编译器n基于规则的系统,诸如:专家系统领域中的Prolog语言n脚本语言,例如:Awk和Perl3.10 反馈控制环体系结构风格o反馈控制环是一种特定的数据流结构,传统数据流结构是线性的,控制连续循环过程的体系结构应该是环形的o在反馈控制环系统中,主要包括以下3个部分:n过程,指操纵过程变量的相关机制n数据元素,指连续更新的过程变量,包括:输入变量、控制变量、操纵变量和相关参考值3.10 反馈控制环体系结构风格n控制器,通过控制规则来修正变量,收集过程的实际状态和目标状态,调节变量以驱动实际状态朝目标状态前进o反馈控制环结构能够处理复杂的自适应问题,机器学习就是一个典型的实例3.10 反馈控制环体系结构风格o将训练样本输入到学习构件中,作为被查询的基本数据和知识源o然后输入真实数据,经过学习构件的分析和计算,输出学习结果o检测构件要检查学习结果与预期结果之间的差异,并反馈给学习构件3.11 客户机/服务器体系结构风格o在集中计算时代,主要采用大型机/小型机模型,在这种模型中,通过与宿主机相连的非智能终端来实现宿主机程序的逻辑功能o个人计算机和工作站的采用,改变了这种协作计算模式,导致了分散计算模型的出现o分散计算模型的主要优点是:用户可以选择适合自己的工作站、操作系统和应用程序,在这一时期,集中计算模式逐渐被以PC机为主的网络计算模式所取代3.11 客户机/服务器体系结构风格o客户机/服务器(Client/Server,C/S)是20世纪90年代开始成熟的一项技术,主要针对资源不对等问题而提出的一种共享策略o客户机/服务器是两个相互独立的逻辑系统,为了完成特定任务,它们形成了一种协作关系o在C/S体系结构中,主要包括三个部分:服务器、客户机和网络3.11 客户机/服务器体系结构风格o客户机向服务器发送操作请求,期待服务器的响应o二者之间具有一定的连接机制,遵循公共的通信协议,都需要处理请求表达、返回结果表示、连接关系和状态表达等一系列问题3.11 客户机/服务器体系结构风格o数据和业务处理分布在一定范围内的多个构件上,包括客户机程序中的构件和服务器程序中的构件,构件与构件之间是通过网络进行连接的o定义了工作站与服务器的连接方法,从而使数据存储和逻辑计算可以分布到物理上的多个处理器上o服务器负责存储和管理数据信息,客户机负责数据显示、用户交互以及对业务逻辑的处理3.11 客户机/服务器体系结构风格oC/S系统可以分为前台客户机程序和后台服务器程序两部分o服务器程序负责管理客户机程序的数据,而客户机程序负责完成与用户之间的交互,发送请求消息,接收和分析从服务器返回的数据o客户机程序是表示层,包括用户界面和业务处理程序o服务器程序是数据层,包括中心数据库、数据查询程序、数据存储程序和数据更新程序3.11 客户机/服务器体系结构风格3.11 客户机/服务器体系结构风格o服务器程序负责管理系统资源,包括:管理数据库的安全性、控制数据库访问的并发性、定义全局数据完整性规则以及备份恢复数据库o服务器永远处于激活状态,监听用户请求,为客户提供服务操作o客户机程序的主要任务包括:提供用户与数据库交互的界面、向服务器提交用户请求、接收来自服务器的信息以及对客户机数据执行业务逻辑操作3.11 客户机/服务器体系结构风格o网络通信软件的主要功能是完成服务器程序和客户机程序之间的数据传输o在代理风格中,服务器将其服务和数据发布到代理服务器上,客户机通过代理服务器来访问服务,提高了系统的安全性3.11 客户机/服务器体系结构风格oC/S体系结构具有以下优点:n客户机构件和服务器构件分别运行在不同的计算机上,有利于分布式数据的组织和处理n构件之间的位置是相互透明的,客户机程序和服务器程序都不必考虑对方的实际存储位置n客户机侧重数据的显示和分析,服务器则注重数据的管理,因此,客户机程序和服务器程序可以运行在不同的操作系统上,便于实现异构环境和多种不同开发技术的融合3.11 客户机/服务器体系结构风格n构件之间是彼此独立和充分隔离的,这使得软件环境和硬件环境的配置具有极大的灵活性,易于系统功能的扩展n将大规模的业务逻辑分布到多个通过网络连接的低成本的计算机上,降低了系统的整体开销oC/S体系结构也逐渐暴露出一些问题:n开发成本较高,客户机的软件配置和硬件配置的要求比较高,随着软件版本的升级,对硬件性能的要求也越来越高,从而增加了系统成本,使客户机变得臃肿3.11 客户机/服务器体系结构风格n在开发C/S结构系统时,大部分工作都集中在客户机程序的设计上,增加了设计的复杂度,客户机负荷太重,难以应对客户端的大量业务处理,降低了系统性能n信息内容和形式单一,传统应用一般都是事务处理型,界面基本上遵循数据库的字段解释,在开发之初就已经确定,用户无法及时获取办公信息和文档信息,只能获得单纯的字符和数字,非常枯燥和死板3.11 客户机/服务器体系结构风格n如果对C/S体系结构的系统进行升级,开发人员需要到现场来更新客户机程序,同时需要对运行环境进行重新配置,增加了维护费用n两层C/S结构采用了单一的服务器,同时以局域网为中心,因此难以扩展到Intranet和Internetn数据安全性不高,客户机程序可以直接访问数据库服务器,因此,客户机上的其它恶意性程序也有可能访问到数据库,无法保证中心数据库的安全3.11 客户机/服务器体系结构风格o为了克服两层C/S结构的缺点,可以将客户机和服务器中的部分业务逻辑抽取出来,形成功能层,放在应用服务器上,这就是所谓的三层C/S体系结构o三层C/S结构包括:客户机、应用服务器和数据库服务器三个部分3.11 客户机/服务器体系结构风格3.11 客户机/服务器体系结构风格o在三层C/S结构中,针对一类应用问题建立了中间层,即功能层,配置在应用服务器上o应用服务器负责处理客户机与数据库服务器之间的交互,而不是直接让客户机与中心数据库相连,因此减少了同数据库服务器相连的客户机的数目,提高了系统安全性o由于将数据存取构件放在应用服务器上,客户机只存放系统的表示层,因此,客户机程序不必关心数据的操作细节,便于实现软件的安装与维护3.11 客户机/服务器体系结构风格o在三层C/S体系结构中,通过增加应用服务器,在不增加数据库服务器负担的情况下,使客户机变“瘦”,这种风格又被称为“瘦客户机”C/S结构o在三层C/S结构中,减小了数据库服务器的工作量,应用服务器可以建立数据备份,因此,提高了系统的可靠性o在三层C/S结构的软件系统中,可以将业务逻辑划分为表示层、功能层和数据层3个部分3.11 客户机/服务器体系结构风格3.11 客户机/服务器体系结构风格o表示层,是系统和用户之间的接口,实现用户与系统之间的对话功能,用于检查从键盘和鼠标等设备输入的数据,显示输出结果o功能层,负责处理所有的业务逻辑o数据层就是数据库管理系统,负责读写数据,数据库管理系统必须能够迅速地执行大量数据的更新和检索操作o在开发三层C/S结构的应用系统时,需要对这三层的功能进行明确地划分,使之在逻辑上相互独立3.11 客户机/服务器体系结构风格o设计过程中的难点是:如何从两层C/S结构的表示层和数据层中分离各自的应用程序,同时使层次之间的接口简单明了o在实现三层C/S体系结构时,通常可以采用中间件技术o中间件是一个用API定义的软件层,是一种具有强大通信能力和良好扩展能力的分布式软件管理框架3.11 客户机/服务器体系结构风格o在客户机和服务器以及服务器和服务器之间,使用中间件来传送数据,完成客户机群和服务器群之间的通信任务o在配置三层C/S结构的系统时,通常有多种不同的选择方案n将表示层放在客户机上,功能层和数据层都放在同一个服务器上,与两层C/S结构相比,虽然提高了程序的可维护性,但两层C/S结构的缺陷并未得到完全解决3.11 客户机/服务器体系结构风格n由于三层分别放在不同的计算结点上,因此提高了系统的灵活性,能够适应客户机数目和处理负荷的变动,但是,在这种情况下,服务器之间要进行数据传送,增加了系统开销3.11 客户机/服务器体系结构风格n如果将表示层和功能层都放在客户机上,其配置方案如下所示,在这种情况下,客户机的工作负担很重,类似于两层C/S结构3.11 客户机/服务器体系结构风格n如果将表示层和功能层都放在客户机上,其配置方案如下所示,在这种情况下,客户机的工作负担很重,类似于两层C/S结构3.11 客户机/服务器体系结构风格o与两层C/S结构相比,三层C/S体系结构具有以下优点:n如果合理地划分三层结构的功能,可以使系统的逻辑结构更加清晰,提高了软件的可维护性和可扩充性n在实现三层C/S结构时,可以更有效地选择运行平台和硬件环境,从而使每一层都具有清晰的逻辑结构、良好的负荷处理能力和较好的开放性,清晰和合理地划分三层C/S结构,使各层之间保持相互独立,可以降低每一层应用的修改难度3.11 客户机/服务器体系结构风格n在三层C/S结构中,可以分别选择合适的编程语言来并行地开发每一层的逻辑功能,以提高开发效率,同时,每一层的维护也更加容易n系统具有较高的安全性,可以充分利用功能层来将数据层和表示层分隔开来,使未授权用户难以绕过功能层,无法利用数据库工具和黑客手段来非法访问数据层,从而保证了中心数据库的安全性,整个系统也更加便于控制,管理层次也更加合理3.11 客户机/服务器体系结构风格o在实现三层C/S结构时,需要注意以下几个问题:n如果各层之间的通信效率不高,即使每一层的硬件配置都很高,系统的整体性能也不会太高n必须慎重考虑三层之间的通信方法、通信频率和传输数据量,这和提高各层的独立性一样也是实现三层C/S结构的关键性问题3.12 浏览器/服务器体系结构风格o浏览器/服务器(Browser/Server,B/S),是三层C/S体系结构的一种实现方式,主要包括:浏览器、Web服务器和数据库服务器oB/S结构主要利用了不断成熟的WWW技术,结合浏览器的多脚本语言,采用通用浏览器来实现原来需要复杂的专用软件才能实现的强大功能,节约了开发成本o与三层C/S结构的解决方案相比,B/S体系结构在客户机上采用了WWW浏览器,将Web服务器作为应用服务器3.12 浏览器/服务器体系结构风格oB/S体系结构的核心是Web服务器,可以将应用程序以网页的形式存放在Web服务器上3.12 浏览器/服务器体系结构风格o当用户运行某个应用程序时,只需要在客户端的浏览器中键入相应的URL,向Web服务器提出HTTP请求o当Web服务器接收HTTP请求之后,会调用相关的应用程序,同时向数据库服务器发送数据操作请求o数据库服务器对数据操作请求进行响应,将结果返回给Web服务器的应用程序3.12 浏览器/服务器体系结构风格oWeb服务器应用程序执行业务处理逻辑,利用HTML来封装操作结果,通过浏览器呈现给用户o在B/S结构中,数据请求、网页生成、数据库访问和应用程序执行全部由Web服务器来完成o在B/S结构中,系统的安装、修改和维护都在Web服务器和数据库服务器上进行3.12 浏览器/服务器体系结构风格o在使用系统时,用户仅使用一个浏览器就可以运行全部的应用程序,真正实现了“零客户端”的运作模式o在系统运行期间,可以对浏览器进行自动升级,B/S结构为异构机、异构网和异构应用服务的集成提供了有效的框架基础oB/S体系结构具有以下优点:n客户端只需要安装浏览器,操作简单,能够发布动态信息和静态信息3.12 浏览器/服务器体系结构风格n运用HTTP标准协议和统一客户端软件,能够实现跨平台通信n开发成本比较低,只需要维护Web服务器程序和中心数据库,客户端升级可以通过升级浏览器来实现,使所有用户同步更新oB/S体系结构风格也存在着一些问题:n个性化程度比较低,所有客户端程序的功能都是一样的3.12 浏览器/服务器体系结构风格n客户端数据处理能力比较差,加重了Web服务器的工作负担,影响系统的整体性能n在B/S结构的系统中,数据提交一般以页面为单位,动态交互性不强,不利于在线事务处理(Online Transaction Processing,OLTP)nB/S体系结构的可扩展性比较差,系统安全性难以保障nB/S结构的应用系统查询中心数据库,其速度要远低于C/S体系结构3.13 公共对象请求代理体系结构风格o在异构分布式环境下,可以利用CORBA来实现应用程序之间的交互操作oCORBA规范主要包括:n对象请求代理ORB、对象适配器(Object Adapter,OA)、接口定义语言IDL、接口存储(Interface Repository,IR)和ORB内部的相关协议oCORBA体系结构的核心是ORB,ORB作为“软件总线”用来连接网络上的不同应用对象3.13 公共对象请求代理体系结构风格oORB的任务是定位服务器,通过对象适配器OA将操作请求传送给相应的服务器oOA位于ORB和对象之间,屏蔽了ORB内部的实现细节,为服务器对象提供了抽象接口n其功能包括:登录服务器、注册对象、创建对象、激活对象、分发客户请求和认证客户请求oCORBA提供了透明访问对象的相关方法,能够屏蔽实现方式、对象状态、通信机制和开发技术之间的差异3.13 公共对象请求代理体系结构风格3.13 公共对象请求代理体系结构风格o在客户端,ORB定义了一个动态调用接口(Dynamic Invocation Interface,DII),以API的形式出现,用来发送操作请求,提供了动态调用方法o在服务器端,OA利用动态框架接口(Dynamic Skeleton Interface,DSI)来传输操作请求,提供了动态实现方法o接口定义语言(Interface Definition Language,IDL)用来定义客户端和服务器之间的静态接口3.13 公共对象请求代理体系结构风格oIDL不是编程语言,它是CORBA规范的一种中性定义语言,用于描述对象接口o客户端与ORB之间的静态接口,被称为静态调用接口(Static Invocation Interface,SII)o服务器与ORB之间的静态接口,被称为静态框架接口(Static Skeleton Interface,SSI)3.13 公共对象请求代理体系结构风格oCORBA规范包含了ORB的内部协议,即Internet ORB内部协议(Internet Inter-ORB Protocol,IIOP),用以描述IDL类型的在线表示方法和协议数据单元oIIOP使用TCP/IP来传输ORB之间的操作请求和相关参数3.13 公共对象请求代理体系结构风格oIR包含了运行时所需要的IDL规范,定义了基本类型映射机制oIMR存储服务器的详细信息oCORBA体系结构风格具有以下优点:n实现了客户端程序与服务器程序的分离,客户不再直接与服务器发生联系,而仅需要和ORB进行通信,客户端和服务器之间的关系更加灵活n将分布式计算模式与面向对象技术结合起来,提高了软件复用效率3.13 公共对象请求代理体系结构风格n提供了软件总线机制,软件总线是指一组定义完整的接口规范,应用程序、软件构件和相关工具只要具有与接口规范相符的接口定义,就能集成到应用系统中,这个接口规范是独立于编程语言和开发环境的nCORBA能够支持不同的编程语言和操作系统,在更大的范围内,开发人员能够相互利用已有的开发成果3.14 正交体系结构风格o正交体系结构是一种以垂直线索构件族为基础的层次化结构,包括组织层和线索o在每一个组织层中,都包含具有相同抽象级别的构件o线索是子系统的实例,是由完成不同层次功能的构件通过相互调用而形成的,每一条线索完成系统的一部分相对独立的功能o在正交体系结构中,每条线索的实现与其它线索的实现无关或关联很少,在同一层次中,构件之间不存在相互调用关系3.14 正交体系结构风格o正交体系结构的基本思想是:n按照功能的正交相关性,将系统垂直地划分为若干个子系统,每个子系统用一条线索来实现n每条线索由多个具有不同层次功能和抽象级别的构件组成o如果线索之间是相互独立的,即不同线索中的构件不存在调用关系,那么这种结构就是完全正交体系结构o在同一层次上,各个线索的构件具有相同的抽象级别3.14 正交体系结构风格o在正交体系结构中,有一个公共的顶层,用于触发各条线索运行,还有一个公共的底层,包含了各条线索需要的数据3.14 正交体系结构风格o正交体系结构具有以下特征:n正交体系结构由完成不同功能的n(n1)个线索(子系统)组成n线索之间是相互独立的,系统的某一变动仅涉及一条线索,而不会影响到其它线索n系统具有m(m1)个不同抽象级别的层次n具有一个驱动线索运行的公共顶层和一个存储共享数据的公共底层o正交体系结构具有以下优点:3.14 正交体系结构风格n结构清晰,线索与线索之间是独立的,不进行相互调用,构件的位置可以清楚地说明它所实现的抽象层次和担负的功能n便于修改和维护,因为线索之间是相互独立的,因此,某一条线索的修改不会影响到其它线索,当需求发生变动时,可以将新需求分解为独立的子需求,然后使用线索和构件来实现每一个子需求n易于重用,在同一应用领域中,不同软件系统往往具有相同的层次和线索,因此,可以共享同一个框架结构3.15 基于层次消息总线的体系结构风格o层次消息总线的理论基础是消息驱动的编程方法和计算机硬件总线概念o计算机硬件总线的概念为层次消息总线体系结构的设计提供了很好的借鉴和启示o构件之间是通过消息总线来进行通信的,可以支持构件的分布式存储和并发运行o消息总线是系统的连接件,负责消息的分派、传递和过滤,并返回处理结果3.15 基于层次消息总线的体系结构风格o构件挂接在消息总线上,向总线登记自己所感兴趣的消息类型o在构件之间,消息是唯一的通信方式n构件发出请求消息,然后总线把请求消息分派到系统中所有对此感兴趣的构件n在接收到请求消息后,构件将根据自身状态对其进行响应,并通过总线返回处理结果o由于构件是通过消息总线进行连接的,不要求各个构件具有相同的地址空间3.15 基于层次消息总线的体系结构风格o复杂构件分解为粒度更细的子构件,通过局部消息总线进行连接,从而形成复合构件o如果子构件仍然比较复杂,则可以进一步分解,如此分解下去,系统将形成树状的拓扑结构o叶结点是系统的原子构件,不再包含子构件o原子构件的设计可以采用不同的软件体系结构风格3.15 基于层次消息总线的体系结构风格o整个系统可以作为一个构件,通过更高层次的消息总线集成到更大的应用系统中o在HMB体系结构中,主要包括构件和消息总线两种软件元素3.15 基于层次消息总线的体系结构风格nHMB构件主要包括接口部分、行为部分和结构部分:o在接口部分,定义了构件与外界之间交互的信息和承担的责任,HMB构件的接口是一种基于消息的互连接口3.15 基于层次消息总线的体系结构风格o在行为部分,使用有限状态自动机来描述构件的功能,构件行为要同时受到外来消息和自身状态的影响o结构部分描述了复合构件的拓扑结构,复合构件由简单的子构件组合而成,子构件通过复合构件内部的消息总线进行连接3.15 基于层次消息总线的体系结构风格n消息总线:o在HMB体系结构中,消息总线是连接件o构件向消息总线登记自己感兴趣的消息,形成构件消息响应登记表o消息总线根据接收到的消息,查阅构件消息响应登记表,确定能够响应该消息的构件,并将消息传递给该构件,同时,负责返回处理结果o从逻辑上看,消息总线是一个整体,但是,从物理上讲,它可以跨越多个不同的机器o挂接在消息总线上的构件可以分布在多个不同的机器上,并行运行3.15 基于层次消息总线的体系结构风格n消息登记:在基于消息的系统中,构件需要向消息总线登记自己所感兴趣的消息,不关心该消息是由哪个构件发出的3.15 基于层次消息总线的体系结构风格n消息分派和传递:消息总线负责在构件之间传递消息,根据构件消息响应登记表把消息分派给对其感兴趣的构件,并返回处理结果n消息过滤:在不同的构件中,同一消息可能使用了不同的名字,不同的消息也可能使用了相同的名字,在构件集成时,需要对消息进行过滤nHMB体系结构风格支持运行时系统演化:3.15 基于层次消息总线的体系结构风格o动态增加和删除构件:只要新构件接口中的发送消息和接收消息保持不变,可以方便地实施构件替换,当添加构件时,只需要向消息总线登记该构件所感兴趣的消息即可,当删除构件时,会出现没有构件响应消息的异常情况o动态改变构件所响应的消息:构件可以动态地改变自己所提供的服务,此时,构件应该向消息总线登记所发生的变化o消息过滤:利用消息过滤机制,可以解决构件集成中的不匹配问题,可以阻塞构件对某些消息的响应3.16 MVC体系结构风格o在开发具有人机界面的软件系统时,比较适合使用模型-视图-控制器体系结构o在MVC结构中,主要包括模型、视图和控制器:n模型,是应用程序的核心,封装了问题的核心数据、逻辑关系和计算功能,提供了处理问题的操作过程n视图,是模型的表示,提供了交互界面,为用户显示模型信息n控制器,负责处理用户与系统之间的交互,为用户提供操作接口3.16 MVC体系结构风格3.16 MVC体系结构风格oMVC体系结构具有以下优点:n多个视图与一个模型相对应,变化-传播机制确保了所有相关视图都能够及时地获取模型变化信息,从而使所有视图和控制器同步,便于维护n具有良好的移植性,由于模型独立于视图,因此,可以方便地实现不同部分的移植n系统被分割为三个独立的部分,当功能发生变化时,改变其中的一个部分就能够满足要求3.16 MVC体系结构风格oMVC体系结构风格也存在着一些问题:n增加了系统设计和运行复杂性n视图与控制器连接过于紧密,妨碍了二者的独立重用n视图访问模型的效率比较低3.17 异构体系结构集成o采用异构体系结构来设计软件系统的原因:n从根本上来说,不同体系结构风格有各自的优点和缺陷,应该根据具体情况来选择系统的框架结构,以解决实际问题n关于框架、通信和体系结构问题,目前,存在着多种不同的标准,在某一段时间内,一种标准占据了统治地位,但其变动最终是绝对的n在实际工作中,总会遇到一些遗留下来的代码,它们仍然有用,但是与新系统的框架结构不一致,出于技术与经济因素的考虑,决定不再重写3.17 异构体系结构集成n在某一单位中,规定了共享软件包和某些标准,但仍会存在解释和表示习惯上的不同,选择异构体系结构风格,可以解决这一问题o不同体系结构的组合主要包括以下两种方式:n空间异构,允许构件使用不同的连接件,不同子系统采用了不同的体系结构n分层异构,软件元素按层次结构进行组织,每一层使用了不同的体系结构3.17 异构体系结构集成o“内外有别”模型:n在企业内部使用C/S结构,内部用户可以通过局域网直接访问数据库服务器n在企业外部使用B/S结构,外部用户通过Internet访问Web服务器,Web服务器再访问数据库服务器,并将操作结果返回给外部用户3.17 异构体系结构集成3.17 异构体系结构集成o“内外有别”模型的优点:n企业外部用户无法直接访问数据库服务器,能够保证企业数据库的安全n企业内部用户的交互操作比较多,采用C/S结构能够提高查询和修改的响应速度o“内外有别”模型的缺点:n对于企业外部用户而言,采用了B/S结构,在修改和维护数据时,需要经过Web服务器,因此响应速度比较慢,数据动态交互性不强3.17 异构体系结构集成o“查改有别”模型:n不管用户采用何种方式与系统互联,如果需要执行维护和修改操作,就采用C/S结构n如果只是执行查询和浏览操作,则采用B/S结构o“查改有别”模型体现了B/S结构和C/S结构的共同优点o但是,外部用户能够直接通过Internet访问数据库服务器,给企业数据库的安全造成了一定的威胁3.17 异构体系结构集成3.17 异构体系结构集成o基于HMB的异构体系结构:n整体框架采用HMB,各个复合构件分别采用HMB结构、管道/过滤器结构和数据共享结构
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!