【问题标题】:In what case would you prefer ASP.NET webforms over MVC? [duplicate]在什么情况下,您更喜欢 ASP.NET 网络表单而不是 MVC? [复制]
【发布时间】:2011-04-03 14:57:54
【问题描述】:

可能重复:
What’s your choice for your next ASP.NET project: WebForms or MVC?

您能否列出一些使您在新项目中使用 ASP.NET 网络表单而不是 MVC 的原因?我听说过很多相反的事情,但不是通过网络表单更容易或更好地完成的事情。我在这里不是在谈论开发者的偏好,而是在谈论技术特性以及它们如何映射到项目特性。

【问题讨论】:

  • 有一天猪会飞,地狱会结冰,stackoverflow.com 不会再收到 webforms 与 mvc 的问题。 :/ stackoverflow.com/search?q=mvc+vs+webforms
  • 我没有找到我在任何其他问题中标记为已接受的答案。随意关闭,我觉得我问它是有原因的,并且得到了一个很好的答案。它相似的事实并不总是意味着它是同一个问题。
  • 所以关闭无人机,欢迎。把现金放在阿特伍德的口袋里

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


【解决方案1】:

WebForms 的唯一理由是需要设计高度复杂(阅读杂乱)的界面,其中包含大量相互关联的元素,这些元素应全部或部分对其他元素的变化做出反应。

一个典型的例子是一些企业应用程序(来自 SAP 或较小的供应商)。它们通常具有接近疯狂的界面。如果您在 MVC 上,您将很难尝试手动将控件与 JavaScript 同步。使用 WebForms 就容易多了。

构建这样的接口是否是一个好主意完全是另一回事。


在 WebForms 元素事件中触发页面回发。他们去同一个url,统一处理。这就是架构非常可扩展的原因。

使用 MVC 来实现这一点,您必须设置一堆服务 url 来处理来自不同控件的帖子,然后处理这些帖子并相应地更新视图模型。这一切都涉及很多诡计和杂耍。并不是说它不可行——它是可行的,但规模不大。这种方法是不可扩展的。迟早你会明白你需要在有状态的面向对象的 HTML/HTTP 抽象(如 WebForms)的方向上构建自己的框架。

【讨论】:

  • +1 迄今为止唯一真正回答实际问题的答案
  • 我不知道这是不是真的。您的意思是在那里发回并“同步控件”。以我的经验,这对于复杂的 Web 界面绝对是不可接受的,因此几乎总是使用某种形式的 JS。这是完全兼容的,实际上在 MVC 环境中是有利的
  • 简而言之,最大的优势是能够在需要时进行回发。有道理,谢谢。 @Jonathan 为什么在 MVC 中使用 JS 而不是 webforms 更有利?
  • @Slavo - 大多数人使用默认的脚本管理器,这几乎是网络表单中的标准配置。这带来了巨大的开销,包括 MS ajax 库。您可以避免这种情况,但对于 MVC,情况并非如此,通过逐项放入 jquery,您只会将您需要的内容带入客户端。
【解决方案2】:

一些可能会推动我(退回)WebForms 的事情:

  • 我需要制作一些可以由主要不是 Web 应用程序开发人员(例如 WinForms 程序员)的人接管的东西,并且该应用程序基本上可以通过 Visual Studio 的 Forms Designer 进行维护。 IDE 支持使开发模型更接近 WinForms。
  • 需要看起来像 Ajax-y 但将由不会学习 JavaScript 的人维护的应用程序。我认为像 UpdatePanel 这样的东西(虽然在很多方面都很糟糕)实际上非常适合这种情况。
  • 可能是某种演示软件,同样是因为 IDE 和 ASP.NET AJAX。不用想太多就可以很快敲出一些相当智能的屏幕。
  • 我需要一个功能强大的 CMS 并且需要留在 .NET 中。在这一点上,WebForms 似乎比 MVC 有更好的选择(尽管希望这种情况正在改变)。
  • 我正在与一个已经熟悉 MVC 并且不打算学习 MVC 的团队合作。

其中,CMS 可能是我现在能想到的要求,它实际上会让我使用 WebForms。

【讨论】:

  • 谢谢。对于前三点,我想 LightSwitch 会为你做的:)
【解决方案3】:

如果您只了解网络表单

你现在需要一个很小的应用程序如果你选择反模式,在 web 表单中构建一个一次性的模拟应用程序可能会更快。例如。 SqlDataSource,代码背后的逻辑等。

丰富的控件 GridView 是一个出色的控件,只要您的自定义要求很小,只需少量代码即可为您内置排序等功能。

缺乏网络开发经验网络表单更简单。它消除了您的顾虑。对于新手来说要好得多,因为它很难出错。

话虽如此,如果您知道自己在做什么或有时间学习并且想要构建一个持久的网站,那么 MVC 非常好。也更有趣。

我要补充一点,网络表单并没有真正的错误。用它构建高性能应用程序是完全可能的。自从它首次问世以来,只是时代发生了变化,而 MVC 很好地解决了这些变化。

【讨论】:

    【解决方案4】:

    就我个人而言,我发现 MVC 非常适合管理页面。因为它们通常有大量表格,并且用于数据输入和编辑。 MVC 是为这些东西“制作”的,因此制作这些页面的速度非常快。

    我用于更复杂的事情的网络表单,例如网站的用户端。我制作的网站展示了人们可以参加的课程。注册课程是一个 5 步过程,在 MVC 中,我不知道该怎么做。我确信它可以在 MVC 中完成,但我认为它在网络表单中更好/更快。

    不过最后我还是更喜欢 MVC。使用起来感觉干净多了。

    【讨论】:

      【解决方案5】:

      我唯一会考虑在新项目中使用 Web 表单的情况是,如果有一个为 Web 表单创建的组件可以解决使用 MVC 更难解决的特定问题。

      【讨论】:

        【解决方案6】:

        我再也看不出 Webforms 相对于 MVC 的任何优势,除了一些不应该禁止的提升技能的努力。

        [最初我认为 MVC 与 web 控件不兼容,因此希望使用 Dundas 图表控件是不可能的。根据您的要求,这将是使用网络表单的一个很好的论据。但我相信情况不再如此,无论如何,您可以在 MVC 项目中包含 Web 表单作为最坏的情况。]

        【讨论】:

          【解决方案7】:

          视情况而定!

          WebForms 和 MVC 之间的区别在于您是否可以 TDD 并控制完整的标记。

          【讨论】:

          • 不完全是一个答案。它取决于什么?
          • 这取决于您拥有的项目类型以及开发团队的工作方式。
          猜你喜欢
          • 2013-12-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-08-13
          • 1970-01-01
          • 1970-01-01
          • 2012-01-08
          相关资源
          最近更新 更多