如何实现ASP.NET MVC中关注点的分离?

时间:2009-08-06 19:32:25

标签: asp.net-mvc view separation-of-concerns modular-design

我从2007年(12月)的预览1开始学习,使用和使用ASP.NET MVC。自2008年以来,我一直是它的粉丝,我一直支持它。

然而,我一直听到并阅读“ASP.NET MVC强制严格分离关注点”,包括由Rob Conery,Scott Hanselman,Phil Haack和Scott Guthrie在Professional ASP.NET MVC 1.0中阅读。

我不明白的是强制执行。如果我用除了

之外的动作定义我的控制器怎么办?
return View();

在视图中(aspx视图引擎)我做的一切? (数据获取,业务逻辑,决策,渲染等)

如何(ASP.NET MVC) ENFORCE 我将这些问题分开?

我认为这是一种公然的夸大其词,应该是“暗示关注点分离”。

你能说服我强制执行吗?

4 个答案:

答案 0 :(得分:7)

主要的是它从右脚开始 - 即一个单独的控制器和视图。如果你选择做一些疯狂的事情,没有人会阻止你。希望同行评审除外。和常识。

但与webforms相比,你必须尝试非常坚硬 来混淆这些问题。

答案 1 :(得分:4)

我认为它没有强制执行,所以他们可能会误导。就像你说的那样,“暗示”或“促进”是一个更好的词。

答案 2 :(得分:2)

当然,您可以在视图中执行所有操作。你只是一个可怕的程序员,根本不会遵循MVC模式。

我也很确定在视图中你根本不能做一些事情,只在控制器中。不过,我可能会让我的.Net和Rails感到困惑。

答案 3 :(得分:2)

您建议采用哪种机制来“执行”您想要的那种?当View代码的圈复杂度超过某个阈值时,框架是否应该发出警告?框架是否应该在您的源代码上运行类似lint的内容,并在您执行非MVC事件(无论是那些)时拍你的手腕?

更重要的是,所有那些手指摇摆的好处会是什么?我们不是在尝试编写满足用户需求的应用程序吗?