java设计模式之软件体系结构详解

软件体系结构

  • 引入
  • 软件体系结构基本概念
    • 什么是构件?
    • 经典的体系结构风格
  • 常用软件体系结构
    • CS结构
      • CS结构的优点
      • CS结构的缺点
    • 三层CS结构
      • 三层CS结构的优点
      • 三层CS结构的缺点
    • BS结构
      • BS结构的优点
      • BS结构的缺点
    • 异构结构风格
    • 特定领域的软件体系结构

引入

书接上回,我们简单说了一下什么是软件体系结构,如果只是针对考试,只需知道常用的软件体系结构和他们的特点,按照题目的要求分析采用了什么体系结构就可以了,一般是考CS、三层CS、BS结构这三个。

软件体系结构基本概念

  • 软件体系结构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的描述以及模式的约束组成。
    软件体系结构不仅指定了系统的组织结构和拓扑结构,并且显示了系统需求和构成系统的元素之间的对应关系
  • 设计模式是从许多优秀的软件系统中总结出的成功的可复用的设计方案
  • 软件框架是在给定问题领域范围内建立起可重用解决设计问题而互相间协作的一组类的集合

什么是构件?

构件是指语义完整、语法正确和有可重用价值的单位软件,是软件重用过程中可以明确辨识的系统;结构上,它是语义描述、通讯接口和实现代码的复合体。
(说人话就是一个可以单独拿出来复用的代码包)

经典的体系结构风格

  • 数据流风格:批处理序列;管道/过滤器。

    • 优点:
      ◎ 使得软构件具有良好的隐蔽性和高内聚、低耦合的特点;
      ◎ 允许设计者将整个系统的输入/输出行为看成是多个过滤器的行为的简单合成;
      ◎ 支持软件重用。只要提供适合在两个过滤器之间传送的数据,任何两个过滤器都可被连接起来;
      ◎ 系统维护和增强系统性能简单。新的过滤器可以添加到现有系统中来;旧的可以被改进的过滤器替换掉;
      ◎ 允许对一些如吞吐量、死锁等属性的分析;
      ◎ 支持并行执行。每个过滤器是作为一个单独的任务完成,因此可与其它任务并行执行。
    • 缺点:
      ◎ 通常导致进程成为批处理的结构。这是因为虽然过滤器可增量式地处理数据,但它们是独立的,所以设计者必须将每个过滤器看成一个完整的从输入到输出的转换;
      ◎ 不适合处理交互的应用。当需要增量地显示改变时,这个问题尤为严重;
      ◎ 因为在数据传输上没有通用的标准,每个过滤器都增加了解析和合成数据的工作,这样就导致了系统性能下降,并增加了编写过滤器的复杂性。
  • 调用/返回风格:主程序/子程序;面向对象风格;层次结构。

    • 优点:
      ◎ 因为对象对其它对象隐藏它的表示,所以可以改变一个对象的表示,而不影响其它的对象;
      ◎ 设计者可将一些数据存取操作的问题分解成一些交互的代理程序的集合。
    • 缺点:
      ◎ 为了使一个对象和另一个对象通过过程调用等进行交互,必须知道对象的标识。只要一个对象的标识改变了,就必须修改所有其他明确调用它的对象;
      ◎ 必须修改所有显式调用它的其它对象,并消除由此带来的一些副作用。例如,如果A使用了对象B,C也使用了对象B,那么,C对B的使用所造成的对A的影响可能是料想不到的。
  • 独立构件风格:进程通讯;事件系统。

  • 分层系统风格

    • 优点:
      ◎ 支持基于抽象程度递增的系统设计,使设计者可以把一个复杂系统按递增的步骤进行分解;
      ◎ 支持功能增强,因为每一层至多和相邻的上下层交互,因此功能的改变最多影响相邻的上下层;
      ◎ 支持重用。只要提供的服务接口定义不变,同一层的不同实现可以交换使用。这样,就可以定义一组标准的接口,而允许各种不同的实现方法。
    • 缺点:
      ◎ 并不是每个系统都可以很容易地划分为分层的模式,甚至即使一个系统的逻辑结构是层次化的,出于对系统性能的考虑,系统设计师不得不把一些低级或高级的功能综合起来;
      ◎ 很难找到一个合适的、正确的层次抽象方法。

常用软件体系结构

软件总是有体系结构的,不存在没有体系结构的软件。
现在我们讲的常用的软件体系结构风格都是分层系统,允许将一个复杂问题分解成一个增量步骤序列的实现。由于每一层最多只影响两层,同时只要给相邻层提供相同的接口,允许每层用不同的方法实现,同样为软件重用提供了强大的支持。

CS结构

客户端:表示层、一部分业务处理、服务器的通讯
服务器端:数据层、一部分业务处理、和客户端的通讯
java设计模式之软件体系结构详解_第1张图片

CS结构的优点

◎ C/S 体系结构具有强大的数据操作和事务处理能力,模型思想简单,易于人们理解和接受。

◎ 系统的客户应用程序和服务器构件分别运行在不同的计算机上,系统中每台服务器都可以适合各构件的要求,这对于硬件和软件的变化显示出极大的适应性和灵活性,而且易于对系统进行扩充和缩小。

◎ 在C/S体系结构中,系统中的功能构件充分隔离,客户应用程序的开发集中于数据的显示和分析,而数据库服务器的开发则集中于数据的管理,不必在每一个新的应用程序中都要对一个DBMS进行编码。将大的应用处理任务分布到许多通过网络连接的低成本计算机上,以节约大量费用。

CS结构的缺点

◎ 开发成本较高

◎ 客户端程序设计复杂

◎ 信息内容和形式单一

◎ 用户界面风格不一,使用繁杂,不利于推广使用

◎ 软件移植困难

◎ 软件维护和升级困难

◎ 新技术不能轻易应用

三层CS结构

客户端:表示层、应用服务器的通讯
应用服务器端:功能层、业务处理
服务器端:数据层、和客户端的通讯

比两层的CS的好处:将业务处理的功能模块独立出来,让每一层的功能更加明显

java设计模式之软件体系结构详解_第2张图片

三层CS结构的优点

◎ 允许合理地划分三层结构的功能,使之在逻辑上保持相对独立性,能提高系统和软件的可维护性和可扩展性。

◎ 允许更灵活有效地选用相应的平台和硬件系统,使之在处理负荷能力上与处理特性上分别适应于结构清晰的三层;并且这些平台和各个组成部分可以具有良好的可升级性和开放性。

◎ 应用的各层可以并行开发,可以选择各自最适合的开发语言。

◎ 利用功能层有效地隔离开表示层与数据层,未授权的用户难以绕过功能层而利用数据库工具或黑客手段去非法地访问数据层,为严格的安全管理奠定了坚实的基础。

三层CS结构的缺点

◎ 三层C/S结构各层间的通信效率若不高,即使分配给各层的硬件能力很强,其作为整体来说也达不到所要求的性能。

◎ 设计时必须慎重考虑三层间的通信方法、通信频度及数据量。这和提高各层的独立性一样是三层C/S结构的关键问题。

BS结构

主要角色:浏览器;Web服务器;数据库服务器;
java设计模式之软件体系结构详解_第3张图片

BS结构的优点

◎ 基于B/S体系结构的软件,系统安装、修改和维护全在服务器端解决。用户在使用系统时,仅仅需要一个浏览器就可运行全部的模块,真正达到了“零客户端”的功能,很容易在运行时自动升级。

◎ B/S体系结构还提供了异种机、异种网、异种应用服务的联机、联网、统一服务的最现实的开放性基础。

BS结构的缺点

◎ B/S体系结构缺乏对动态页面的支持能力,没有集成有效的数据库处理功能。

◎ B/S体系结构的系统扩展能力差,安全性难以控制。

◎ 采用B/S体系结构的应用系统,在数据查询等响应速度上,要远远地低于C/S体系结构。(现在又ajax技术之后这个问题得到了缓解但是还是比不上CS结构,就像大型游戏现在你不能指望它能在浏览器上跑,数据计算量太大的目前还是需要客户机)

◎ B/S体系结构的数据提交一般以页面为单位,数据的动态交互性不强,不利于在线事务处理(OLTP)应用

异构结构风格

这个就是不同的体系结构杂糅而成,例如:
java设计模式之软件体系结构详解_第4张图片
java设计模式之软件体系结构详解_第5张图片
在不同的网络环境下或者不同的业务场景中使用最佳的解决方案,一般来说对于企业外部需要Web通讯时就开发一套BS系统,对于企业内部需要数据处理效率的就开发一套CS系统,两者并不冲突。

特定领域的软件体系结构

DSSA就是专用于一类特定类型的任务(领域)的、在整个领域中能有效地使用的、为成功构造应用系统限定了标准的组合结构的软件构件的集合。

现在随着软件领域的不断扩展,一些针对单一领域的软件体系结构和框架就越来越多了,常见的有MVC结构、MOP结构等,这个大家学习具体框架的时候就知道它是用的什么样的体系结构。
例如

  • Spring就为构建Web应用提供了一个功能全面的MVC框架;
  • Vue框架就属于MVC体系结构的视图层,是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。

从这两个框架大家就能看出区别,大型框架可能是包括多个体系结构的设计,而体系结构的每个部分又有多种小型框架来支撑,每种框架都有各自的优缺点,抛开业务谈框架就是耍流氓,我们要学习适合自己业务的框架。

你可能感兴趣的:(设计模式,java,设计模式,开发语言)