【问题标题】:Domain Driven Design - Aggregate Question领域驱动设计 - 综合问题
【发布时间】:2011-10-08 16:20:56
【问题描述】:

简而言之,我的域允许用户提交故事(关于一个人或一组人),其中包含许多不同的状态和它可以处于的转换以及在这些状态期间允许哪些行为。

因此,在设计的这种状态下,用户正在创建草稿并提交他们的故事。我的域包含故事、团队和团队成员。

我的第一个问题是谁负责加载完整的聚合?应用层是否应该根据手头的任务指定这一点?他是否应该真的知道需要加载哪些数据?还是应该属于总是急切加载相关数据的存储库?也许使用延迟加载(透明度可能有点吓人)?

对于我的下一个任务,我需要允许将 cmets 添加到故事中,并在用户查看故事时创建记录。这是否属于聚合,因为它们没有故事就没有意义?这是我的困惑。如果它们确实属于聚合,我将不得不在添加评论或仅添加已查看的记录时加载整个聚合?

任何帮助都会很棒,如您所见,我是 DDD 的新手。

谢谢!

【问题讨论】:

  • Marco,两个问题:你的持久化技术是什么? “加载完整的聚合”是什么意思?
  • 我首先使用实体​​框架代码。通过加载完整的聚合,我的意思是当我向存储库询问故事时,它是否应该加载完整的聚合,如团队、团队成员、评论、故事视图等。

标签: .net architecture domain-driven-design dns ddd-repositories


【解决方案1】:

我不确定这在 EF 中是如何工作的,但是使用 NHibernate,我会让应用层从启用延迟加载的存储库中加载聚合根(我假设 EF 具有相同的延迟加载功能)。

评论将在故事的聚合下访问(同样延迟加载是您的朋友)。

我不会将故事视图放在故事之下,因为这听起来像是故事本身的正交概念。我之前通过向用户添加用户登录信息(如上次登录时间)而遇到了麻烦。这是权宜之计,但把我的模型弄得一团糟。您的里程可能会有所不同。

【讨论】:

  • 可能是这样。我需要更多地了解您的领域,但视图可能属于与核心故事、评论、团队等不同的有界上下文。
  • 啊有界上下文,尚未在 EE DDD 书中深入研究。故事视图对象仅用于在 UI 中显示“未读故事”图标,以向用户指示新故事。
  • 是的,我相信我听到埃文斯说过,如果他要重写这本书,他就会把它向上移动。它最终成为对工艺最有价值的贡献之一。
猜你喜欢
  • 2011-04-26
  • 1970-01-01
  • 2011-11-04
  • 1970-01-01
  • 1970-01-01
  • 2010-11-29
  • 1970-01-01
相关资源
最近更新 更多