3

自 2007 年(12 月)的 Preview 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)如何强制我分离关注点?

我认为这是一种公然的夸大其词,它应该读作“建议分离关注点”。

你能说服我它强制执行吗?

4

4 回答 4

7

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

但与网络表单相反,您必须非常努力地混淆关注点。

于 2009-08-06T19:35:15.943 回答
4

我不认为它强制执行,所以他们可能误会了。就像你说的,“建议”或“促进”是一个更好的词。

于 2009-08-06T19:37:14.580 回答
2

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

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

于 2009-08-06T19:36:20.013 回答
2

对于你想要的那种“强制执行”,你会建议什么机制?当 View 代码的圈复杂度超过某个阈值时,框架是否应该发出警告?lint当你做非 MVC 的事情(不管是什么)时,框架是否应该在你的源代码上运行类似的东西并给你耳光?

更重要的是,所有这些摇摆手指的好处是什么?我们不是在尝试编写取悦用户的应用程序吗?

于 2009-08-06T19:53:18.450 回答