【发布时间】:2013-06-20 06:12:58
【问题描述】:
Implementing DDD,第 233 页:
有时下游上下文中的对象必须 最终与一个或多个聚合的部分状态一致 在上游上下文中。在这种情况下,我们会在 下游消费上下文,因为实体被用来维护一个 变化的连续性线索
根据作者的说法,如果需要最终一致性,那么下游对象应该始终是Aggregate Root。为什么它永远不应该被设计为一个内部实体,有什么特别的原因吗?
更新:
有人可能会争辩说,它们总是需要成为根,以防止多个下游对象(即反映上游对象状态的对象)具有相同的 id,但如果同步只是一种方式(从上游到下游上下文),则真的没有两个下游对象可以具有相同ID的情况吗?
谢谢
【问题讨论】:
-
取决于下游系统是否使用战术模式。
-
@Yves Reynhout:聚合根和实体是战术模式。
-
我不完全理解你的问题。老实说,我不认为下游 ID 真的那么重要。只要你能从AR记录系统中得到正确的下游对象。
-
@Eben Roux:我试图了解作者是如何得出结论的,即下游对象应该始终是根。因此,我给出了一个同步是单向的示例(从上游到下游),因为在这种情况下,尝试更新相同的上游对象。我想知道为什么即使使用单向同步下游对象也应该始终是根
-
啊,我明白了 :) --- 好吧,阅读您的参考资料,下一行是“但我们应该尽可能避免这种建模选择。如果可以,请选择值对象来建模集成。”许多选择相互权衡,您需要选择相关且适合您的选择。一方面,我并没有真正以非黑即白的方式订阅这些东西,而是将它们用作良好的指导方针,然后提出我喜欢的东西。随着时间的推移,我对自己的选择的看法甚至可能会发生变化。