我已阅读关于聚合模式,但我对这里的东西感到困惑。该模式规定属于聚合的所有对象都应该通过聚合根来访问,而不是直接访问。聚合模式和性能问题
而且我假设他们说你应该有一个单独的Repository per Aggregate。
但我认为这给应用程序增加了明显的开销。例如,在典型的基于Web的应用程序中,如果我想获取属于聚合的对象(不是聚合根),该怎么办?我将不得不调用Repository.GetAggregateRootObject(),它加载聚合根及其所有子对象,然后遍历子对象以找到我正在寻找的对象。换句话说,我正在加载大量数据并将它们扔出去,除了我正在寻找的特定对象。
有什么我在这里失踪? PS:我知道你们中的一些人可能会建议我们可以通过延迟加载来提高性能。但这并不是我在这里要求的...聚合模式要求属于聚合的所有对象都加载在一起,所以我们可以执行业务规则。
我已经在他的书“领域驱动设计”中重读了Eric Evans关于聚合的部分。看起来有些情况下某些总量可能会引用另一个总量,尽管在概念上,其中一个总量看起来更像是第一个总量的孩子。在他的书中,他谈到了一辆汽车,这是一个聚合体和一个汽车引擎,也是一个聚合体。在网络应用中它可能是一样的。如果你想获取一个特定的实体,而不需要获取它的根聚合体,那么这个实体本身就是一个聚合体。 – 2010-03-28 20:35:09