哪个平台允许更快速的开发,ASP.NET webforms或MVC?

时间:2008-11-08 13:19:53

标签: asp.net asp.net-mvc webforms

使用webforms或MVC进行开发是否有明显的生产力提升?

12 个答案:

答案 0 :(得分:9)

当您处理ASP.NET MVC与ASP.NET Web窗体的生产力时,请考虑这两个开发人员。

  1. Generic .NET Developer ,他在编写WinForms和WebForms应用程序方面拥有丰富的经验。
  2. 通用Web应用程序开发人员谁可以编写C#代码,但他们知道HTML,CSS和jQuery / MooTools /等等。
  3. Generic .NET Developer 在编写原始 ASP.NET Web窗体中的代码时效率最高。这是因为他们非常了解事件模型(因为它们在WinForms和WebForms之间进行镜像),并且能够使用此心智模型快速构建网站。

    • MVC会有很大的学习曲线,因为它完全背离了他对“网络运作方式”的现有知识。这些是开发人员在MVC中发现的绊脚石:
      • 必须学习HTML和CSS,以便他们了解正在发生的事情以及事情如何相互影响。
      • 学习javascript以及如何回调服务器以获取ajax。
      • 弄清楚如何维护状态,发现cookie不安全,并且会话有某些“陷阱”。

    通用Web应用程序开发人员 ASP.NET MVC 中效率最高,因为该框架反映了他们对Web应用程序的看法 - 没有事件,没有应用程序状态他们已经知道如何编写好的HTML并使用CSS设置样式,他们知道如何将ajax调用写回服务器。

    • Web Forms对于这个开发人员来说不是一个好模型,因为它偏离了他对“Web如何工作”的现有知识。这些是开发人员使用ASP.NET Web窗体找到的绊脚石:
      • 必须花时间试图弄清楚页面生命周期的工作原理。
      • ViewState会导致很多问题,导致页面膨胀。
      • 通常需要进行大量的HttpRequest黑客攻击,以修复某些WebForm控件中出现的所有错误代码。
      • 学习如何处理AJAX回调,而不仅仅是使用他们现有的如何从jQuery调用URL的知识。

    我的主要观点是,根据以前的Web开发经验,不同的开发人员将拥有不同的生产力水平。我个人更喜欢ASP.NET MVC,我可以很快地构建一些东西并让它输出我想要的东西。

    我是第二类开发人员,我在Ruby on Rails,Django,ASP.NET Web Forms和ASP.NET MVC中编写了Web应用程序(大多数都很小)。这三个框架之间的Web开发知识几乎可以互换(除了必须知道托管语言 - ruby​​与python与c#之外)。

    我在ASP.NET Web Forms中发现的最令人愤怒的事情是它试图为开发人员(如应用程序状态,Web事件)做太多事情,代码输出通常不会与Web标准兼容,Web Forms 2.0直接与XHTML 1.0 Transitional相关联。与在ASP.NET MVC中编写它相比,任何超出数据库中快速和脏的DataGrid和Form到CRUD行的东西通常会带来更多的痛苦和痛苦。

答案 1 :(得分:7)

没有。就我个人而言,我发现MVC的工作方式更像是我的大脑所做的工作,非常清楚地分离了什么在哪里以及为什么。几个星期后,我用MVC撞出了一个完整的原型商务网站,我敢肯定,至少是使用网络表格的两倍。

答案 2 :(得分:7)

使用MVC,您永远不会花时间尝试解释为什么ItemDataBound和ItemCommand在您期望它们时不会触发。

如果您认为这会节省您的时间,那么MVC可能适合您。

答案 3 :(得分:5)

此时,WebForms更加成熟。我希望,例如,验证(客户端和服务器端)在MVC中有更好的支持。但是,我完全相信,随着时间的推移,这将会有所改善。从我的角度来看,关于MVC的最好的事情是MVC使我的代码更易于测试。我遗留了大量未经测试的WebForms代码,因为它很难测试代码隐藏。现在我可以为所有控制器逻辑编写单元测试。

即使最终证明MVC有点慢(而且我猜它不会),增强的可测试性会让它变得有价值。最终我会收回那段时间,因为以后会有更少的回头修复错误的未经测试的代码。

答案 4 :(得分:3)

我发现MVC更适合Web开发。正如之前的海报所指出的那样,毫无疑问,您不必处理Web表单页面执行生命周期所引发的奇怪错误,从而节省时间。

此外,能够更快地为您的逻辑编写单元测试的能力(并且更少依赖于模拟!)是一个很大的优势。

最后,我发现在使用MVC框架时编写css和客户端脚本要容易得多,因为您可以在HTML元素上指定自己的ID。

答案 5 :(得分:3)

当我听到“快速发展”一词时,我发现人们通常会在“我能以多快的速度开发新解决方案”的背景下使用它。在构建合理的答案之前,必须考虑很多因素。

  • 开发人员对框架有多熟悉?
  • 设计有多全面?
  • 要求有多复杂?
  • 框架有多稳定?

我在1.0发布之前不久就开始接触ASP.NET MVC。在此之前,我对ASP.NET WebForms非常熟悉并且非常熟悉,但我仍然对整个开发过程感到沮丧。我意识到了关注点分离的目标,并且足够了解WebForms无法与框架创建的当前游戏进行明显的分离。

自从使用ASP.NET MVC以来,我发现很快就发现我错过了很多东西。虽然WebForms允许您“更快”地构建内容,但您基本上被Microsoft的实现所挟持,而不是允许您在不涉及Microsoft的环境中更轻松地消化已建立的标准(例如JavaScript,CSS和AJAX)。此外,新工具,行为和功能的创建不应该受到销售和盈利能力的驱动,而是因为开发人员社区的技术需求需要它。自4月以来,我一直在研究这个当前的MVC项目。我非常喜欢使用这个框架,并且会向任何有兴趣远离WebForms的人推荐它。学习框架需要花费一些时间,但是一旦你理解了它,你就会想知道为什么你从一开始就不能这样做。

您可以使用WebForms更快地构建应用程序,但是,如果您想要专业的网站,您将不得不投资组件库,这些组件库仍然需要您学习这些已建立的标准才能正确使用它们。如果我11岁的儿子明天有兴趣学习Web开发,那么考虑到WebForms或MVC的选择,我的选择就是MVC。话虽这么说,我甚至会在他触及MVC之前指导他学习JavaScript,jQuery和AJAX,因为理解这些框架几乎可以让所有其他框架更容易理解。

就个人而言,我不是“快速发展”的倡导者。我的职业生涯是作为一名企业开发人员,并将内部开发视为一项投资。我宁愿花20%多的时间进行设计和开发,而不是将项目缩短20%只是为了满足不切实际的最后期限。由于维护成本,再教育以及由于新要求导致的架构变更,在初始开发期间“保存”的每一美元将很容易花费至少1.50美元。但是,不是每个人都像我一样思考,所以...我的简单答案就是MVC。

答案 6 :(得分:1)

我认为最终MVC将成为网络开发者的明显赢家。然而,ASP.Net将保留一个非常重要的角色,因为总会有.NET员工认为自己是Web开发人员,他们真的是.NET winform人。 ASP.NET没有MVC可以让你很快地把东西放在一起,但你很容易就会得到可怕的,可怕的,不圣洁的HTML,CSS和javascript。 MVC为精彩打开了大门,但开发人员需要更加严谨的方法。

答案 7 :(得分:0)

在开发的前90%中,WebForms是明显的赢家。这是问题的最后10%,以及MVC的优势所在。

答案 8 :(得分:0)

很奇怪为什么这么多人认为Web Froms不可能获得干净的HTML,使用jquery(和jquery ajax),编写css(?)。您必须始终从工具栏拖放控件,实际上您可以像在MVC中一样编写它。

Webforms页面生命周期,viewstate,数据绑定,updatepanels还需要时间来学习是否要编写好的代码。似乎大多数人都没有花时间做这件事,这就是为什么他们说WebForms“不那么好”。

虽然我是成熟的Web Froms开发人员,但我正在尝试学习MVC(仅仅是为了好玩),并且编写复杂的网站是很好的。但正如我现在看到的,MVC的主要问题是你必须编写很多代码,真的很多!!!

答案 9 :(得分:0)

自从2000年在奥兰多举行的专业开发者大会上发布第一个测试版以来,我一直在使用ASP.NET。很明显,我对WebForms感觉更舒服,因为这是我的开始。大多数对WebForms的反对都可以通过合理的开发机制来克服。但是,即使WebForms在网络上为RAD提供基础设施,我也喜欢MVC。 MVC仍在成熟,我相信它会变得更好。 底线是开发学习时间表上的“你在哪里”,以及你以前的经验。你必须为自己做出决定。如果你是新人,你可以很好地调查两者。

答案 10 :(得分:-1)

这取决于你的发展方式。

如果你是一个将控件拖到设计师表面上的人,那么很可能很难将这种快速开发与MVC相匹配。

另一方面,如果你把大部分时间花在源视图中,你可能会发现MVC可以让你更有效地这样做。

将AJAX带入图片中,如果你是依赖UpdatePanel的人,MVC对你来说可能是难以言喻的悲惨。

(这并没有开始解决哪种类型的发展更“正确”的主观问题。但我不认为这是这个问题的重点。)

答案 11 :(得分:-5)

WOW。我已经使用ASP.NET控件近5年了,现在我听说这块新手 - MVC

我猜MVC是为php开发人员创建的。我无法看到这样做的任何其他主要原因。 但是,我不知道MVC所以不要听我说。这只是我的猜测。

我非常擅长ASP.NET ASP.NET表单和数据绑定。当我精益MVC时,我会回来发表评论