【问题标题】:ASP.NET MVC vs WebForms: speed and architecture comparison [closed]ASP.NET MVC 与 WebForms:速度和架构比较 [关闭]
【发布时间】:2010-11-05 08:36:22
【问题描述】:

我和我的一个朋友发生了争执,他是一家相当大的互联网公司的架构师。基本上他是说 ASP.NET MVC 不适合大型企业应用程序,它不如 WebForms 灵活,而且 MVC 应用程序会比 Web 表单应用程序慢。

根据我自己使用 MVC 的经验,我可以说它更灵活,重量更轻,因为没有页面生命周期、视图状态等。因此它至少应该加载更快。据我所知,MVC 是为大中型流量而设计的。

你们怎么看?有人比较过速度和性能吗? ASP.NET MVC 是否比 ASP.NET WebForms 更适合大型应用程序?

简而言之,在这两种选择中,您会选择哪一种来用于大型企业应用程序?

【问题讨论】:

  • 我想你想修改你的最后一句话,因为 MVC 和 WebForms 都是 ASP.NET。
  • 还有更多:您的意思是“ASP.NET MVC 是否比 ASP.NET WebForms 更好......”
  • 哎呀,现在应该会更好
  • mercury - 希望你不要介意,我清理了一些错别字和其他东西,以使问题更具可读性。

标签: asp.net-mvc architecture webforms comparison performance


【解决方案1】:

在这个线程中,群体思维和货物崇拜编程很强大。你的建筑师朋友既是对的(可能是因为错误的原因)又是错的。

它不如 WebForms 灵活

这很愚蠢。你可以用任何东西做任何事情。它们都非常灵活。就灵活性而言,MVC 可能是明显的赢家,因为您可以使用 ActionFilters 轻松实现面向方面的编程 (AOP)。 MVC 可能在这里获胜的另一个原因是在 MVC 中考虑了依赖注入。您可以在 WebForms 中进行控制反转和依赖注入,但这需要涉及 Model-View-Presenter 模式的复杂实现。

MVC 应用程序将比 Web 表单应用程序慢。

按照书面规定,此声明无效。任何应用程序都可以相对较慢地编写,因为它是一个复杂的过程,涉及到最终产品的许多方面。但是,就原始速度而言。 网络表单的速度要快得多https://stackoverflow.com/a/20253243/37055

它的重量更轻,因为没有页面生命周期、视图状态等。因此它至少应该加载更快

这也是一个无效的声明。页面生命周期在所有方面都无关紧要,因为在 MVC 中存在关于控制器和动作过滤器的推论生命周期。视图状态很有趣...如果您选择将 100 和 1000 千字节的数据填充到视图状态中,要求每个回发到服务器的请求都有 1MB-5MB 的请求,是的,做几乎任何不同的事情显然会更快。这不是 webforms 的错,但是 webforms 让你很容易通过 viewstate 掉入失败的深坑。

对于大型应用程序来说,ASP.NET MVC 是否比 ASP.NET WebForms 更好?

没有。然而,这个问题的答案是“是 ASP.NET WebForms 用于大型应用程序而不是 ASP.NET WebForms 吗?”答案也是否。答案是否定的,因为答案总是视情况而定。每个框架都有优缺点,你需要衡量这些,没有明确的答案。

如果您正在构建一个内容驱动的网站,并且您的工作是尽可能快地加载页面,例如www.microsoft.com,那么您最好选择网络表单。

您会选择将哪个用于大型企业应用程序?

首先,您很可能没有这个问题。如果您真正负责构建大型企业应用程序,您将无法提出这个问题。 (或者招聘过程实际上并不需要大规模的开发经验)。

就大规模应用而言,您选择的框架几乎毫无意义。大规模应用程序建立在队列之上。他们将直接或通过服务总线(例如:Mass Transit、Azure 服务总线或 NServiceBus)利用 MSMQ 等工具。只有通过排队,您才能达到像亚马逊、Ebay 和其他所有主要参与者那样处理数百万个请求的规模。

【讨论】:

    【解决方案2】:

    此站点是 ASP.net MVC 性能和扩展性的最佳示例

    我认为 Enterprise 必需且 MVC 提供的一些功能是

    1. 单元测试 - 尽管最初实施它需要时间,但在未来可以节省大量时间

    2. 关注点分离 - 这确实提高了开发和修改速度

    3. 性能 - 因为 MVC 和 Webforms 都使用相同的 ASP.net 作为核心框架,而且 MVC 更轻量级且符合 HTTP,它可以为您提供更好的性能

    【讨论】:

    • 这三个都可以使用 WebForms 来实现。
    • 我真的很想知道如何在 WebForms 中完成所有这些操作...
    • @liao - 对于前两点,我的猜测是不要将所有内容都放在代码中。
    • -1 因为#3 是错误的。向 Jeremy、Chris 和 Spencer Ruport 看我的 cmets
    【解决方案3】:
    • 开发速度:WebForms
    • 性能速度:MVC
    • 易用性:WebForms(通常)
    • 单元测试:MVC(典型)

    【讨论】:

    • 易用性是主观的。我见过一些人认为 web 表单很容易,而那些认为 MVC 更容易。我认为随着 asp.net MVC 变得更加成熟和受支持,开发速度会随着时间的推移而稳定下来。
    • 您可以像 MVC 应用程序一样轻松地对 Web 表单应用程序进行单元测试,前提是它们被正确创建,并具有适当的关注点分离。我们不需要引入 MVC 来教我们如何做到这一点。就是这么多被忽略的单元测试,期间。
    • 我更喜欢 WebForms,但听起来你的朋友确实很笨。斯宾塞在这里得到了正确的答案——尤其是他的限定词 .
    • 我完全同意 John Saunders...
    • -1 这整个答案纯粹是主观的思考,就性能而言,实际上完全是错误的。有关实际指标,请参阅 stackoverflow.com/a/20253243/37055
    【解决方案4】:

    我认为 MVC 是一个更轻量级的框架,并且性能更高,因为它没有做很多 WebForms 框架开箱即用的事情,例如 viewstate。我认为说 MVC 不适用于更大规模的应用程序是不公平的,因为它在性能方面可能比 WebForms 的扩展性更好。在开箱即用的功能方面,WebForms 为您做的更多,因为它通过视图状态等为您处理帖子之间的状态。

    我没有与我进行性能比较的任何链接,但如果没有任何链接,我会感到非常惊讶。甚至微软也可能有一些。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-10
      • 2010-10-24
      • 1970-01-01
      • 1970-01-01
      • 2010-10-14
      • 1970-01-01
      • 2012-11-24
      • 2011-11-26
      相关资源
      最近更新 更多