EBI、DDD及其演变架构史( 二 )


EBI、DDD及其演变架构史

文章插图
核心:
  1. 左侧: 代表 UI 的适配器被称为主适配器,它们发起了对应用的一些操作,端口(应用层API)和它的具体实现(controller实现)都在应用内部 。
  2. 右侧: 表示和后端工具链接的适配器,被称为从适配器,它们只会对主适配器的操作作出响应,端口在应用内部(业务接口),具体实现(impl)在应用之外 。
优点:
  1. 业务应用和实现(技术)隔离 。(面向接口编程)
  2. 方便测试 。(基于接口)
2.4 洋葱架构(2008)2008 年 Jeffrey Palermo 提出了洋葱架构 。在我看来,它在端口和适配器架构的基础上贯彻了将领域放在应用中心,将传达机制(UI)和系统使用的基础设施(ORM、搜索引擎、第三方 API...)放在外围的思路 。洋葱架构在业务逻辑中加入了一些在“领域驱动设计”中被识别出来的层次 。如下图:
EBI、DDD及其演变架构史

文章插图
核心:
  • 围绕独立的对象模型构建应用 。
  • 内层定义接口,外层实现接口 。
  • 依赖的方向指向圆心 。
  • 所有的应用代码可以独立于基础设施编译和运行 。
优点:
  • 职责分离更彻底,高内聚低耦合 。
  • 更好的可测试性和可维护性 。
2.5 整洁架构(2012)Robert C. Martin(Uncle Bob)于2012年发表了整洁架构 。这套架构是站在巨人的肩膀上,把MVC、EBI、端口适配器、洋葱架构、DDD融会贯通,形成了一套落地实践方案 。
EBI、DDD及其演变架构史

文章插图
四层模型:
  • Enterprise Business Rules  企业级业务规则层:核心业务内聚(对应DDD的领域服务+领域实体) 。
  • Application Business Rules 应用级业务规则层:应用层业务编排 。
  • Interface Adapters              接口适配层:数据转化 。
  • Frameworks & Drivers        框架和驱动层:底层实现和数据库等驱动 。
Robert C. Martin有一份落地细节图,如下:
EBI、DDD及其演变架构史

文章插图
核心:
  • 前端(左边)就是MVPVM架构(MVC的一种最贴合现代的延伸架构)
  • 后端(右边)是EBI架构(Entity-Boundary-Interactor)
优点:
  • 它告诉我们如何把所有的概念、规则和模式整合起来,形成一种标准实现套路 。
三、总结纵观EBI架构、DDD领域驱动设计、端口适配器架构、洋葱架构、整洁架构 。完全没有冲突,就是领域设计的完美落地历史 。一张图归纳之:
EBI、DDD及其演变架构史

文章插图
==========参考===============
https://www.jianshu.com/p/d3e8b9ac097b
https://herbertograca.com/2017/11/16/explicit-architecture-01-ddd-hexagonal-onion-clean-cqrs-how-i-put-it-all-together/2008 – Jeffrey Palermo – The Onion Architecture: part 1
2008 – Jeffrey Palermo – The Onion Architecture: part 2
2008 – Jeffrey Palermo – The Onion Architecture: part 3
2013 – Jeffrey Palermo – The Onion Architecture: part 4 – After Four Years
https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html
【EBI、DDD及其演变架构史】

经验总结扩展阅读