1

允许 ASP.NET MVC 控制器操作直接访问存储库(即使存在用于繁重工作的服务层,例如 LoginService.Authorize() )以检索、添加或更新数据是一个好的编码标准吗?或者一切都应该通过服务,然后从那里到存储库?

4

4 回答 4

4

对于较小的应用程序/网络,我倾向于不使用服务层,因为它只是 1:1 映射存储库方法,并且我松了 KISS。但归根结底,这取决于商业模式;repository 抽象了 db 访问,而 services 封装了逻辑。

于 2009-08-23T15:14:31.653 回答
2

最好通过服务层(取决于你如何实现它),因为这就是它的重点——成为一个单一的接入点,因此你在那里所做的任何特定于业务的事情,都会被表示和实现。来电者。

于 2009-08-23T08:47:42.693 回答
1

这真的取决于复杂性。如果您正在处理任何事务范围,我肯定会将其从控制器分离到您的服务层。

于 2009-09-08T18:43:49.770 回答
0

在我看来,这将取决于您的设计/架构。存储库的目的是什么?执行CRUD操作(创建、读取、更新和删除)。

如果您在经典的三层架构中使用贫血域模型,则应用于模型的所有逻辑都在服务中完成。在这种情况下,选择很明显:您不应该直接调用存储库。为什么 ?由于您的模型很愚蠢并且逻辑在服务中,因此您可以创建无效的模型。如果您可以调用存储库,则可以在数据库中创建/更新无效模型。如果您调用服务,它应该能够在创建/更新之前更正填充您的模型。

如果您在洋葱架构中使用富域模型,情况就不同了。由于您的模型应该始终有效(当您从构造函数或工厂创建模型时,所有验证都已执行,而当您更新模型时,它是同一件事),您可以毫无问题地直接调用存储库。在这种情况下,所有逻辑都直接在模型中,服务仅用于存储不属于特定模型的逻辑。

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

于 2017-07-27T12:24:43.717 回答