DDD代码分层架构

DDD四层架构

1、用户接口层:负责用户显示信息和接受用户的指令,包含:用户、程序、自动化测试、批处理等

2、应用层:理论上不应该有业务规则或逻辑,主要面向用例和流程相关的操作,由于领域层之上,所以包含了多个聚合,可以协调多个聚合服务和领域对象完成服务编排和组合。负责处理业务用例的执行顺序和结果的拼装,例如:安全认证,权限校验,事务控制,发送或者订阅领域事件

3、领域层:领域层主要体现领域模型的业务能力,用来表达业务概念,业务状态和业务规则。

4、基础层:贯穿所有层,采用依赖倒置设计为其他层提供通用的技术和基础服务,包括:工具,驱动,消息中间件,网关,文件,数据库持久化。

DDD代码分层架构_第1张图片

 

原则

每层只能与其下方的层发生耦合

 

微服务架构的演进

以聚合为基础单元,完成领域模型和微服务的架构演进,聚合可以作为一个整体,在不同的领域模型之间重组或拆分,或者直接把一个聚合独立为一个微服务。

 

架构模型分类

1、整洁架构

最外用户层 -> 应用服务层 -> 领域服务层 -> 领域模型

DDD代码分层架构_第2张图片

 

2、六边形架构

通过接口与外部进行交互的

最外层用户 -> 适配器 -> 应用层 ->领域服务层

DDD代码分层架构_第3张图片

 

3、与DDD四层架构比较

原则都是高内聚,低耦合。

3.1大致上都分了两层

  • 领域层实现面向领域模型,实现领域模型的核心业务逻辑,属于原子模型,需要保持领域模型和业务逻辑的稳定,对外提供稳定的相对细颗粒度的领域服务。
  • 应用层实现面向用户的相关用例和流程。对外提供粗粒度的API服务。对前台应用和领域层进行适配,接受前台请求,可随时做出响应和调整。

3.2合理分层的优势

  • 不要把领域无关的逻辑放在领域层实现,保证领域层的纯洁稳定
  • 也不要把领域层的逻辑放在应用层,会导致应用层过于庞大,最终导致领域模型失焦
  • 若不能保证上述两点,则可引入防腐层,进行新老系统的适配和转换,过渡完成后,废弃防腐层代码
  • 通过分层的方式来控制需求的变化从外到里对系统的影响,收到的需求的影响会越来越小,面对用户端可以快速在应用层调整,对服务和聚合进行组合和编排达到快速适配的效果。

 

 

你可能感兴趣的:(领域驱动设计DDD)