CQRS中的聚合

时间:2013-12-05 05:21:14

标签: domain-driven-design cqrs aggregateroot

什么是聚合以及它们如何在CQRS(Command-Query-Responsibility-Segregation)和ES(Event-Sourcing)中使用?我是这种建筑的新手,如果有人可以向我解释,我会很高兴。谢谢!

1 个答案:

答案 0 :(得分:6)

首先我想引用Martin Fowler's blog post on CQRS并注意聚合与域驱动设计相关,然后与CQRS 相关。

  

CQRS自然适合其他一些架构模式。

     
      
  • 当我们离开通过CRUD与之交互的单一表示时,   我们可以轻松地转移到基于任务的UI。
  •   
  • 与命令模型的交互自然会落入命令或事件中,   与Event Sourcing很好地融合。
  •   
  • 拥有单独的模型会引发有关如何保持这些模型的难度的问题   一致,这提高了使用eventual consistency的可能性。
  •   
  • 对于许多域,更新时需要大部分逻辑,   所以使用EagerReadDerivation进行简化可能是有意义的   你的查询端模型。
  •   
  • CQRS适用于复杂领域,也是受益的领域   Domain-Driven Design
  •   

在域驱动设计方面,聚合是一个逻辑组的实体和值对象,被视为一个单元(OOP, Composition)。聚合根是一个实体,所有其他人都绑定到该实体。