架构设计原则 - 整洁架构
参考资料
好的架构特点
- 分离关注点
- 可测试
- 独立于用户接口
- 独立于数据库
- 独立于编程框架
分层解析
软件分层 * 最内心:“企业/关键业务规则”-实体 * 外一层:“应用程序业务规则”-用例 * 外一层:“接口适配器”-网关,控制器,演示者 * 最外部:框架和驱动,Web,Ul,外部接口,DB
- 向内移动,抽象水平和政策增加
- 最内圈是最通用/最高水平
- 内圈是政策
- 外圈是机制
- 内圈不能依赖外圈
- 外圈不能影响内圈
整洁架构与六边形对比
站在 MVC 和 EBI 的肩膀上
整洁架构示意图的右下角的这张小图说明了控制流是如何工作的。这张小图并没还有提供太多信息,但博客中的说明和 Robert C. Martin 的会议演讲拓展了该话题。
在上图左侧看到的是 MVC 中的视图和控制器。双实线另一层的所有形状都是 MVC 中的模型。这些模型也代表着 EBI (Entity-Boundary-Interactor)架构,六边形架构中的“应用”、洋葱架构中的“应用核心”,以及前面整洁架构示意图中的“实体”层和“用例”层。
假设有一个 HTTP 请求按照控制流到达了控制器。控制器接下来会:
- 拆解请求;
- 使用相关数据创建一个请求模型;
- 执行交互器(作为交互器接口的,即边界的,实例被注入到控制器中)中的方法并将请求模型传递给它;
- 交互器会:
- 使用实体网关实现(作为实体网关接口的实例被注入到交互器中)查找相关实体;
- 编排实体之间的交互;
- 用操作的数据结果创建响应模型;
- 将响应模型交给展示器进行填充;
- 将展示器返回给控制器;
- 使用展示器生成视图模型;
- 将视图模型绑定到视图;
- 将视图返回给客户端。
总结
整洁架构是并不是革命性的,因为它实际上并没有带来突破性的概念或模式。
但是,它仍然有相当重要的成果:
- 它发掘了某种程度上被遗忘了的概念、规则和模式;
- 它澄清了一些实用且重要的概念、规则和模式;
- 它告诉我们如何把所有的概念、规则和模式整合起来,形成一种构建复杂应用并保持可维护性的标准套路