生命取决于B => A和B在同一个聚合体中?

时间:2012-08-22 14:50:13

标签: domain-driven-design

遵循DDD方法,当我有两个实体AB,其中B的生命周期取决于A的生命周期(我的意思是{{1} }仅在B存在时才存在 - 例如A表示AApplication代表B的正在运行Instance,我应该推断ApplicationA属于B为根的同一聚合?

我读过许多文章和书籍,他们总是说在聚合内部有一个根实体和其他元素。这些其他元素可以是其他实体或Value对象。内部实体的身份是聚合的本地身份,因此它们仅在聚合内部具有含义。我是否应该从最后一句(即本地身份)解释内部实体的生命周期取决于其中一个根实体?

我已经在A上有一些示例,其中有两个实体StackoverflowA,其中B的生命周期取决于B的生命周期(即A仅在B存在时存在),存在于不同的聚合中。通常,这是因为提出问题的人有兴趣拥有两个存储库(一个用于A而另一个用于A),而在DDD之后,应该只为根聚合创建存储库。 / p>

感谢澄清这一点

1 个答案:

答案 0 :(得分:2)

聚合的核心功能是围绕群集或相关实体创建一致性边界。这种一致性边界取决于手头的使用案例,甚至可以根据技术要求(如性能等)在单个用户案例中进行更改。

  

我应该推断A和B属于A所在的相同聚合   根?

可能就是这种情况,但您也可以遇到ApplicationInstance都是聚合,Instance引用Application ID的情况。要考虑的是最终一致性的概念。例如,删除应用程序实例是否可以以最终一致的方式删除相应的应用程序实例?

  

我应该从最后一句话(即当地身份)中解释出来   内部实体的生命周期取决于其中一个根   实体?

是。聚合应该封装其组成实体。外部引用只能通过ID或直接引用对其他聚合进行,但建议的方法是通过ID引用。

查看Effective Aggregate Design by Vaughn Vernon