业务逻辑应放在控制器/模型/视图项目中的哪个位置

时间:2014-01-24 04:56:08

标签: c# .net asp.net-mvc oop asp.net-mvc-5

我想知道创建复杂视图和模型的最佳做法是什么。

我一直在阅读您认为您在模型中处理业务逻辑,并且仅使用控制器来处理请求并查看结果jsonstring等。这是正确的吗?

我看到另一篇文章说,业务逻辑假设在控制器中,域逻辑在模型中。

此外,使用构造函数是最佳做法,还是会导致必须为其扩展活页夹等问题。

任何建议,以及对模型视图和控制器的复杂设计实现的引用都将受到赞赏。

4 个答案:

答案 0 :(得分:3)

有很多方法可以实现这一点,我喜欢将所有层分离为单独的项目并使其成为MVVM方式

  1. 总线逻辑,最好放入服务/域层
  2. 控制器用于获取/解析/发送请求/响应以查看
  3. 模型,您的视图模型(不是您的商业模式),可能与您的模型具有相同的信息或更多/更少。
  4. Orchard是mvc / piranha / nopcommerce的一个很好的例子。

    一些旧的采用者将所有业务逻辑放在模型中,其他一些将它们放在控制器中,我认为这些逻辑并不干净。

答案 1 :(得分:1)

理想情况下,业务逻辑将单独放在一个单独的项目中,不知道(没有参考)有关Web项目或数据访问(也是单独的)项目。

答案 2 :(得分:1)

我的观点是所有业务逻辑都应由另一个应用层处理

微软有自己的mvvm定义,一旦我们在他们的平台上开发,它就很有用。

退房:http://msdn.microsoft.com/en-us/library/ff798384.aspx

我一直在使用CSLA + MVVM + MEF,事实证明它非常有效。

答案 3 :(得分:1)

关于MVC(不是MVVM)

我更喜欢将域逻辑放在模型中,原因有两个。

  • 模型中应该没有UI代码,应该更容易测试。只要有可能,我希望在编写任何UI代码之前拥有一个完全正常工作的模型。控制器可以相信模型正在做正确的事情,只是处理UI问题和重定向内容。

  • 如果您将域逻辑放在控制器中,那么在不同的应用程序甚至控制器之间共享就不那么容易了!