软件架构风格与信息系统架构
软件体系结构设计的一个核心目标是重复的体系结构模式,即达到系统结构级的软件重用。软件体系结构风格描述是描述某一特定应用领域中系统组织方式和惯用模式。例如,如果某人将系统描述为“客户端/服务器模式”,那么不必给出设计细节,其他人就能立刻明白系统是如何组织和工作的。
- 数据流体系结构风格
- 批处理体系结构风格
- 管道-过滤器体系结构风格
- 调用/返回体系结构风格
- 主程序/子程序风格
- 面向对象体系结构风格
- 层次型体系结构风格
- 客户机/服务器体系结构风格
- 二层C/S
- 三层C/S
- 以数据为中心的体系结构风格
- 仓库体系结构风格
- 超文本体系结构风格
- 黑板体系结构风格
- 虚拟机体系结构风格
- 解释器体系结构风格
- 规则系统体系结构风格
- 独立构件体系结构风格
- 进程通信体系结构风格
- 事件系统体系结构风格
数据流体系结构风格
数据流体系结构没有概念上的程序计数器:指令的可执行性和执行仅基于指令输入参数的可用性来决定,因此,指令执行的顺序是不可预测的,即行为是不确定的。
数据流体系结构风格主要包括批处理风格和管道-过滤器风格。
批处理体系结构风格
批处理体系中,每个处理步骤是一个单独的程序,每一步必须在前一步结束后才能开始,并且数据必须是完整的,以整体的方式传递。
批处理体系的基本构件是独立的应用程序,连接件是某种类型的媒介。连接件定义了相应的数据流图,表达拓扑结构。
管道-过滤器体系结构风格
数据源源不断产生,系统需要对这些数据进行若干处理(分析、计算、转换等)。现有的解决方案是将系统分解为几个连续的处理步骤,步骤之间通过数据流连接,一个步骤的输出是另一个步骤的输入。
每个步骤由一个过滤器(Filter)实现,处理步骤之间的数据传输由管道(Pipe)负责。
管道-过滤器风格的基本构件是过滤器,连接件是数据传输管道。
调用/返回体系结构风格
调用/返回风格是指在系统中采用了调用与返回机制。主要思想是分而治之,将一个大系统分解为若干子系统,以便降低复杂度,增加可修改性。
调用/返回体系结构风格主要包括主程序/子程序风格、面向对象风格、层次型风格以及客户端/服务器风格。
主程序/子程序风格
主程序/子程序风格一般采用单线程控制,将问题划分为若干处理步骤,构件为主程序和子程序,过程调用作为交互机制,充当连接件。
面向对象体系结构风格
数据的表示方法和他们相应的操作封装在一个数据类型或对象中。这种风格的构建是对象,或者说是抽象数据类型的实例。
层次型体系结构风格
层次系统组成一个层次结构,每一层为上层提供服务,同时作为下层的客户。
由于每一层只影响两层,同时只要给相邻层提供相同的接口,允许每层用不同的方法实现,为软件重用提供了强大的支持。
客户机/服务器体系结构风格
- 两层C/S体系结构(胖客户端,瘦服务器)
表示层和业务逻辑层都由客户端处理,数据存储层交由服务器处理。
- 三层C/S体系结构(瘦客户端)
与二层相比,三层C/S结构增加了应用服务器,将业务逻辑交由应用服务器处理,客户端只需要处理表示层。
以数据为中心的体系结构风格
以数据为中心的体系结构风格主要包括仓库体系结构风格和黑板体系结构风格。
仓库体系结构风格
仓库(Repository)是存储和维护数据的中心场所。
仓库结构的两种构件:中央数据结构、对数据进行操作的独立构件
连接件:仓库与独立构件之间的交互。
黑板体系结构风格
黑板体系结构风格适用于解决复杂的非结构化问题,是一种问题求解模型。黑板体系结构的组成部分包括:知识源、黑板(共享数据)、内存/直接存取、计算。
黑板系统的传统应用是信号处理领域,如语音识别和模式识别。
虚拟机体系结构风格
虚拟机体系结构风格的基本思想是人为构建一个运行环境,在这个环境上可以解析和运行一些自定义语言,增加架构的灵活性。
主要包括解释器风格和规则系统风格。
解释器体系结构风格
一个解释器通常包括:
- 解释引擎,用于完成解释工作
- 存储区,存储将要被解释的代码
- 数据结构1,记录解释引擎当前工作状态
- 数据结构2,记录源代码被解释执行的进度
运用示例:专家系统
缺点:执行效率较低
规则系统体系结构风格
基于规则的系统包括规则集、规则解释器、规则/数据选择器、工作内存。
独立构件体系结构风格
独立构件风格主要强调系统中每个构件都是相对独立的个体,它们之间不直接通信,以降低耦合度,提升灵活性。
主要包括:进程通信、事件系统风格
进程通信体系结构风格
构件:独立的过程
连接件:消息传递
消息传递方式:点到点、异步/同步、远程过程调用等
事件系统体系结构风格
事件系统风格基于事件的隐式调用风格的思想,构件不直接调用一个过程,而是触发或广播一个或多个事件。
基于事件的隐式调用风格的主要特点是事件的触发者并不知道哪些构件会被这些事件影响。因此不能假定构件的处理顺序,甚至不知道哪些过程会被调用,因此许多隐式调用的系统也包含显式调用作为构件交互的补充形式。
信息系统常用架构模型
- 单体应用
- 客户机/服务器
- 二层C/S
- 三层C/S和B/S
- 多层C/S和B/S:
前台客户端
<=>Web服务器
<=>中间件/应用层
<=>数据库
- 面向服务架构(SOA)
SOA借助消息中间件、交易中间件等实现,服务是指能提供一组整体功能的独立应用系统。
最流行的SOA模型Web Services,服务之间通过消息机制和远程过程调用(RPC)交互。 - 企业服务总线(ESB)和企业数据总线(EDB)
企业总线是企业应用间信息交换的公共通道,特征:- 连接软件系统,主要提供服务代理功能和服务注册表
- 按照协议消息头进行数据、请求、回复的接收和分发
- 可以基于消息中间件、事务中间件、CORBA/IIOP协议开发构建