代码之家  ›  专栏  ›  技术社区  ›  Alex

通过服务或直接访问存储库?

  •  1
  • Alex  · 技术社区  · 16 年前

    是否有良好的ITA编码标准,允许ASP.NET MVC控制器操作直接访问存储库(即使存在用于繁重工作的服务层,例如loginservice.authorize())来检索、添加或更新数据?或者应该 一切 浏览服务,然后从那里转到存储库?

    4 回复  |  直到 11 年前
        1
  •  4
  •   Hrvoje Hudo    16 年前

    对于较小的应用程序/web,我倾向于不使用服务层,因为它只是将存储库方法映射为1:1,而我不使用kiss。但最终,它取决于业务模型;存储库抽象了数据库访问,服务封装了逻辑。

        2
  •  2
  •   Noon Silk    16 年前

    最好通过服务层(这取决于您实现它的方式),因为这是它的重点-作为一个单一的访问点,因此您在那里做的任何特定于业务的事情都会在所有调用方之间表示和实现。

        3
  •  1
  •   RailRhoad    16 年前

    这取决于复杂性。如果你在处理任何 transcation scoping ,我肯定会将它从控制器分离到您的服务层。

        4
  •  0
  •   Arcord    8 年前

    我认为这将取决于你的设计/架构储存库的目的是什么?做 积垢 操作(创建、读取、更新和删除)。

    如果你用的是 贫血域模型 在经典的三层体系结构中,应用于模型的所有逻辑都是在服务中生成的。 在这种情况下,选择是显而易见的:您不应该直接调用存储库。 为什么?因为您的模型很愚蠢,而且逻辑在服务中,所以您可能会创建无效的模型如果可以调用存储库,则可以在数据库中创建/更新无效模型。如果你打电话给服务部,它应该可以 对的 填满 在创建/更新模型之前。

    如果你用的是 富域模型 在洋葱式建筑中它是不同的。因为您的模型应该总是有效的(当您从构造器或工厂创建一个模型时,所有验证都已执行,并且当您更新一个模型时,这是相同的事情),所以您可以直接调用存储库而不会出现任何问题。 在这个上下文中,所有的逻辑都直接在模型中,而服务只是用来存储不属于某个模型的逻辑。

    现在的问题不是“如何使用存储库”,而是“我需要什么设计/体系结构?”第一个问题将会被回答:-)