使用MVC + Repository Pattern,Business Logic应该在哪里?

Lea*_*des 4 c# business-logic unit-of-work repository-pattern asp.net-mvc-4

我想知道关于它的正确概念.如果我有一个带存储库模式的MVC应用程序,BL应该在哪里?

  • 它应该在模型中吗?在调用unitofwork之前,模型应该具有所有业务逻辑以将数据插入数据库中吗?

  • 它应该在控制器中吗?在打电话给模特之前?

  • 我是否应该有一个服务层来执行业务逻辑并决定是否应该调用Model来调用UnitOfWork来保存数据?

一个好的解释也会有很大帮助.

Mat*_*t M 6

简短的回答 - 这取决于.如果它是一个相当复杂或相当大的应用程序,我喜欢创建一个服务层项目,将存储库作为依赖项.如果它是一个小应用程序,我会把逻辑放在控制器中.在我看来,如果创建服务层需要花费更多的时间和精力来创建应用程序(即一个或两个控制器),那么我走这条路是没有意义的.您还需要考虑应用程序增长的可能性.从小开始可能会发展成更大的东西,在这种情况下,再次创建单独的服务层可能更有利.

  • 这是最好的答案。控制器应该很薄——它们的主要目的是选择正确的视图并在视图和模型之间传输数据。如果您的应用程序很小或很简单(搜索、只读等),那么只需将该逻辑放入您的控制器中即可。当您的控制器所做的不仅仅是促进视图之间的数据传输时,您应该考虑创建一个服务层。有时最好的解决方案是保持简单。创建一个服务层只是因为用 1,000 美元的问题解决了 100 万美元的问题。 (2认同)