什么是聚合以及它们如何在CQRS(Command-Query-Responsibility-Segregation)和ES(Event-Sourcing)中使用?我是这种建筑的新手,如果有人可以向我解释,我会很高兴。谢谢!
答案 0 :(得分:6)
首先我想引用Martin Fowler's blog post on CQRS并注意聚合与域驱动设计相关,然后与CQRS 相关。
CQRS自然适合其他一些架构模式。
- 当我们离开通过CRUD与之交互的单一表示时, 我们可以轻松地转移到基于任务的UI。
- 与命令模型的交互自然会落入命令或事件中, 与Event Sourcing很好地融合。
- 拥有单独的模型会引发有关如何保持这些模型的难度的问题 一致,这提高了使用eventual consistency的可能性。
- 对于许多域,更新时需要大部分逻辑, 所以使用EagerReadDerivation进行简化可能是有意义的 你的查询端模型。
- CQRS适用于复杂领域,也是受益的领域 Domain-Driven Design。
在域驱动设计方面,聚合是一个逻辑组的实体和值对象,被视为一个单元(OOP, Composition)。聚合根是一个实体,所有其他人都绑定到该实体。