【问题标题】:Aggregates, Repositories and a service layer聚合、存储库和服务层
【发布时间】:2011-04-02 20:35:17
【问题描述】:

参加一个与其他几个班级有关系的班级。第一类可以看作是聚合(根)。从服务层的角度来看,如何最好地拆分调用?

  1. 调用整个对象图的聚合存储库,并从该特定存储库调用其他存储库来处理关系的保存(每种类型的类一个存储库。
  2. 调用整个对象图的聚合存储库并在一个方法中处理所有内容(因此在同一方法中保存所有关系)。
  3. 从服务层调用聚合的存储库,然后直接从服务层调用相关类的存储库。
  4. 在服务和存储库之间添加一个额外的层,并在该额外层内执行选项 3 中的操作。

我已经在生产代码中看到了所有 3 种可能的解决方案,但我对最简洁的解决方案以及选择这种方法的原因很感兴趣。

【问题讨论】:

    标签: architecture repository aggregate service-layer


    【解决方案1】:

    对我来说,这将是选项 1 和 2 之间的选择(我喜欢让“上层服务层”尽可能简单)。

    我会选择哪一个将取决于聚合的各个类型的使用方式;如果它们总是(至少目前)用作这个聚合的一部分而不是独立的,我可能会让聚合存储库也处理它们(但可能仍然在单独的方法中),但如果各个部分也可以独立使用(或作为其他聚合的一部分),我可能倾向于为它们提供单独的存储库对象,并从聚合存储库调用这些存储库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-03
      • 2017-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-07
      • 2012-02-13
      相关资源
      最近更新 更多