2009-08-06 76 views
3

自2007年(12月)第1版以来,我一直在学习,玩ASP.NET MVC并与之合作。自2008年以来,我一直都很喜欢它,我一直支持它。如何在ASP.NET MVC中实现关注的分离?

但是我一直听到和阅读“ASP.NET MVC强制严格区分问题”,包括Rob Conery,Scott Hanselman,Phil Haack和Scott Guthrie在Professional ASP.NET MVC 1.0中阅读它。

我不明白的是执法。如果我定义我的控制器与只不过

return View(); 

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

它是如何(ASP.NET MVC)ENFORCE我分开的担忧?

我认为这是一个公然的夸大,它应该是“建议关注分离”。

你能说服我强制执行吗?

+1

对沉默downvoter:正如该网站所说......“提供了一个downvoting的答案” – 2009-08-06 19:35:20

+2

我是沉默downvoter。我的感觉是,这个问题增加了Stack Overflow的价值。从你的例子中可以清楚地看到,所有的逻辑都在ASPX页面中,“执行”可能不是文档使用的正确术语。 所以,是的,你是对的。该框架没有强制执行严格的分离。但我不确定为什么这是有价值的信息,或者为什么任何人都会关心查看MVC是强制执行还是鼓励分离问题。 这感觉就像把头发分开那些不重要的东西,因此我的downvote。 – JamieGaines 2009-08-06 19:45:37

+0

一词......当然,它不能让你有一个关注的分离。它是您可以选择遵循与否的指南或“框架”。如果我有我的蹩脚的100分,我也会投票。 – YetAnotherDeveloper 2009-08-06 19:51:49

回答

4

我不认为它强制它,所以他们可能mispoke。就像你说的那样,“建议”或“提倡”是一个更好的词。

+1

或者“启用” – 2009-08-06 19:37:47

+0

谢谢。在第86页的Microsoft的4位主要人员的“专业ASP.NET MVC 1.0”中,第27行指出:“MVC模式的一个定义特征就是它有助于在不同组件之间强制执行* – 2009-08-06 19:40:59

+2

我认为关键在于*帮助*强制 – 2009-08-06 19:42:37

7

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

但对比web表单,在那里你必须尝试非常混合的关注。

+0

好点,我同意。 – 2009-08-06 19:36:10

+0

更不用说那些讨厌你做坏事的讨厌的SqlDataSource控件。 – 2009-08-06 19:36:48

2

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

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

+0

我**在视图中做不到的事情是什么?这是我的问题的一部分.. – 2009-08-06 19:38:00

+0

我不认为ViewState的。这是你不能做的事情。 :) – rball 2009-08-06 19:54:08

+0

这是一个毫无疑问的改善,我同意。 – 2009-08-06 19:59:04

2

对于你想要的那种“执法”,你会建议什么机制?当查看代码的圈复杂度超过某个阈值时,框架是否应该发出警告?该框架应该在你的源代码上运行类似lint的东西,并且当你执行un-MVC的事情时(无论这些东西是什么)

更重要的是,什么是好处所有的手指摇摆?我们是不是试图编写让我们的用户满意的应用程序?

+0

看到所有新手都在编写坏代码,我们有些人需要使用或重写,是的​​,我希望有东西拍打你的手腕。 – 2009-08-06 19:55:21

+0

原因问我想如何实现这种手腕拍打的问题,我想,以任何有意义的方式来说明这样做的难度。 – 2009-08-06 20:12:13

+0

编译器tim警告将是未来的一步。 – 2009-08-06 20:46:18