前面七章节介绍了系统的一个方面并探讨了处理它的几种选择,现在我们需要把所有方面放到一起通盘考虑,在设计企业应用时,要使用哪些模式。
本章内容主要是对全书中所涉及模式的一个初步介绍和认识。在架构中要对几个方面做研究:
- 极限编程(beck XP)
- 持续集成(Fowler CI)
- 测试驱动的开发(beck TDD)
- 重构(Fowler refactoring)
从领域层开始
这个过程可以从决定领域逻辑方法开始,主要有三种可选
- 事务脚本(最简单,对事务逻辑都很好地封装在功能完善的脚本中)
- 表模块(折中)
- 领域模型(最难,面临的问题异常复杂时,选用)
深入到数据层
一旦选择了领域层,就必须决定如何与数据源进行联系。
事务脚本的数据源
两个模式可选:行数据入口和表数据入口
表模块的数据源
表模式有一个好的记录集框架,同时有表数据入口与之配置良好。
领域模型的数据源
简单的领域模型,使用活动记录即可,也可使用表数据入口或者行数据入口。
复杂的领域模型,使用数据映射器。确保领域模型与其他各层独立。
表现层
表现层与后面领域逻辑层分离。
其他分层方式
- Brown分层模型
Brown | Fowler |
表现层 | 表现层 |
控制层/中介层 | 表现层(应用控制器) |
领域层 | 领域层 |
数据映射层 | 数据源层(数据映射器) |
数据源层 | 数据源层 |
-
Core J2EE 分层模型
Core J2EE | Fowler |
客户层 | 运行于客户端的表现层 |
表现层 | 运行于服务器端的表现层 |
业务层 | 领域层 |
集成层 | 数据源层 |
资源层 | 与数据源层通信的外部资源 |
- Microsoft DNA 分层模型
Microsoft DNA | Fowler |
表现层 | 表现层 |
业务层 | 领域层 |
数据访问层 | 数据源层 |
- Marinescu分层模型
Marinescu | Fowler |
表现层 | 表现层 |
应用层 | 表现层(应用控制器) |
服务层 | 领域层(服务层) |
领域层 | 领域层(领域模型) |
持久层 | 数据源层 |
-
Nilsson 分层模型
Nilsson | Fowler |
顾客层 | 表现层 |
顾客帮助层 | 表现层(应用控制器) |
应用层 | 领域层(服务层) |
领域层 | 领域层(领域模型) |
持久访问层 | 数据源层 |
公共存储过程层 | 数据源层 |
私有存储过程层 | 数据源层 |