业务逻辑在MVC中的位置在哪里?

sar*_*ake 10 asp.net-mvc business-logic-layer asp.net-mvc-3

我是ASP.Net MVC的初学者.在阅读了许多教程并消化其概念之后,我还没有看到一种方法可以清楚地说明业务逻辑的去向.

我的应用程序将大量使用jQuery AJAX用法(它将调用Controller的Actions用于各种目的,例如依赖交互,验证).我肯定会使用ViewModel概念,但我仍然不清楚业务逻辑应该驻留在哪里.我不想放入控制器或模型.我应该把它放在一个单独的服务层吗?

gdo*_*ica 12

我认为你在一个单独的项目中几乎回答了你自己的问题.
不在控制器中,绝对不在模型中.

编辑:请注意,控制器与httpcontext高度耦合,因此将逻辑层移动到不同的dll层是一件非常聪明的事情.

  • 这里给出的答案几乎相反:http://stackoverflow.com/questions/4415904/business-logic-in-mvc,这对我来说似乎更有意义... (2认同)

jga*_*fin 7

MVC中的M是用于获取和处理您在应用程序中使用的信息的所有内容.因此,业务层是其中的一部分.

我首先要创建一个单独的类库,然后将所有逻辑放入其中.只要您的类很小并且有明确的责任,如果您需要单独的Web服务(另一个项目需要访问数据),以后很容易重构.

我通常创建一个第三类库并将所有定义放入其中(服务接口和域模型).通过这样做,您将遵循分离的界面模式,以便以后更容易交换实现(并测试您的业务层)