系统架构师学习笔记_第十六章_连载
第十六章 层次式架构设计
16.1 体系结构设计
整个软件系统结构的设计与规格说明 比算法选择和计算问题的数据结构 更为重要。
因此,代码级别的软件复用已经远远不能满足大型软件开发的需求。
软件体系结构可定义为:为软件系统提供了 结构、行为、属性 的高级抽象,由构成系统的元素描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。
不仅指定了系统的组织结构和拓扑结构,并且显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理,是构建于软件系统之上的系统级复用。
软件体系结构贯穿于软件研发的整个生命周期,具有重要的影响,主要从以下三个方面进行考察:
1、利益相关人员之间的交流。
2、系统设计的前期决策。
3、可传递的系统级抽象。这种模型可以在多个系统之间传递,应用到具有相似质量属性和功能需求的系统中,并能够促进大规模软件的系统级复用。
分层设计是一种常见的架构设计方法,能有效地使 设计 简化,清晰,便于提高复用能力和产品维护能力。
16.2 表现层框架设计
16.2.1 使用MVC模式设计表现层
MVC强制性地把 输入、处理、输出 流程 按照 视图、控制、模型 的方式进行分离,形成了 控制器、模型、视图 三个核心模块。
1、控制器(Conrtrtollert):接受用户的输入 并调用模型和视图去完成用户的需求。是用户界面与Model的接口。
2、模型(Model):业务数据和业务逻辑,为多个视图提供数据。
3、视图(View):用户看到并与之交互的界面,不进行任何实际的业务处理,能接受模型发出的数据更新事件。
使用MVC模式来设计表现层,可以有以下优点:
1、允许多种用户界面的扩展,视图与模型没有必然的联系。
2、易于扩展。
3、功能强大的用户界面。
将业务处理与显示分离,增加了应用的可拓展性、强壮性、灵活性。
目前比较先进的web应用框架都是基于MVC设计模式的。
16.2.2 使用 XML 设计表现层,统一 Web Form 与 Windows Form 的外观
XML 标记用于定义数据本身的结构和数据类型,很少采用 XML 作为表现技术。
GUI 主要是由 GUI 空间组成,包含位置信息、类型、绑定事件 等。
可以被描述成一个 XML 节点,而控件的那些相关属性都可以描述成 这个 XML 节点的 Attribute。
由于 XML 本身就是一种树形结构描述语言,所以可以很好地支持控件之间的层次结构。
在调用显示 GUI 时,不是直接的调用特定的表现技术的 API,而是 装载 GUI 对应的 XML 配置文件,然后根据特定的 表现技术 的 解析器 解析 XML,得到 GUI 视图实例对象。
16.2.3 表现层中的 UIP设计思想
UIP(User Interface Process Application Block)提供了一个扩展的框架,用于简化用户界面与商业逻辑代码的分离的方法。
将概念上的用户交互流程从实现或者涉及的设备上分离出来,保持内部的事务关联状态。
16.2.4 表现层动态生成设计思想
基于 XML 界面管理技术,包括 界面配置、界面动态生成、界面定制 三部分。
基于 XML 的界面管理技术 实现了用户界面描述信息与功能实现代码的分离,可针对不同用户需求进行界面配置和定制,只需对 XML 文件稍加修改,即可实现系统的移植。
16.3 中间层架构设计
16.3.1 业务逻辑层组件设计
业务逻辑组件分为 接口、实现类 两个部分。
通常按模块来设计业务逻辑组件,每个模块设计一个业务逻辑组件,控制器无需与具体的业务逻辑组件耦合,而是面向接口编程。
16.3.2 业务逻辑层工作流设计
工作流管理联盟(Workflow Management Coalition)将工作流定义为:
业务流程的全部或部分自动化,在此过程中,文档、信息、任务 按照一定的过程规则流转,实现组织成员间的协调工作以达到业务的整体目标。
1、Interface 1:过程定义 导入/导出 接口。转换格式 和 API 调用,从而支持过程定义信息间的互相转换。
2、Interface 2:客户端应用程序接口。通过这个接口工作流机可以与任务表处理器交换,代表用户资源来组织任务,然后由任务表处理器负责,从任务表中选择、推行任务项。
3、Interface 3:应用程序调用接口。允许工作流机直接激活一个应用程序,来执行一个活动。
4、Interface 4:工作流机协作接口。定义相关标准,以使不同开发商的工作流系统产品互相间能够进行无缝的任务项传递。
5、Interface 5:管理和监视接口。用户管理、角色管理、审查管理、资源控制、过程管理、过程状态处理器 等。
用工作流的思想组织业务逻辑,优点是:将应用逻辑与过程逻辑分离。
16.3.3 业务逻辑实体设计
业务逻辑层实体 提供对业务数据及相关功能的状态编程访问。
可以使用具有复杂架构的数据来创建,通常来自数据库的多个相关表。
业务逻辑层实体不直接访问数据库。
将业务逻辑层实体表示为通用 DataSet 的优点如下:
1、灵活性。
2、序列化。
3、数据绑定。
4、排序、过滤。
5、与 XML 的互换性。
6、开放式并发。
7、可扩展性。
将业务逻辑层实体表示为有类型的 DataSet,有类型的 DataSet 是包含具有严格类型的 方法、属性、类型定义 以公开 DataSet 中的数据和元数据的类。
将业务逻辑层表示为有类型的 DataSet 的优点如下:
1、代码易读。
2、IntelliSense将可用。
3、编译时类型检查。
16.3.4 业务逻辑层框架
业务框架位于系统架构的中间层,是实现系统功能的核心组件。
采用容器的形式,便于系统功能的开发、代码重用、管理。
1、Domain Model 是领域层业务对象,它仅仅包含业务相关的属性。
2、Service 是业务过程实现的的组成部分,是应用程序的不同功能单元,通过在这些服务之间定义良好的接口和契约联系起来。
这种具有中立的接口定义(没有强制绑定到特定的实现上)的特征称为服务之间的松耦合。
3、Control 服务控制器,是服务之间的纽带。
16.4 数据访问层设计(持久层框架设计)
16.4.2 工厂模式在数据访问层应用
做到数据库无关,需要在实际开发过程中将这些数据库访问类再做一次封装,还可以减少操作数据库的步骤。
工厂模式定义了一个用于创建对象的接口,让子类决定实例化哪一个类。
前提是 编写程序时,没有用到特定数据库的特性。
16.4.3 ORM、Hibernate 与 CMP 2.0 设计思想
ORM(Object-Relation Mapping)在关系型数据库和对象之间作一个映射,不需要再去和复杂的 SQL 语句打交道。
ORM 框架 把数据库转变成了 我们熟悉的对象,只需要了解面向对象的开发就可以实现数据库应用程序的开发,不需要浪费时间在 SQL 上。
同时也减少了代码量,减少数据层出错机会。
通过 Cache 的实现,能够对性能进行调优。
16.4.4 灵活运用 Xml Schema
Xml Schema 用来描述 XML 文档合法结构、内容、限制。
逐步替代 DTDs,成为 XML 体系中正式的类型语言。
Xml Schema 是 Schema 组件的集合,这些组件分为三组:基本组件、组件、帮助组件。
基本组建包括简单类型定义、复杂类型定义、属性声明、元素声明。
组件包括属性组、完整性约束定义、模型组、符号声明。
帮助组件包括 注释、模型组、小品词、通配符、属性使用。
Xml Schema 提供了创建 XML 文档的 必要的框架,规范由如下三部分组成:
1、Xml Schema Part 0:Primer。
2、Xml Schema Part 1:Structures。
3、Xml Schema Part 2:Datatypes。
Xml Schema支持继承。
16.4.5 事务处理设计
事务是现代数据库理论中的核心概念之一。
原子性(Atomicity)。
一致性(Consistency)。
隔离性(Isolation)。
持久性(Durability)。
事务要尽可能短的时间内完成。
16.4.6 连接对象管理设计
JDBC 的数据库应用开发中,数据库连接的管理是一个难点,因为它是决定该应用性能的一个重要因素。
资源池,解决资源频繁分配、释放 所造成的问题。
第一步就是要建立一个静态的连接池,所谓静态,是指池中的连接是在系统初始化时就分配好的,并且不能够随意关闭。
16.4.5 数据架构规划设计
XML 文档的存储方式有两种:基于文件的存储方式、数据库存储方式。