版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于架构风格与基于网络的软件架构设计的前三章整理基于架构风格与基于网络的软件架构设计的前三章整理基于网络的架构风格基于网络的架构风格架构的相关概念1架构风格的实例3架构所具有的品质2内容内容Part1架构的相关概念软件架构和架构风格软件架构和架构风格软件架构软件架构是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象组件,各个组件之间的连接则明确和相对细致地描述组件之间的通讯。软件架构是一个软件系统在其操作的某个阶段的运行时元素的抽象。一个系统可能由很多层抽象和很多个操作阶段组成,每个抽象和操作阶段都有自己的软件架构。软件
2、抽象架构应该描述的是运行时的抽象。抽象能够隐藏一些系统的细节。我们要考虑系统行为抽象和操作阶段抽象。在具体的层次还可能存在另一个架构。抽象的结果我们称之为元素。架构元素软件架构是由一些架构元素的配置来定义的。元素:处理元素,连接元素,数据元素。组件:执行数据转换的元素。连接器:将架构不同部分结合在一起的元素。数据:包含被使用和被转换的信息的元素。粗糙架构:组件用方框表示,连接器用直线表示。在基于网络的应用中,我们引入了数据元素。架构元素一个组件是软件指令和内部状态的一个抽象单元,通过其接口提供对于数据的转换。一个连接器是对于组建之间的通讯、协调或者合作进行仲裁的一种抽象机制。一个数据是组件通过
3、一个连接器接收或发送的信息元素。连接器的例子包括共享的表述、远程过程调用、消息传递协议和数据流。连接器通过将数据元素从它的一个接口转移到另一个接口而不改变数据,来支持组件之间的通信。软件架构我们把系统的运行期间组件、连接器和数据之间的架构关系的结构称之为配置。软件架构的主要活动就是对运行时进行抽象。软件架构抽象会得到元素和配置。在配置之中我们会发现两类配置,一类是主动的配置,一类是通用约束影响的配置。架构属性架构属性包含有组件、连接器和数据的选择和排列所导致的所有属性。属性有:网络性能,组件可重用性,进化的相对容易程度,动态扩展能力。属性是由架构中的约束所导致的,约束往往是由在架构元素的某个方
4、面应用软件工程原则来驱动的。通用性原则驱动的“统一组件接口”,软件将获得可重用性和可配置性。架构设计的目标是创建包含一组架构属性的架构。架构风格架构风格是一组协作的架构约束,这些约束限制了架构元素的角色和功能,以及在任何一个遵循该风格的架构中允许存在的元素之间的关系。风格是一种用来对架构进行分类和定义它们的公共特征的机制。一种架构风格封装了关于架构元素的重要抉择,强调对于元素和它们之间的关系的重要约束。一种架构风格决定了再此风格的实例中能够使用的组件和连接器的词汇表,以及一组将它们组合在一起的约束。模式和视图一种设计模式被定义为一种重要的和重复出现的系统构造。一种模式通过遵循一种固定的设计和实
5、现选择路径,定义了一个解决问题的过程。对于系统的可以从很多不同的角度来观察一个架构,不同的角度能够得到不同视图。4+1视图模型:逻辑视图,过程视图,物理视图,开发视图,场景视图。Part2架构所具有的品质架构评价和架构属性架构评价和架构属性评价架构首先是评价能否实现功能需求。其次评价对非功能需求的强调程度。将所有可能的架构风格空间看作继承树。对不同的架构风格和属性构造强调程度表格。关键架构属性性能简单性可见性可靠性可修改性可伸缩性可移植性性能网络性能:吞吐量、负载、带宽、可用带宽可觉察性:延迟和完成时间网络效率:网络的使用对于软件的必要性网络性能负载是指组件对数据的处理数量吞吐量是指信息在组件
6、之间转移的速率可用带宽是指应用实际可用的那部分带宽带宽是指在一个特定网络上可用最大吞吐量我们可以通过减少传输的数据量来提升网络性能网络效率网络使用所花费的时间我们可以利用缓存数据来减少组件的网络交互我们可以利用保存会话来减少数据的传输我们可以利用远程求值来减少交互的次数我们可以利用按需代码来本地缓存组件我们可以利用选择执行组件的地点来减少时间可觉察性是指用户对系统运行的感知能力延迟是指从触发初次请求到得到第一个响应指示之间持续的时间完成时间是完成一个应用动作所花费的时间我们可以通过复制数据到本地加快响应我们可以复制代码到本质执行加快响应在管道-过滤器风格在每个组件处理后都可以观察结果来增强可觉
7、察性简单性功能分配是的单独的组件足够简单我们可以通过分离组件间的关注点增强简单性我们可以实施架构元素通用行原则来增强简单性可见性是指一个组件对于其他两个组件之间的交互进行监视或仲裁的能力。我们可以使用通用性接口来确定组件之间的接口我们可以通过组件提供访问监视功能增强可见性我们可以增强交互数据的全面性来增强可见性可靠性指在框架元素出现部分故障时,一个架构容易受到系统层面故障影响的程度我们可以增加冗余,允许监视来增加可靠性我们可以通过避免单点故障来增加可靠性我们可以通过见识并使用可恢复动作来缩小故障范围来增加可靠性可修改性可进化性:修改系统中组件而不影响其他的能力可扩展性:新添加一个组件到系统中的
8、能力可定制性:临时规定一个架构元素的能力可配置性:部署后对框架元素和配置修改的能力可重用性:元素不做修改在其他框架重用的能力可修改性我们可以通过使用分层技术来提高可进化性我们可以降低耦合度分离关注点来提高可进化性我们可以通过降低耦合度来提高可扩展性我们可以通过使用事件风格来提高可扩展性我们可以通过使用虚拟机风格来提高可扩展性我们可以通过远程求值风格来提高可定制性可修改性我们可以通过按需代码风格来提高可配置性我们可以通过管道和过滤器分割来提高可配置性我们可以通过事件和分布式对象来提高可配置性我们可以通过降低耦合度来提高可重用性我们可以通过强制通用接口组件来提高可重用性可伸缩性在一个主动的配置中,
9、构架支持大量的组件或大量的组件之间交互的能力。我们可以通过将处理过程分布到更多的组件来增强可伸缩性。我们可以根据交互结果对交互和配置进行控制来增强可伸缩性。可移植性软件在不同的环境下运行的能力。我们可以通过按需代码风格可以实行可移植性。我们可以通过分层来实现可移植性。我们可以通过标准格式数据来实现可移植性。Part3网络架构风格实例架构需求和风格实例架构需求和风格实例网络架构仅针对基于网络的超媒体系统架构设计除了功能需求还需要满足属性需求我们将按照架构属性来对架构风格进行评估架构风格描述架构风格会导致架构属性的相对变化。我们将会讨论有代表意义的网络架构风格。使用风格和属性的比较表作为分类的可视
10、化。1.减号表示消极影响2.加号表示积极影响3.加减号表示影响依赖问题域的某个方面架构风格分类数据流风格复制风格分层风格移动代码风格点对点风格数据流风格所有的数据按照流的形式在执行过程中前进,不存在结构的反复和重构。在流动过程中,数据经过序列间的数据处理组件进行处理,然后将处理结果向后传送、最后进行输出。管道和过滤器统一管道和过滤器管道和过滤器Pipe and Filter,PF每个组件(过滤器)从其输入端读取数据流并在其输出端产生数据流,通常对输入流应用一种转换并增量地处理它们,以使输出在输入被完全处理完之前就能够开始。这种风格也被称作单路数据流网络。这里的架构约束是一个过滤器必须完全独立与
11、其他的过滤器(零耦合),它不能与其他过滤器在其上行和下行数据流接口分享状态、控制线程或标识。Z语言为管道和过滤器风格提供了广泛的形式化描述管道和过滤器管道和过滤器管道和过滤器简单性:过滤器之间零耦合,使得组件之间的划分简单。可重用性:只要匹配过滤器的输入输出,就可重复使用。可扩展性:很容易在两个过滤器中维护一个新过滤器。可进化性:很容易的使用新的过滤器替代旧的过滤器。可配置性:可以自由的组合过滤器,从而实现新的需求。可察觉性:是否支持并发处理来判断是否具有可察觉性。统一管道和过滤器Uniform Pipe and Filter,UPFUPF在PF风格的基础上,添加了一个约束,即所有过滤器必须具
12、有相同的接口。在Unix系统中的,字符输入数据流(stdin)和字符输出数据流(stdout,stderr)接口。简单性:组件使用了统一的接口,实施了架构元素通用性原则。可配置性:使用了统一的接口,修改已发布的组件更容易。可重用性:使用了通用组件接口,组件之间可以重复利用。可见性:架构使用了通用组件接口,组件知道其他组件的接口。网络性能:确定组件接口限制了数据的格式,可能会降低性能。数据流风格风格继承网络性能可觉察性网络效率可伸缩性简单性可进化性可扩展性可定制性可配置性可重用性可见性可移植性可靠性PF+UPFPF-+复制风格复制仓库缓存复制仓库Replicated Repository,RR基
13、于复制仓库风格的系统通过利用多个进程提供相同的服务,这些分散的服务器交互为客户端制造出只有一个集中的服务的幻觉。类似XMS的分布式文件系统类似CVS的远程版本控制系统仓库风格、以模型为中心仓库风格、以模型为中心复制仓库可靠性:分散的服务器通过复制冗余或者恢复错误节点来保证服务的靠可性。可察觉性:通过减少处理正常请求的延迟,并通过有意的线下漫游来支持离线操作。可伸缩性:可以根据客户端的请求和流量来调整仓库的文件的分布,或者本地缓存数据。缓存Cache,$通常因为在潜在的数据集远远超出单个客户端的容量的情况下。我们通过复制个别请求的结果,以便可以被后面的请求重用。复制可分为主动复制和被动复制,主动
14、复制是基于预测来预先获取可缓存的数据项。缓存简单性:不用执行复制仓库,而只用缓存少数的数据想,要简单的多。网络效率:使用缓存减少了网络的访问,当然提高了网络效率。可察觉性:因为缓存的内容少了,所以可察觉性降低了。复制风格风格继承网络性能可觉察性网络效率可伸缩性简单性可进化性可扩展性可定制性可配置性可重用性可见性可移植性可靠性RR+$RR+分层风格客户-服务器分层系统分层-客户-服务器客户-无状态-服务器客户-缓存-无状态-服务器分层-客户-缓存-无状态-服务器远程会话远程数据访问客户-服务器Client-Server,CS使用客户-服务器约束来分离关注点。客户-服务器风格在基于网络的应用的架构
15、风格中最为常见。服务器组件提供了一组服务,并监听对这些服务的请求。客户端组件通过一个连接器将请求发送到服务器,希望执行一个服务。服务器可以拒绝这个请求,也可以执行这个请求并将响应发送回客户端。客户-服务器简单性:因为组件之间分离出客户端和服务端,使组件更加清晰简单。可伸缩性:因为功能的实现分离到客户端或者服务端,使其具有可伸缩性。可进化性:在接口不变的情况下,服务端和客户端可以自由的发布新的版本。客户客户-服务器服务器分层系统Layered System,LS一个分层系统是按照层次来组织的,每一层为在其之上的层提供服务,并且使用在其之下的曾所提供的服务。分层系统通过对相邻的外部层之外的所有层隐
16、藏内部层,减少了跨越多层的耦合。硬件接口库。分层通讯协议的处理,例如TCP/IP和OSI协议栈。分层系统分层系统分层系统可觉察性:层次增加,增加了处理的数据的开销和延迟,降低了用户可觉察的性能。可伸缩性:通过分层分离出不同层次组件,我们可以在组件之间分散处理能力,来提供可伸缩性。可进化性:只向上层提供服务,保证上层组件的正常运行就可以修改,使其具有可进化性。可重用性:只要有下层提供服务,该层就可以重复使用,使其具有可重用性。可移植性:层次之间只依赖下层的接口服务,这些增强了可移植性。分层-客户-服务器Layered-Client-Server,LCS分层系统和客户-服务器风格结合就形成的风格。
17、该风格可以认为在CS的基础上添加了代理组建和网关组件。一个代理组件作为一个或多个客户端组件的共享服务器,它接收请求并进行可能的转换后将其转发给服务器。一个网关组件在客户端或代理看来像是一个正常的服务器,但是事实上它将请求进行可能的转换后转发给了它的内部层服务器。这些额外的中间组件添加了很多个层,用来为系统添加诸如负载均衡和安全性检查这样的功能。分层分层-客户客户-服务器服务器分层-客户-服务器简单性:包含了CS的简单性可伸缩性:包含了CS和LS的可伸缩性可进化性:包含了CS和LS的可进化性客户-无状态-服务器Client-Stateless-Server,CSS在客户-服务器风格的基础上,添加
18、了约束,在服务器组件之上不允许有会话状态。从客户端发到服务器的每个请求必须包含理解请求所必须的全部信息,不能利用任何保存在服务器上的上下文,会话状态全部保存在客户端。客户-无状态-服务器可见性:监视系统通过当前消息就能确定状态可靠性:在恢复的时候仅依赖当前信息可伸缩性:释放资源变的迅速简单网络性能:发送信息中包含重复信息客户-缓存-无状态-服务器Client-Cache-Stateless-Server,C$SS结合了客户-无状态-服务器风格和缓存风格,通过添加缓存组件。一个缓存在客户端和服务器之间扮演一个仲裁者,早先请求的响应能够被重用,以响应稍后的相同请求,如果将该请求转发到服务器,得到的
19、响应可能与缓存中已有的响应相同。客户-缓存-无状态-服务器网络效率:继承了缓存风格的网络效率可觉察性:继续了缓存风格的可觉察性分层-客户-缓存-无状态-服务器Layered-Client-Cache-Stateless-Server,LC$SS在客户-缓存-无状态-服务器风格的基础上添加了分层风格,具体可是添加代理和网关组件。使用此风格的范例系统是Internet域名系统DNS。可察觉性:缓存风格增加可察觉性,但是分层风格有减低了可察觉性。远程会话Remote Session,RS是客户-服务器风格的一种变种,它试图使客户端组件的复杂性最小化或者使得它们的可重用性最大化。每个客户端在服务器上启
20、动一个会话,然后调用服务器的一系列的服务,最后退出会话,应用状态被完全保存在服务器上。使用通用的客户端(generic client)(telnet)使用模仿通用客户端(FTP)远程会话简单性:将会话集中在服务器端维护,这样更简单网络效率:不用每次传递会话相关信息可进化性:服务端维护会话信息,客户端改进简单可见性:监视程序要通过多条数据确定服务器状态可伸缩性:服务器上需要保存会话信息远程数据访问Remote Data Access,RDA是客户-服务器风格的一种变种,它将应用状态分布在客户端和服务器上。客户端以一种标准的格式发送一个数据库查询请求到服务器,服务器分配一个工作空间并执行这个查询,
21、这可能会导致一个巨大的结果集。客户端能够在结果集上进行进一步的操作或者每次获取结果的一部分。远程数据访问可见性:通过使用一种标准的查询语言来改善可见性。网络效率:数据在服务器端多次处理再返回结果,节省了网络传输的成本。简单性:客户端必须像服务器实现那样理解相同的数据库操作概念。可靠性:部分故障导致服务器工作空间处于未知状态。可伸缩性:在服务器和客户端都保存可上下文。分层风格风格继承网络性能可觉察性网络效率可伸缩性简单性可进化性可扩展性可定制性可配置性可重用性可见性可移植性可靠性CS+LS-+LCSCS+LS-+CSSCS-+C$SSCSS+$-+LC$SSLCS+C$SS-+RSCS+-+-R
22、DACS+-+-移动代码风格虚拟机风格远程求值风格按需代码风格分层-按需代码-客户-缓存-无状态-服务器移动代码移动代码风格移动代码风格使用移动性来动态地改变在处理过程与数据源或结果目的地之间的距离。为了考虑不同组件的位置,他们在架构层面引入了一种站点抽象,作为主动配置的一部分。当与包括了网络通信的交互的开销作比较时,共享同一位置的组建之间的交互开销的成本被认为是可以忽略不计的。通过改变自己的位置,一个组件可以改善接近性和它的交互的质量,减少交互开销从而提高效率和用户可觉察的性能。在所有的移动代码风格中,一个数据成员被动态地转换为一个组件。虚拟机风格Virtual Machine,VM代码必须
23、以某种方式来执行,首选的方式是在一个满足了安全性和可靠性关注点的受控环境中执行,而这正式虚拟机风格。所有移动代码风格的基础是虚拟机风格。脚本语言的引擎可以作为虚拟机,包括像Perl这样的通用语言和想PostScript这样的与特定任务相关的语言。简单性:对求值环境进行管理,又分离了指令和实现。可见性:因为执行环境不知道指令,所以降低了可见性。可扩展性:因为分离了指令和实现,可以随时添加新指令。可移植性:只有要虚拟机环境,指令可以在任何地方执行。远程求值风格Remote Evaluation,REV结合了VM和CS风格,一个客户端组件必须要知道如何来执行一个服务,但缺少执行此服务所必需的资源,这
24、些资源恰好位于一个远程站点上。客户端将如何执行服务的代码发送给远程站点上的一个服务器组件,服务器组件使用可用的资源来执行代码,然后将执行结果发送回客户端。远程求值风格简单性:管理求值环境管理和静态求值环境。网络效率:将资源交由服务器执行返回结果。可定制性:可以临时修改服务器的执行代码。可靠性:对执行环境的的管理,可能出现问题。可伸缩性:执行的过程都是在服务器端执行,不能将执行分配到其他组件。按需代码风格Code on Demand,COD结合了VM和CS风格,一个客户端组件知道如何访问一组资源,但不知道如何处理它们。它向一个远程服务器发送对于如何处理资源的代码的请求,接受这些代码,然后在本地执
25、行这些代码。网络效率:下载执行代码到本地。可察觉性:本地执行代码。可伸缩性:客户端执行代码,分担服务器压力。可扩展性:在客户端根据服务器提供代码添加新功能。可配置性:在部署后,可改变组件的执行位置。分层-按需代码-客户-缓存-无状态-服务器Layered-Code-on-Demand-Client-Cache-Stateless-Server,LCODC$SS在LC$SS风格基础上,结合COD风格,将代码看作是另一种数据元素。HotJava Web浏览器,允许applet和协议扩展作为有类型的媒体来下载。同时集成了LC$SS和COD两种风格的属性。移动代码Mobile Agent,MA结合了远
26、程求值和按需代码两种风格。在移动代码风格中,一个完整的计算组件,与它的状态、必需的代码、执行任务所需要的数据一起被移动到远程站点。可靠性:因为每次处理信息都是在单一地点,不会对其他地点造成影响。移动代码风格风格继承网络性能可觉察性网络效率可伸缩性简单性可进化性可扩展性可定制性可配置性可重用性可见性可移植性可靠性VM+-+REVCS+VM+-+-+CODCS+VM+-LCODC$SSLC$SS+COD-+4+MAREV+COD+-+点对点风格基于事件的风格C2风格分布式对象风格被代理的分布式对象风格基于事件的风格Event-based Integration,EBI它通过除去了解连接器接口的标识
27、的必要性,降低了组件之间的耦合。此风格不是直接调用另一个组件,而是一个组件能够发布一个或多个事件。在事件发布后,系统中的其他组件能够注册对于某些事件类型的兴趣,由系统本身调用所有已注册的组件。基于事件的风格基于事件的风格基于事件的风格简单性:除去了连接器接口的标识必要性同时对组件接耦。网络效率:使用数据监视,而不需要轮寻式交互。可进化性:允许组件的更新而不影响其他组件。可扩展性:通过添加事件监听来添加新的组件。可配置性:在部署后,不动事件总线,很容易修改事件的监听。可重用性:可以通用的事件接口和集成机制来重复利用组件。可见性:通过总线关联,不知道监听事件的组件。可靠性:组件之间的相互影响不可控。可伸缩性:组件使用的是总线监听,会导致可伸缩性问题。C2风格结合了EBI风格和LCS风格它通过将基于事件的集成风
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电梯机房管理规章
- 名著阅读《红星照耀中国》-八年级语文上册同步备课精讲(统编版)
- 西京学院《信息检索导论》2023-2024学年第一学期期末试卷
- 西京学院《商务应用文写作》2022-2023学年第一学期期末试卷
- 人教版五年级上册第11课新型玻璃
- 西京学院《机电一体化系统设计》2021-2022学年期末试卷
- 幼儿园小班儿歌《晒太阳》课件
- 西华师范大学《组织行为学》2022-2023学年第一学期期末试卷
- 人教版初中课件
- 西华师范大学《小学课程设计与评价》2023-2024学年第一学期期末试卷
- 学校心理辅导期末考试复习题及参考答案
- 《哈利波特与魔法石》
- 电厂运维安全员职责
- 艺术收藏科普知识讲座
- 期权策略及案例分析
- 平面镜成像-说课
- DB1306-T 102-2021 天花粉产地初加工技术规程
- Unit5PartALet'stryLet'stalk(学习任务单)六年级英语上册(人教PEP版)
- 中心供氧系统故障诊断与维护策略
- 国开2023秋《人文英语3》第5-8单元作文练习参考答案
- 高三一模总结主题班会课件
评论
0/150
提交评论