6

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

4

11 回答 11

9

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

  1. 通用 .NET 开发人员,具有编写 WinForms 和 WebForms 应用程序的丰富经验。
  2. 通用 Web 应用程序开发人员,可以编写 C# 代码,但对 HTML、CSS 和 jQuery/MooTools/等非常了解。

通用 .NET 开发人员在原始ASP.NET Web 窗体中编写代码时效率最高。这是因为他们非常了解事件模型(因为它们反映在 WinForms 和 WebForms 之间),并且能够使用这种思维模型快速构建网站。

  • MVC 将有一个很大的学习曲线,因为它完全背离了他现有的“Web 工作原理”知识。这些是开发人员在使用 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,我可以非常快速地构建一些东西并让它准确地输出我想要的东西。

我是第 2 类开发人员,我用 Ruby on Rails、Django、ASP.NET Web Forms 和 ASP.NET MVC 编写了 Web 应用程序(大部分都很小)。这 3 个框架之间的 Web 开发知识几乎可以互换(除了必须了解宿主语言 - ruby​​、python 和 c#)。

我发现 ASP.NET Web Forms 最令人气愤的是,它试图为开发人员做太多事情(例如应用程序状态、Web 事件等),代码输出通常不能很好地与 Web 标准配合使用,Web Forms 2.0 是直接绑定到 XHTML 1.0 过渡。与在 ASP.NET MVC 中编写相比,任何超出快速且脏的 DataGrid 和 Form 到数据库中的 CRUD 行的东西通常会导致更多的痛苦和痛苦。

于 2010-02-08T19:51:23.913 回答
7

使用 MVC,您永远不会花时间试图弄清楚为什么 ItemDataBound 和 ItemCommand 没有在您期望的时候触发它们。

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

于 2008-11-08T13:48:33.997 回答
7

不。就我个人而言,我发现 MVC 的工作方式更像是我的大脑所做的工作,非常清楚地区分了什么去哪里和为什么去。我在几周内用 MVC 敲定了一个完整的原型商务网站,我敢肯定,这至少是使用 webforms 的两倍。

于 2008-11-08T13:23:29.180 回答
5

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

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

于 2008-11-08T13:34:25.710 回答
3

我发现 MVC 更适合 Web 开发。正如之前的海报所指出的,您无需处理由 Web 表单页面执行生命周期引发的奇怪错误,无疑可以节省时间。

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

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

于 2008-11-10T00:47:56.567 回答
3

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

  • 开发人员对该框架的熟悉程度如何?
  • 设计有多全面?
  • 要求有多复杂?
  • 框架有多稳定?

在 1.0 发布前不久,我第一次接触到 ASP.NET MVC。在此之前,我对 ASP.NET WebForms 非常熟悉并且非常熟悉,但我仍然对整个开发过程感到沮丧。我知道围绕关注点分离的目标,并且知道如果不与框架创建的电流相冲突,WebForms 就不可能实现清晰的分离。

自从使用 ASP.NET MVC 以来,我很快发现我在很多事情上都错过了这条船。虽然 WebForms 允许您“更快”地构建事物,但您基本上受制于 Microsoft 的实现,而不是允许您在不涉及 Microsoft 的环境中更轻松地消化已建立的标准(例如 JavaScript、CSS 和 AJAX)。此外,新工具、行为和功能的创建不应以销售和盈利为动力,而是因为开发人员社区的技术需求需要它。自四月以来,我一直在从事这个当前的 MVC 项目。我非常喜欢使用这个框架,并且会向所有有兴趣远离 WebForms 的人强烈推荐它。学习这个框架需要一点时间,但是一旦你理解了它,

您可以使用 WebForms 更快地构建应用程序,但是,如果您想要具有专业外观的网站,您将不得不投资组件库,这些组件库仍然需要您学习那些既定标准才能正确利用它们。如果我 11 岁的儿子明天表示有兴趣学习 Web 开发,那么在选择 WebForms 或 MVC 的情况下,我会选择 MVC。话虽如此,在他接触 MVC 之前,我仍然会指导他学习 JavaScript、jQuery 和 AJAX,因为理解这些框架可以让理解几乎所有其他框架变得容易得多。

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

于 2010-01-31T23:45:53.637 回答
1

我认为最终 MVC 将成为 Web 开发人员的明显赢家。然而,ASP.Net 将保留一个非常重要的角色,因为总会有 .NET 人认为自己是真正的 .NET winform 人的 Web 开发人员。没有 MVC 的 ASP.NET 让您可以非常快速地将东西组合在一起,但您很容易以可怕、糟糕、不洁的 HTML、CSS 和 javascript 告终。MVC 为精彩打开了大门,但需要开发人员采用更严格的方法。

于 2008-11-10T01:06:33.443 回答
0

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

于 2011-11-09T01:10:25.263 回答
0

谈到前 90% 的开发,WebForms 无疑是赢家。问题在于最后 10%,而 MVC 的优势在哪里。

于 2010-02-01T00:10:52.323 回答
0

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

如果您想编写好的代码,Webforms 页面生命周期、视图状态、数据绑定、更新面板也需要时间来学习。似乎大多数人并没有为此花时间,这就是为什么他们说 WebForms “不太好”。

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

于 2011-08-05T05:27:12.017 回答
-1

这取决于你如何发展。

如果您是将控件拖到设计器表面的人,那么可能很难与 MVC 的快速开发水平相匹配。

另一方面,如果您将大部分时间都花在源代码视图中,您可能会发现 MVC 让您这样做更有效率。

把 AJAX 带入画面,如果你是一个依赖 UpdatePanel 的人,MVC 对你来说可能是难以形容的悲惨。

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

于 2008-11-10T01:01:49.350 回答