软件体系结构风格复习总结

1、软件体系结构风格概述

软件体系结构风格是人们从大量实际的软件案例中提炼出来可以服用的架构层面解决的方案。

2、数据流风格

2.1原理与结构

数据流风格基本构件:处理
连接件:数据流

特点: 高并发,实时性。
例子:
1、编译器:

2.3、数据流风格子风格2:批处理风格

基本构件:独立的应用程序
连接件:某种类型的介质
特点:并发性差,延迟高

工作原理: 每一步处理都是独立的并且每一步都是顺序执行,只有在前一步结束后才能开始下一步的处理并且数据必须是完整的,以整体的方式来传递。
案例:
基于Eclipse的代码重复检测工具

与之形成对立的可以参考管道-过滤器风格,过滤器无需知道其他过滤器的任何信息

4、独立构件风格

4.1、进程通信体系结构风格

构件:独立的进程
连接件:消息传递

典型案例: 客户-服务器架构,其中服务器通常用来为一个或多个客户端提供数据服务,客户端则用来向服务器发出请求,针对这些请求服务器通过同步或异步方式进行请求响应。

4.2、基于事件的隐式调用风格

构件:对象或者过程
连接件:事件-过程绑定

原理图:

两种策略:
1、没有独立派遣模块的事件管理器
在没有独立派遣模块的事件系统中,每一个模块都被成为:被观察者/观察者,每一个模块都允许其他模块向自己所能发送的某些信息表明兴趣,党某一模块发出某一事件时,它自动将这些时间发布给哪些曾经向自己注册过此事件的模块。

发布-订阅模式: 事件发布者向“主题”发布事件,订阅者向“主题”订阅事件
? 一个事件可以被多个订阅者消费;
? 事件在发送给订阅者之后,并不会马上从topic中删除,topic会在事件过期之后自动将其删除。

松散分层: 松散的分层应用程序放宽了此限制,它允许构件与位于它下面的任意层中的组件进行交互(注意:交互的方向依旧未变)

逻辑层和物理层之间的映射存在如下三种情况:
1对1,即一个逻辑层运行在一个物理层;
1对多,即一个逻辑层运行在多个物理层;
多对1,多个逻辑层运行在一个物理层。

案例: 一个简单的用户信息查询程序三层逻辑架构

5.2、层次风格优缺点

优点:
抽象。 层次风格把系统当作一个抽象整体来看的同时,提供了足够的细节来理解每一层的角色和职责以及层之间的关系。分层使设计者可以把一个复杂系统按自上而下抽象程度递增的步骤进行分解。
隔离。 不需要在设计阶段作有关数据类型、方法、属性和实现的假设,因为这些特性不会跨越层边界暴露。可以对单独的层进行技术升级,通过封装可以减少风险并且使得对整个系统的影响减少到最低程度。
可扩展性。 层次系统每一层最多和上下两层交互,对任一层功能的改变,最多只影响其他两层。
可管理性。核心关注点的分离有助于找到依赖,并将代码组织得更加易于管理。
性能。通过把逻辑层分布到多个物理层中,可以提高可伸缩性、容错性(fault tolerance)和性能。
可重用性。每一层提供的功能都是独立的和定义良好的。不同层之间有明确的接口,在解决一个新的问题时,使开发人员更容易地重用一个已有的层。
可测试性。由于有了明确定义的接口,以及可以在层接口的不同实现之间实现按需切换,可测试性明显增强了。
标准化。清晰定义并且广泛接受的抽象层次能够促进实现标准化的任务和接口开发,同样接口的不同实现能够互换使用。
缺点:
并不是每个系统都可以很容易地划分为分层的模式,甚至即使一个系统的逻辑结构是层次化的,出于对系统性能的考虑,系统设计师不得不把一些低级或高级的功能综合起来;
效率的降低:
由分层风格构成的系统,运行效率往往低于整体结构。
在上层中的服务如果有很多依赖于最底层,则相关的数据必须通过一些中间层的若干次转化,才能传到;
很难找到合适的、正确的层次抽象方法:
层数太少,分层不能完全发挥这种风格的可复用性、可修改性和可移植性上的潜力。
层数过多,则引入不必要的复杂性和层间隔离冗余以及层间传输开销。

6、虚拟机风格

注意,虚拟机风格又是也称为解释器风格,解释器系统的核心也是虚拟机。

构件:虚拟机风格包括三个被动数据组件和一个主动组件,他们分别是被解释执行的程序,用于保存程序当前执行状态的数据组件,用于保存当前解释引擎状态的组件,以及虚拟机解释器引擎。也可以记作:存储区和解释引擎。
连接件:过程调用和直接存储访问。

6.1、解释器风格

从功能角度划分,解释器通常由微程序和解释器引擎和存储区,从基本构建角度看,包括模拟解释引擎和存储器
解释器风格的连接可以看做对存储区的数据访问。
解释器有三种策略:传统解释器(纯粹的解释执行),基于字节码的解释器(先编译后解释执行),JIT编译器(西安部分编译后解释执行)

传统解释器:

构件:工作存储区,知识库,规则解释器,规则与数据元素选择器。
连接件:对存储区的数据访问。

核心思想:将业务逻辑中可能频繁发生变化的代码从源代码中分离出来
优点: 降低了修改业务逻辑的成本,缩短了开发时间,将规则外部化,可在多个应用之间共享,对规则的改变将非常迅速并且具有较低的风险

6.3、二者的不同

解释器风格:在高级语言程序源代码和OS/硬件平台之间建立虚拟机环境;
基于规则的系统:在自然语言/XML的规则和高级语言的程序源代码之间建立虚拟机环境。

7、客户机/服务器风格

7.1、胖瘦客户端

胖客户端:客户端执行大部分的数据处理操作
特点:
较低的服务器需求。与瘦客户端对应的服务器相比,胖客户端对应的服务器不需要达到同样高的性能(因为胖客户端自己就可以完成很多业务处理)。因此,可以使用非常便宜的服务器。
离线工作。胖客户端通常不需要和服务器之间维持长久的连接。
更好的多媒体性能。在 络带宽比较敏感的时候,胖客户端更擅长运行丰富的多媒体应用,例如,胖客户端非常适合于电子游戏。
更灵活。在某些个人电脑的操作系统上,软件产品都有它们自己的本地资源。在瘦客户端环境运行这类软件可能比较困难。
充分利用已有设备资源。现在很多人都拥有非常快速的个人电脑,他们已经不需要额外的花费就可以运行胖客户端软件了。
更高的服务器容量。客户端执行的工作越多,服务器所需要的工作就越少,这可以增加服务器支持的用户数量。

瘦客户端:客户端具有很少或没有业务逻辑
特点:
单点故障。服务器承担了大部分的业务处理,安全问题主要集中于服务器,易于维护,但服务器一旦崩溃,所有数据都会丢失。
廉价的客户端硬件。对客户端硬件的内存、硬盘容量以及CPU等要求不高,这也降低了客户端的功耗。
有限的显示性能。瘦客户端往往使用简单的直线、曲线和文字来优化显示性能,或通过缓存的位图数据来进行显示,很难支持复杂的交互式图形操作。

7.2、两层C/S结构

缺点:三层C/S结构各层间的通信效率若不高,即使分配给各层的硬件能力很强,其作为整体来说也达不到所要求的性能。
设计时必须慎重考虑三层间的通信方法、通信频度及数据量,这和提高各层的独立性一样是三层C/S结构的关键问题。——分层风格的固有缺点

7.4、B/S模式

软件体系结构风格复习总结

浏览器/服务器(B/S)是三层C/S风格的一种实现方式
优点: 基于B/S体系结构的软件,系统安装、修改和维护全在服务器端解决,系统维护成本低:
? 客户端无任何业务逻辑,用户在使用系统时,仅仅需要一个浏览器就可运行全部的模块,真正达到了“零客户端”的功能,很容易在运行时自动升级。
? 良好的灵活性和可扩展性:对于环境和应用条件经常变动的情况,只要对业务逻辑层实施相应的改变,就能够达到目的。
? 较好的安全性:在这种结构中,客户应用程序不能直接访问数据,应用服务器不仅可控制哪些数据被改变和被访问,而且还可控制数据的改变和访问方式 。
? 三层模式成为真正意义上的“瘦客户端”,从而具备了很高的稳定性、延展性和执行效率。
? 三层模式可以将服务集中在一起管理,统一服务于户端,从而具备了良好的容错能力和负载平衡能力。

缺点:客户端浏览器一般情况下以同步的请求/响应模式交换数据,每请求一次服务器就要刷新一次页面;
? 受HTTP协议“基于文本的数据交换”的限制,在数据查询等响应速度上,要远远低于C/S体系结构;
? 数据提交一般以页面为单位,数据的动态交互性不强,不利于在线事务处理(OLTP)应用;
? 受限于HTML的表达能力,难以支持复杂GUI (如 表等)

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年1月20日
下一篇 2022年1月20日

相关推荐