一系列简单的聚合根问题(领域驱动设计)
Posted
技术标签:
【中文标题】一系列简单的聚合根问题(领域驱动设计)【英文标题】:A series of simple Aggregate Root questions (Domain Driven Design) 【发布时间】:2010-05-17 09:49:35 【问题描述】:我有几个(希望是)关于域驱动设计中聚合根的简单问题:
-
可以将聚合根作为另一个聚合根的属性吗?
是否可以在两个或多个聚合根中包含给定实体?
我的最后一个问题涉及更多。我有一个网站,其中包含一些真正属于“网站”聚合根的实体。它们是“新闻”、“产品”和“用户”。数据库中没有“网站”表,但“网站”似乎是这三个实体的良好聚合根。 这通常是如何实现的?
谢谢!
【问题讨论】:
【参考方案1】:您是否有任何跨越整个网站的一致性规则(关于多个新闻产品和用户)?如果不是,这些实体(新闻、产品、用户)是您聚合根的良好候选者。
聚合根主要功能是提供一致性和事务语义边界。
回答你的问题:
可以,只要这样就可以了 引用聚合根不是 在任何操作过程中修改 包含 AR。这是连接到 一致性边界: 跨越多个操作 不保证聚合 产生一致的结果,所以他们 应该避免
不,一个实体 (这不是 AR)可以是 只有一个聚合。
【讨论】:
感谢您的回答。考虑新闻、产品和用户,实际上用户似乎属于不同的聚合根,并且由于新闻和产品并不真正相关,它们是它们自己的聚合根。当我正在处理我的域时,您对 1 和 2 的回答也很有意义。以上是关于一系列简单的聚合根问题(领域驱动设计)的主要内容,如果未能解决你的问题,请参考以下文章
基于ABP落地领域驱动设计-02.聚合和聚合根的最佳实践和原则