知识卡片
CQRS保护写模型
内容
CQRS把命令和查询分离,避免为了搜索、排序、报表把写模型改造成万能数据结构。写模型专注业务规则和一致性,读模型按查询效率组织。关联:[[聚合是内部边界]]
参考来源
- 位置:《复杂软件设计之道》第5章《CQRS架构》"5.2 CQRS架构的特点"一节(源文件:_chapter_text/ch05.txt)
- 结论依据:原文明确"如果这两种方向涉及的职责耦合在一起,使得领域模型的设计需要兼顾这两种方向,就容易耦合成一个大的上帝式的对象",说明查询若也走聚合模型,会迫使聚合承担搜索等非业务规则的负担,因此需读写分离。
- 原始内容:命令是客户端让服务器做事情,是从客户端向服务器后端发出写入操作命令,通常会改变后端模型的状态;而查询是服务器后端向客户端返回结果。这是两种不同的方向,如果这两种方向涉及的职责耦合在一起,使得领域模型的设计需要兼顾这两种方向,就容易耦合成一个大的上帝式的对象。