1. 架构设计的一个核心问题是能否达到架构级的软件复用
2. 架构风格反映了领域中众多系统所共有搭档结构和语义特性,并指导如何将各个构件有效地组织成一个完整的系统
3. 架构风格定义了用于描述系统的术语表和一组指导构建系统的规则
1. 数据流风格
1) 批处理序列:构件为一系列固定顺序的计算单元,构件之间只通过数据传递交互。每个处理步骤是一个独立程序,每一步必须在其前一步结束后才能开始,数据必须是完整的,以整体搭档方式传递。
2) 管道-过滤器:每个构建都有一组输入和输出,构建读输入的数据流,经过内部处理,然后产生输出数据流。这个过程通常是通过对输入数据流的变换或计算来完成的,包括通过计算和增加信息以丰富数据、通过浓缩和删除以精简数据、通过改变记录方式以传化数据和递增地转化数据等。这里的构建称为过滤器,连接件就是数据流传输的管道,将一个过滤器的输出传到另一个过滤器的输入
3) 编译可以用管道过滤器,是否表明是分步骤一步一步走,数据是否要完整
2. 调用/返回风格
1) 主程序/子程序:单线程控制,把问题划分为若干个处理步骤,构件即为主程序和子程序,子程序通常可合成为模块。过程调用作为交互机制,即充当连接件的角色。调用关系具有层次性,其语义逻辑表现为主程序的正确性取决于它调用的子程序的正确性。
2) 面向对象:显示调用。构件是对象,对象是抽象数据类型的实例。在抽象数据类型中,数据的表示和它们的相应操作被封装起来,对象的行为体现在其接受和请求的动作。连接件即是对象间交互的方式,对象是通过函数和过程的调用来交互的
3) 层次结构:构件组织成一个层次结构,连接件通过决定层间如何交互的协议来定义。每层为上一层提供服务,使用下一层的服务,只能见到与自己邻接的层。通过层次结构,可以将大的问题分解为若干个渐进的小问题逐步解决,可以隐藏问题的复杂度。修改某一层,最多影响其相邻的两层(通常只能影响上层)
3. 独立构建风格
1) 进程通信:独立构件。构件是独立的过程,连接件是消息传递。构件通常是命名过程,消息传递的方式可以是点对点、异步或同步方式,以及远程过程(方法)调用等
2) 事件驱动系统:隐式调用。构件不直接调用一个过程,而是触发或广播一个或多个事件。构件中的过程在一个或多个事件中注册,当某个事件被触发时,系统自动调用在这个事件中注册的所有过程。一个事件的触发就导致了另一个模块中的过程调用。这种风格中的构件是匿名的过程,它们之间交互的连接件往往是以过程之间的隐式调用来实现的。主要优点是为软件复用提供了强大的支持,为构件的维护和演化带来了方便;其缺点是构件放弃了对系统计算的控制
4. 虚拟机风格
1) 解释器:
2) 基于规则的系统:
5. 仓库风格
1) 数据库系统:数据共享。构件主要有两大类,一类是中央共享数据源,保存当前系统的数据状态;另一类是多个独立处理单元,处理单元对数据元素进行操作
2) 黑板系统:包括知识源(数据)、黑板和控制三部分。知识源包括若干独立计算的不同单元,提供解决问题的知识。知识源响应黑板的变化,也只修改黑板;黑板是一个全局数据库,包含问题域解空间的全部状态,是知识源相互作用的唯一媒介;知识源响应是通过黑板状态的变化来控制的。黑板系统通常应用在对于解决问题没有确定性算法的软件中(信号处理,问题规划和编译器优化等)
3) 超文本系统:构件以网状链接方式相互连接,用户可以在构件之间进行按照人类的联想思维方式任意跳转到相关构件。超文本是一种非线性的网状信息组织方法,它以节点为基本单位,链作为节点之间的联想式关联。超文本系统通常应用与互联网领域
6. 两层C/S架构(Customer/Service,胖客户端)
1) 表示层和数据层(服务层,数据库)
2) 开发成本较高
3) 客户端程序设计复杂
4) 信息内容个和形式单一
5) 用户界面风格不一
6) 软件移植困难
7) 软件维护和升级困难
8) 新技术不能轻易应用
7. 三层C/S架构(瘦客户端)
1) 比两层C/S架构多个功能层
2) 功能层放业务逻辑层
3) 各层在逻辑上保持相对独立,整个系统的逻辑结构更为清晰,能提高系统的软件的可维护性和可扩展性
4) 允许另个有效地选用相应的平台和硬件系统,具有良好的可升级性和开放性
5) 各层可以并行开发,各层也可以选择格子最合适的开发语言
6) 功能层有效地隔离表示层与数据层,为严格的安全管理奠定了坚实的基础;整个系统的管理层次也更加合理和可控制
7) 通信效率极差
8. 三层B/S架构(零客户端)
1) B/S架构缺乏对动态页面的支持能力,没有集成有效的数据库处理功能
2) B/S架构安全性难以控制
3) 采用B/S架构的应用系统,在数据查询等响应速度上,要远远低于C/S架构
4) B/S架构数据提交一般以页面为单位,数据的动态交互性不强,不利于OLTP应用
9. 混合架构
10. 富互联网应用(RIA)
1) RIA结合了C/S架构反应速度快、交互性强的优点,以及B/S架构传播范围广及容易传播的特性
2) RIA简化并改进了B/S架构的用户交互
3) 数据能够被缓存在客户端,从而可以实现一个比基于HTML的响应速度更快且数据往返于服务器的次数更少的用户界面
4) AJAX
5) mushup
11. 基于服务的架构(SOA)
1)服务是一种为了满足某项业务需求的操作、规则等的逻辑组合,它包含一系列有序活动的交互,为实现用户目标提供支持
2)所有服务通过服务总线(service bus)或流程管理器来连接服务和提高服务请求的路径
面向服务的架构
单个服务内部结构
3)Web服务实现SOA
4)ESB
ü 提供位置透明性的消息路由和寻址服务
ü 提供服务注册和命名的管理功能
ü 支持多种消息传递范型
ü 支持多种可以广泛使用的传输协议
ü 支持多种数据格式及其相互转换
ü 提供日志和监控功能