聚合,存储库和服务层

时间:2010-08-23 20:27:01

标签: architecture repository aggregate service-layer

选修与其他几个班级有关系的班级。第一类可以看作聚合(根)。从服务层的角度来看,如何最好地分割呼叫?

  1. 调用整个对象图的聚合存储库,并从该特定存储库调用其他存储库来处理关系的保存(每类类型一个存储库。
  2. 为整个对象图调用聚合的存储库并处理该方法中的所有方法(因此在同一方法中保存所有关系)。
  3. 从服务层内部调用聚合的存储库,然后直接从服务层调用相关类的存储库。
  4. 在服务和存储库之间添加一个额外的图层,并从附加图层中添加一个额外的图层。
  5. 我已经在生产代码中看到了所有3种可能的解决方案,但我对最干净的解决方案感兴趣,并且为什么人们会选择这种方法。

1 个答案:

答案 0 :(得分:0)

对我而言,它将是选项1和2之间的选择(我希望尽可能简化“上层服务层”)。

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