模式在架构设计中的应用_第1页
模式在架构设计中的应用_第2页
模式在架构设计中的应用_第3页
模式在架构设计中的应用_第4页
模式在架构设计中的应用_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

1、架构设计之模式应用广州市品高软件开发有限公司2022年9月12日目录广州市品高软件开发有限公司2常用架构模式介绍架构设计讨论什么是架构模式加构设计内容广州市品高软件开发有限公司3软件架构的种类广州市品高软件开发有限公司4软件系统的逻辑架构图逻辑架构:软件系统中元件之间的关系,比如用户界面,数据库,外部系统接口,商业逻辑元件,等等软件架构的种类广州市品高软件开发有限公司5物理架构:软件元件是怎样放到硬件上的软件系统的物理架构图软件架构的种类系统架构:系统的非功能性特征,如可扩展性、可靠性、强壮性、灵活性、 性能等。系统架构的设计要求架构师具备软件和硬件的功能和性能的过硬知识,是架 构设计工作中最

2、为困难的工作。架构的两要素:元件划分和设计决定。 元件划分 一个软件系统中的元件首先是逻辑元件。这些逻辑元件如何放到硬件上,以 及这些元件如何为整个系统的可扩展性、可靠性、强壮性、灵活性、性能等 做出贡献,是非常重要的信息。设计决定 进行软件设计需要做出的决定中,必然会包括逻辑结构、物理结构,以及它 们如何影响到系统的所有非功能性特征。这些决定中会有很多是一旦作出, 就很难更改的。6架构模式广州市品高软件开发有限公司7架构模式是一个系统的高层次策略,涉及到大尺度的组件以及整体性质。架构模式的好坏可以影响到总体布局和框架性结构。 架构模式是模式中的最高层次,描述软件系统里的基本的结构组织或纲要,

3、通常提供事先定义好的子系统,指定它们的责任,并给出把它们组织在一起的法则和指南。比如,用户和文件系统安全策略模型,N-层结构,组件对象服务等。一个架构模式常常可以分解成很多个设计模式的联合使用。有些作者把这种架构模式叫做系统模式。架构模式常常划分成如下的几种:1、From Mud to Structure型。帮助架构师将系统合理划分,避免形成一个对象的海洋。包括Layers(分层)模式、Blackboard(黑板)模式、Pipes/Filters(管道/过 滤器)模式等。2、分散系统型。为分散式系统提供完整的架构设计,包括像Broker(中介)模式等。3、人机互动(Interactive Sy

4、stems)型,支持包含有人机互动介面的系统的架构设计,例如: MVC(Model-View-Controller)模式、PAC(Presentation-Abstraction-Control)模式等。4、Adaptable Systems型,支持应用系统适应技术的变化、软件功能需求的变化。如Reflection(反射)模式、Microkernel(微核)模式等。 分层模式广州市品高软件开发有限公司8分层模式架构设计一个主要的目的,就是把系统划分成为很多“板块”。划分的方式通常有两种,一种是横向的划分,一种是纵向划分。横向划分将系统按照商业目的划分。比如一个书店的管理系统可以划分成为进货、销

5、售、库存管理、员工管理等等。纵向划分则按照抽象层次的高低,将系统划分成“层”,或叫Layer。比如一个公司的内网管理系统通常可以划分成为下面的几个层次:。网页,也就是用户界面,负责显示数 据、接受用户输入;。领域层,包括JavaBean或者COM对象、 B2B服务等,封装了必要的商业逻辑,负 责根据商业逻辑决定显示什么数据、以及 如何根据用户输入的数据进行计算;。数据库,负责存储数据,按照查询要 求提供所存储的数据。操作系统层,比如Windows NT或者 Solaris等。硬件层,比如SUN E450服务器等层次架构模式 使用层架构的好处: 1 。你使用层,但是不需要去了解层的实 现细节。

6、2 。 可以使用另一种技术来改变基础的 层,而不会影响上面的层的应用。 3。任何一层的变化不会影响到其他各层。4。 容易制定出层标准。 5。底下的层可以用来建立顶上的层的多 项服务。6。更容易容纳新的技术和变化。层架构 模式容许任何一层变更所使用的技术 层架构的弱点: 1。层不可能封装所有的功能,一旦有功 能变动,势必要波及所有的层。 2。效率降低。 3。层最难的问题是要定义各个层的内容, 以及要承担的责任。 * 有时把Layer叫做Tier,但是Tier多带有物理含义,不同的Tier往往位于不同的计算机上,由网络连接起来,而Layer是纯粹逻辑的概念,与物理划分无关。9分层的方式 分层是为了

7、隔离各层的关注面 分层的标准是:将相似的事物分组在一起 将不同的事物分开 分层的目标在于隔离关注面: 不同层的元素与不同领域相关,例如,业务层关 注业务领域问题、中间件层关注适配操作系统的底层差异等软件自身问题。 各层的元素属于同一抽象级别,而不同抽象级别的特性不同,要求的处理方式也不一样。 稳定与变化的隔离。典型的三层结构 如何使用都要看具体的情况才能够决定,例子1:一个电子商务系统。要求能够同时处理大量用户的请求,用户的范围遍及全球,而且数字还在不断增长。但是业务逻辑很简单,无非是订单的处理,以及和库存系统的连接部分。这就要求1、表示层要友好,能够适应最广泛的用户,因此采用html技术;2

8、、支持分布式的处理,以胜任同时几千的访问; 3、考虑未来的升级。 例子2:一个租借系统。系统的用户少的多,但是业务逻辑很复杂。这就要求我们制作一个业务逻辑非常复杂的系统,还要给他们的用户提供一个方便的输入界面,wimp是一个不错的选择。 例子3:简单的系统。非常简单,用户少、逻辑少。但是也不是没有问题,简单意味着要快速交付,并且还要充分考虑日后的升级。因为需求在不断的增加之中。11从本质上讲,层代表了一个应用程序主要的功能。一般地,我们将应用程序功能分为三个方面,对应3层架构模式。它们是数据层(data layer)、业务层(business layer)和表示层(presentation l

9、ayer)。数据层:包含数据存储和与它交互的组件或服务。这些组件和服务在功能上和中间层相互独立(尽管在物理上不必一定相互独立-它们可以在同一台服务器上)。业务层:包括一个或者多个组件服务,它们应用商务规则、实现应用程序逻辑并完成应用程序运行所需要的数据处理。作为这个过程的一部分,中间层负责处理来自数据存储或者发送给数据存储的数据。表示层:从中间层获得信息并显示给用户。该层同时也负责和用户进行交互,比较返回的信息并将信息回送给中间层进行处理。Brown model :表示层(Presentation),控制/中介层(Controller/Mediator),领域层(Domain), 数据映射层(

10、Data Mapping), 数据源层(Data Source)。Brown ISA表示层和领域层的中介层,针对一些非可视的控件。例如为特定的表示层组织信息格式,在不 同的窗口间导航,处理交易边界,提供Server的facade接口。这样做,一些领域逻辑被放到这个层里会影响到其 它的表示层。把行为分配给表示层是有好处的可以简化问题,但表示层模型会比较复杂,所以,把这些行为放到非可视化的对象中,并提取出一个表示-领域中介层是值得的。 领域层和基础架构层之间的中介层属于Database Mapper模式,是三种领域层到数据连接的办法之一。和表示-领域中介层一样,有时候有用,但不是所有时候都有用。

11、J2EE的架构客户层(Client),表示层(Presentation),业务层(Business ),整合层(Integration),资源层(Resource)。J2EE核心 ISA 客户层 运行在客户机上的表示层 ,表示层 运行在服务器上的表示层 ,业务层 领域层 ,整合层 基础架构层 ,资源层 基础架构层通信的外部数据 。微软的DNA架构定义了三个层:表示层(presentation),业务层(business),和数据存储层(data access),但是在数据的传递方式上还有很大的不同。 在微软的DNA中,各层的操作都基于数据存储层传出的SQL查询结果集。这样的话,实际上是增加了表

12、示层和业务层同数据存储层之间的耦合度。DNA的记录集在层之间的动作类似于Data Transfer Object。 更多的层模式 12OCRM系统总体功能架构(第一级)13 系统划分为“界面展现层”、“核心业务层”、“共享功能层”、“基础服务层”、“企业数据层”五个层次。 根据依赖倒置原则,各层次之间之能向下引用,即上层模块只能调用下层模块的接口,下层模块不能调用上层模块接口,同层模块之间不能相互引用。基础服务ISO七层协议广州市品高软件开发有限公司14ISO Open Systems Interconnect 7-layer model目录广州市品高软件开发有限公司15管道和过滤器体系架构模

13、式管道和过滤器体系架构模式它是为处理数据流的系统提供的一种模式,是由过滤器和管道组成的。每个处理步骤都被封装在一个过滤器组件中,数据通过相邻过滤器之间的管道进行传输。每个 过滤器可以单独修改,功能单一,并且它们之间的顺序可以进行配置。系统的设计尤其是处理步骤的内部连接,必须考虑以下因素:未来系统的升级通过替换某些处理步骤,或重组步骤、不同的语境中小的处理步骤要比大的组件更易于重用、不相连的处理步骤不可共享信息、对不同的输入数据源和可以用多种方式输出或存放最终结果。这种模式的特性是:。过滤器是独立运行的部件,除了输入和输出外,每个过滤器不受任何其他过滤器运行的影响。在设计上,过滤器之间不共享任何

14、状态信息。独立性还表现在它对其处理的上游和下游连接的过滤器是“无知”的。它的设计和使用不对与其连接的任何过滤器施加限制,唯一关心的是其输入数据的,然后进行加工处理,最后产生数据输出。在使用管道和过滤器模式时,一般会使用的相关设计模式有:职责链模式(Chain Of Responsibility)、命令模式(Command)和装饰模式(Decorator)。16管道和过滤器体系架构模式的实施把系统任务分成一系列处理阶段根据管道和过滤器的设计方案,必须把系统处理的任务分割成相应独立的任务,如日志,数据转化,安全认证等。这样每个阶段仅依赖其前一阶段的输出。通过 数据流将所有阶段相连起来。并且你可以进

15、行替换每个步骤,或者可以调整它们之间的顺序,以产生新的结果。如将编码转化Filter和安 全Filter,分成两个独立的处理阶段。定义沿每个管道传输的数据格式每个过滤器以定义一个统一格式以获得最大的灵活性,因为它使过滤器的重组变得容易。如:每个过滤器的方法是doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)它们的参数是必须相同的。决定如何实现每个管道连接过滤器的连接是通过前一个过滤器主动的调用filterChain.doFilter(request, response)来实现转向

16、下一个过滤器。设计和实现过滤器设计每个过滤器具有独立的功能,如编码转化,安全校验,等功能,并且每个过滤器都应该在实现javax.servlet.Filter接口。建立处理流水线过滤器的部署是在Web.xml中进行配置,描述过滤器的实现类以及它们的map关系,来确定它们的顺序。17优点与缺点优点:结构简单:系统的行为是所有过滤器行为的简单复合。系统易于维护和增强:增加新过滤器,替换旧过滤器。支持复用:过滤器只同其输入、输出端口的数据相关。各过滤器可以并发运行。缺点:容易导致批处理方式:每个过滤器从输入数据到输出数据的转换是一个整体。转换通常不适合交互式的应用。有时必须维护两个分离而又相关的流之间

17、的对应关系。同实现有关,过滤器之间的数据传输率较低,而且每个过滤器都要作类似的数据打包和解包的工作。示例:ETL调度中心广州市品高软件开发有限公司19 数据中心的数据处理调度都同ETL的调度中心提供,通过配置ETL任务调度和作业调度流程来进行数据处理计划。示例:企业服务总线设计广州市品高软件开发有限公司20管道和过滤器体系架构模式的应用实例2、AXISAixs是apache开源的webservice实现服务器。xis处理 Message,首先截获客户端的请求,然后转发到真正的实现业务逻辑上处理客户端的请求,在这之前经过一系列的handler处理。Handler就是过滤器,处理顺序时要考虑部署描

18、述符(deployment configuration )是在客户端还是服务器端。Handler处理的对象是MessageContext,由3个重要的部分组成:request Message、response message和属性。在服务器端,有一个Transport Listener,它监听客户端的请求。通过多种协议,在客户有请求时将按照协议的规范把数据解析生成一个Message对象,然后把它设置到MessageContext,然后调 用一系列的Handler进行处理,其结构图如右所示。21Client/Server模式Client/Server模式广州市品高软件开发有限公司22客户/服务器

19、(Client/Server)系统分为客户和服务器,服务器一直处于侦听的状态,客户主动连接服务器,每个服务器可以为多个客户服务。优缺点优点:结构简单,系统中不同类型的任务分别由客户和服务器承担,有利于发挥不同机器平台的优势;支持分布式、并发环境,特别是当客户和服务器之间的关系是多对多时,可以有效地提高资源的利用率和共享程度;服务器集中管理资源,有利于权限控制和系统安全。缺点:在大多数client-server风格的系统中,构件之间的连接通过(远程)过程调用,接近于代码一级,表达能力较弱。示例:即时通信广州市品高软件开发有限公司25MVC模式广州市品高软件开发有限公司26MVC模式模型-视图-控

20、制器(MVC)当应用程序的用户界面非常复杂,且关于用户界面的需求很容易变化时,我们可以把交互类型的软件抽象成模型、视图和控制器这三类组件单元,这种抽象可以很好地分离用户界面和业务逻辑,适应变化的需求。大多数现代交互软件都在一定程度上符合这一架构模型的特点。MVC模式最吸引人之处在于它迫使用户必须抽象自己的代码,把项目分为表示、逻辑和控制三部分,每部分间的关联较小。以MVC模式构造软件,可以使得软件结构灵活、重用性好、扩展性佳。模型视图控制器交互的示意图模型:视图:控制器:模型:模型表示应用的数据及操作这些数据的逻辑方法。任何和整个应用有关的持久性数据都应该放在模型中。对于模型,它所提供的API

21、不能只针对某一个专门的视图或控制器,应该更一般化以适应不同客户的需求。视图:视图将模型的当前状态展示给用户,具体的显示方法由视图负责,因此一个模型可以适用多个不同的视图。在模型状态改变后,通过模型和视图之间的协议,视图得知这种改变并修改自己的显示。对于用户的输入,视图将它们交给控制器处理。控制器:控制器负责交互和将用户输入的数据导入模型,它还利用用户的输入将应用转向其他视图。一些非持久的临时数据也应该在视图中存取。采用MVC的好处显示、逻辑和数据分开,这样一方面的改变不会影响另一方面。更新视图:如原来用的是CLI (Command Line Interface)的,后来要改成GUI,只要了解原

22、来的模型和控制器的接口,然后构造GUI,把它按过去的协议和模型关联起来就可以了,这样做增加了组件的重用性和灵活性。复用视图:假设针对某个模型数据开发了一套View,那么在其他访问该模型数据的地方,完全可以再次使用该套件或将现在的View组合成一个复合视图。每个单视图有自己和模型的连接协议和自己的响应控制器,这样开发就仅仅变成了简单的组合。更新控制器:以在不更改视图显示的情况下,更改控制器,以达到更改视图与用户交互的响应模式的目的。广州市品高软件开发有限公司31基于MVC设计模式的WEB应用框架将普通三层架构的表示层细分成视图格式层和表 示控制逻辑层。表示层涉及基于“瘦客户”技术的用户视图格式服务器端表示和相应的交互式控制逻辑。视图格式层,只保留了构建客户端用户视图必要的显示格式 和事件触发;而在表示控制逻辑层则如名称所描述的那样,实现了人机交互所需控制逻辑和部分业务会话逻辑,再加上贯穿所有系统逻辑层的业务实体,则构成了以 MVC模式为核心的表示

温馨提示

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

评论

0/150

提交评论