首页 > 资讯 > 正文
DDD领域驱动设计
来源:网络 阅读量:


DDD是一种自底向上的设计,非常适合企业级产品的团队开发,因为企业级产品绝大多数都是围绕着明确的领域数据来实现功能,而且DDD有很多好的实践与模式帮助解决很多开发过程中常见的问题。
 
面向对象设计是一种自顶向下的设计,更普适一点,更难掌握一点,很难归纳出有明确的步骤指导解决某一类问题,正如《面向对象分析与设计》中说的一样,在很多情况下,完成详细设计后,识别Entity也是其中的一步,不过是在相当靠后的设计阶段了。
 
CQRS本身也是一种架构模式,但更多的是它被应用在DDD中。因为DDD中有工厂和仓库来管理领域模型,前者主要用于创建,而后者则用于存储。这就表明在DDD中是默认将读写分离的,DDD似乎就天生和CQRS有着无缝的链接。
 
CQRS往往要求数据库进行读写分离,具体来说,所有的更新操作均无返回值(void),而读操作才返回对应的值。在实现CQRS时,又和事件源(Event Source)相结合,以下是一个简单的交互过程:
 
客户端发起一个请求,服务端将其映射为一个命令,该命令会从仓库中读取一个相关的聚合,对该聚合进行操作,将会生成一个事件源,将该事件发送出去,接收方收到消息后(并不是立刻)将会更新领域对象,完成一次更新操作。
 
在此基础上,还有称之为六边形的架构风格,它将DDD的领域模型包裹在内,外围含有多种适配器来适配各种通信方式,总体来说,我觉得无论是DDD,CQRS还是六边形,都是一种架构的设计思路,没有绝对的优势,同时也有各自的复杂度,并不容易理解,但有时在软件设计时,不妨多学习一下其中的小细节和思路,必然能够有所收获。

DDD

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.link66.cn/news/3173.html