Implementing DDD,第233页:
有时下游Context中的对象必须是 最终与一个或多个聚合的部分状态一致 在上游上下文中。在那种情况下,我们设计了一个聚合 下游消费上下文,因为实体用于维护 变革的连续性线索
根据作者的说法,如果需要最终一致性,那么下游对象应始终是聚合根。是否有一个特殊原因导致它永远不应被设计为内部实体?
更新:
有人可能会说他们总是需要成为根,以防止具有相同id的多个下游对象(即反映上游对象状态的对象),但如果同步只是一种方式(从上游到下游的上下文),真的没有两个下游对象可以拥有相同ID的情况吗?
感谢
答案 0 :(得分:0)
我会对此采取行动。
他正在讨论下游有界上下文,而不是下游对象。这是重要的一句话。
在不同的有界上下文中,您需要通过该上下文中的聚合根进行通信,因为DDD中已建立的规则是所有通信都通过聚合根。您不会直接在该AR内的实体或值对象上调用方法。
此外 - 聚合根是DDD中一致性的单位。正如他所说 - 如果您需要在下游有界上下文中存在的对象中最终一致,请在该下游有界上下文中设计聚合根(一致性边界)。