ASP.NET MVC在某些方面是倒退吗?

时间:2009-05-21 19:21:22

标签: asp.net asp.net-mvc

我要求这不要开始任何消极的事情。相反,在看了ASP.NET MVC之后,我发现它(不是)我没有使用像webforms这样的控件,而是用手编写html标记(喘气)。

这是倒退吗?我记得从经典的asp到asp.net和拖放控件,创建一个bll等等。现在看起来我手工做的一切,再次像经典一样,除了我有很好的mvc设计。

我想我想弄清楚为什么这是一个从快速发展环境转变为看似更乏味的转变。

编辑:

我一直认为Visual Studio .NET是使用ASP.NET及其所有控件和自动化的一个重要原因。现在有了MVC,它让我觉得它就像任何其他具有体面IDE的MVC一样,因为我现在手工完成所有事情。

13 个答案:

答案 0 :(得分:19)

  • “经典”ASP.NET没有去过任何地方 - 如果这是您想要或需要的话,您仍然可以使用它
  • 虽然您可能会或可能不会获得“拖放”功能,但在AutoComplete和各种渲染助手之间,您可以在几分钟内轻松获得工作视图
  • 创建视图只是整个项目的一小部分
  • 即使在ASP.NET中,我也很少使用可视化编辑器。我一直觉得它妨碍了我,错误地为我做出了决定。

答案 1 :(得分:15)

向前迈进了一步:

  1. 代码完全可测试
  2. 您可以完全控制服务器生成的内容
  3. 没有更多的观点!
  4. 提高服务器响应速度
  5. 没有WebForm的页面生命周期的服务器CPU负载较少
  6. 一种更接近网络的编程模型(webforms旨在将桌面编程模型带入网络)。
  7. ....

答案 2 :(得分:7)

有趣的是你应该提到这一点 - 我刚刚阅读了“Professional ASP.NET MVC 1.0”的一章,回答了这个问题。

这本书比较了Web Forms和MVC之间的差异,作为领导管弦乐队和创作歌曲之间的区别。 MVC并没有为您提供与Web表单相同级别的即时响应,但它确实为您提供了许多 Web开发人员所期望的粒度级别。众所周知,ASP.NET控件即使在更高版本中也会注入更多的HTML。

所以,从功能上说它是退后一步,但这只是因为你已经完全控制了页面上的内容。一如既往,为工作挑选合适的语言。

答案 3 :(得分:5)

这是一个侧面,而不是向前或向后;只是另一种做同样事情的方式,有不同的侧重点。使用ASP.NET表单,可以很容易地“绘制”页面,使其看起来大致与您希望它看起来一样,但很难使其表现得像一个合适的Web应用程序。使用ASP.NET MVC,将它的外观拼凑起来并不容易,但实际上它更像是一个网站,其URL用于描述以可预测的方式返回的内容。

答案 4 :(得分:3)

告诉我这件事。我还在努力弄清楚为什么我要这样做。最终排名第一的是单位测试。对于我们这些没有订阅这个的人来说,恕我直言的好处很少,如果有的话。

那就是说,我愿意相信。我认为MVC是一个很好的基础,但就像你说的那样,有时它非常乏味。 RAD工具箱中的拖放控制系统曾经很糟糕,但自从vs2008以来,它一直都是一件非常愉快的事情。我希望Telerik,Infragistics,ComponentOne等主要工具包供应商能够很快发布MVC友好工具包(我希望!)。

我只是学习它,因为我目前正在建立一个基于它的项目(不是我的设计)。不要忘记,但你不必使用它。经典ASP.NET并没有消失。 :)

-Oisin

答案 5 :(得分:2)

对我来说,摆脱viewstate和页面生命周期一直是减法的补充。 :)更不用说我对网络编程的了解,因为必须让我的手“脏”。

答案 6 :(得分:2)

有些人可能会说ASP.Net向后退一步,因为它可以通过锁定您使用预先构建的控件来限制应用程序的灵活性。

经典ASP还不成熟,但它确实让你对标记代码进行了非常细粒度的控制,许多人发现它在vanilla ASP.Net中缺乏。

正如我所看到的,ASP.Net MVC范例使开发人员能够更好地控制标记,同时仍然可以访问.Net框架的所有优点。

答案 7 :(得分:2)

我认为这是向后退步的必要步骤,或者更好地回溯一些步骤以继续前进。

网络的发展方向与ASP.NET的核心设计前提有很大不同。

最后,将ASP.NET与其他敏捷Web框架进行比较,我认为这是“你无法从这里到达那里”的案例。

答案 8 :(得分:1)

我认为ASP.Net MVC框架的一部分原因是让开发人员能够更好地控制HTML。拖放控件有些乱七八糟。

答案 9 :(得分:1)

ASP.net MVC并不适合所有人或每个应用程序(有些人可能会争论这个!)。 MVC是一个框架,您可以在其基本形式中使用或扩展到您的内容。它允许您完全控制呈现给用户的内容。

MVC有许多优点:

分离问题导致更好的可测试性,可以说更好的设计和更容易修改UI

完全控制渲染的内容 - 这可以导致符合标准,更小,更快的页面

尽管ASP.net 4具有路由功能

,但仍清除SEO友好URL

以最纯粹的形式,不使用会话负载平衡。

它也有一些缺点:

学习曲线和所需的思维转变

缺少第三方支持,虽然这会改变

页面看起来很混乱

开发某些类型的控件可能更困难,例如类似于可重新排序的数据网格或具有许多步骤的东西,如向导

答案 10 :(得分:0)

我认为这是朝着正确方向迈出的一步,但它远没有WebForms那么成熟。我希望不久之后会看到商业“控制”库,尽管它不会拖放。

此外,如果你在你的视图引擎中使用WebForms,我认为你错过了重点。

答案 11 :(得分:0)

最大的差异之一是页面生命周期。这对我来说是主要的范式变化。虽然ASP.NET没有强制执行,但许多其他好处可以通过良好实践来解决。

如果您习惯使用WebForms和ASP.NET,MVC可能看起来很尴尬,但如果您来自经典的ASP,PHP,Rails以及任何其他尊重HTTP流性质的环境,那么它是一个不错的选择。您可以获得一个优秀的IDE的好处,例如Visual Studio,一个完整而强大的框架,例如.NET(无论您使用的是C#还是VB.NET),一切都以一种或多或少熟悉的方式工作。

您可能会丢失ASP.NET控件和可视化设计器,但对于许多人来说,这更令人烦恼而不是好处,具体取决于您构建的应用程序类型和您以前的体验。 ASP.NET是Winforms的一个很好的过渡,但对于那些一直在Web环境中工作的人来说似乎有点“被迫”。

答案 12 :(得分:0)

Scott Hanselman有没有说过“MVC不是Web Forms 4.0”?我从中得知,他的意思是MVC根本不会取代ASP .Net,它只是Win Forms和Web Forms的另一种选择。

我确实同意,当我第一次开始关注MVC时,我更加提醒经典ASP(不是.Net版本),因为页面背后没有代码,而且还有更多<%= any% >视图中的标记让我感动了一段时间,就像我第一次使用ASP .Net一样,就好像ASP .Net不鼓励需要这样的标记。

就个人而言,我喜欢MVC;我觉得这很棒,但ASP .Net也有一点空间......!