架构设计原则 - 整洁架构

参考资料

好的架构特点

  • 分离关注点
  • 可测试
  • 独立于用户接口
  • 独立于数据库
  • 独立于编程框架

Clean-Architecture

分层解析

Clean-Architecture-Cone

软件分层 * 最内心:“企业/关键业务规则”-实体 * 外一层:“应用程序业务规则”-用例 * 外一层:“接口适配器”-网关,控制器,演示者 * 最外部:框架和驱动,Web,Ul,外部接口,DB

  • 向内移动,抽象水平和政策增加
  • 最内圈是最通用/最高水平
  • 内圈是政策
  • 外圈是机制
  • 内圈不能依赖外圈
  • 外圈不能影响内圈

整洁架构与六边形对比

整洁架构与六边形对比

站在 MVC 和 EBI 的肩膀上

整洁架构示意图的右下角的这张小图说明了控制流是如何工作的。这张小图并没还有提供太多信息,但博客中的说明和 Robert C. Martin 的会议演讲拓展了该话题。

软件交互

在上图左侧看到的是 MVC 中的视图和控制器。双实线另一层的所有形状都是 MVC 中的模型。这些模型也代表着 EBI (Entity-Boundary-Interactor)架构,六边形架构中的“应用”、洋葱架构中的“应用核心”,以及前面整洁架构示意图中的“实体”层和“用例”层。

假设有一个 HTTP 请求按照控制流到达了控制器。控制器接下来会:

  1. 拆解请求;
  2. 使用相关数据创建一个请求模型;
  3. 执行交互器(作为交互器接口的,即边界的,实例被注入到控制器中)中的方法并将请求模型传递给它;
  4. 交互器会:
    1. 使用实体网关实现(作为实体网关接口的实例被注入到交互器中)查找相关实体;
    2. 编排实体之间的交互;
    3. 用操作的数据结果创建响应模型;
    4. 将响应模型交给展示器进行填充;
    5. 将展示器返回给控制器;
  5. 使用展示器生成视图模型;
  6. 将视图模型绑定到视图;
  7. 将视图返回给客户端。

总结

整洁架构是并不是革命性的,因为它实际上并没有带来突破性的概念或模式。

但是,它仍然有相当重要的成果:

  • 它发掘了某种程度上被遗忘了的概念、规则和模式;
  • 它澄清了一些实用且重要的概念、规则和模式;
  • 它告诉我们如何把所有的概念、规则和模式整合起来,形成一种构建复杂应用并保持可维护性的标准套路