设计理念
1. DDD架构演进
1.1 DDD依赖倒置架构
Vernon在它的《实现领域驱动设计》一书中提到了采用依赖倒置原则改进的方案。
所谓的依赖倒置原则指的是:高层模块不应该依赖于低层模块,两者都应该依赖于抽象,抽象不应该依赖于细节,细节应该依赖于抽象。

从图中可以看到,基础设施层位于其他所有层的上方,接口定义在其它层,基础实施实现这些接口。依赖原则的定义在DDD设计中可以改述为:领域层等其他层不应该依赖于基础设施层,两者都应该依赖于抽象,具体落地的时候,这些抽象的接口定义放在了领域层等下方层中。这也就是意味着一个重要的落地指导原则: 所有依赖基础实施实现的抽象接口,都应该定义在领域层或应用层中。
采用依赖倒置原则改进DDD分层架构除了上面说的DIP的好处外,还有什么好处吗?其实这种分层结构更加地高内聚低耦合。每一层只依赖于抽象,因为具体的实现在基础设施层,无需关心。只要抽象不变,就无需改动那一层,实现如果需要改变,只需要修改基础设施层就可以了。
1.2 SIDE-EFFECT-FREE模式和CQRS架构
SIDE-EFFECT-FREE模式被称为无副作用模式,熟悉函数时编程的朋友都知道,严格的函数就是一个无副作用的函数,对于一个给定的输入,总是返回固定的结果,通常查询功能就是一个函数,命令功能就不是一个函数,它通常会执行某些修改。
在DDD架构中,通常会将查询和命令操作分开,我们称之为CQRS(命令查询的责任分离Command Query Responsibility Segregation

本文探讨了DDD架构的设计理念,包括依赖倒置原则在DDD中的应用,SIDE-EFFECT-FREE模式与CQRS架构的关系,以及如何在实践中落地DDD+CQRS的对称性架构。文章详细阐述了各层之间的职责划分,如基础设施层、应用层、领域层和查询层,并介绍了共享数据和服务模块的重要性。
最低0.47元/天 解锁文章
2326

被折叠的 条评论
为什么被折叠?



