跳到主要内容

建立分层架构

  • 为什么要隔离领域模型
  • DDD 传统四层架构和洋葱(六边形)架构
  • 如何建立分层架构

模型驱动设计和分层架构

  • 严格按照领域模型来编写代码
  • 建模和实现中都有破坏该原则的因素
  • 分层架构能够避免模型在实现过程中被省略或被污染

架构分层是一种古老的技术传统

image-20240117231713982

在围绕数据进行编码,领域模型其实已经被忽略了。最后,业务代码完全被存储层绑定,业务逻辑和技术实现混杂在一起,领域模型也被技术方案,最后如果我们想替换存储或者改变技术方案,业务代码也需要进行巨大的修改。

传统方式的问题
  1. 领域模型易被忽略,变成贫血模型
  2. 容易演变成基于数据库的设计,一切从表结构开始
  3. 领域模型与技术实现混杂,容易被技术实现绑架

DDD 传统四层架构

image-20240117233820471

  • 接口层主要负责web 通信,包括协议的解析、封装以及消息路由等等。
  • 应用层主要面向的是问题空间,它会指挥领域模型和基础设施来完成用户故事,它的工作包括事务控制、事件订阅以及从资源库读写模型等
  • 领域层就是核心层,包含了领域中的领域模型,实体、领域事件、工厂等等元素。
  • 基础设施层主要包括通用的框架或工具,数据库表以及存储访问

DDD 传统四层架构的缺陷

  • 领域层对基础设施层仍然有感知,领域模型和技术实现耦合。

洋葱架构

image-20240118001357876

  • 保持领域的纯粹性,不受其它因素干扰
  • 便于践行模型驱动设计,代码跟随模型
  • 便于团队精力集中到领域模型。