ASP.NET MVC vs WebForms:速度和架构比较

ASP.NET MVC vs WebForms: speed and architecture comparison

我和我的一个朋友发生了争执,他是一家相当大的互联网公司的建筑师。基本上,他说的是ASP.NET MVC不适用于大型企业应用程序,它不如WebForms灵活,MVC应用程序将比Web Forms应用程序慢。

从我使用MVC的经验来看,它更灵活,重量也更轻,因为没有页面生命周期、视图状态等。因此,它的加载速度至少应该更快。据我所知,MVC是为中大型交通设计的。

你们觉得怎么样?有人比较过速度和性能吗?而且,对于大型应用程序来说,ASP.NET MVC是否比ASP.NET WebForms更好?

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


  • 开发速度:webforms
  • 性能速度:MVC
  • 易用性:WebForms(通常)
  • 单元测试:MVC(典型)


这个站点是ASP.NET MVC性能和伸缩性的最佳示例

我认为企业需要哪些功能,MVC提供哪些功能

  • 单元测试-尽管最初实现这一点需要时间,但将来它会节省大量时间

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

  • 性能-因为MVC和WebForms都使用与核心框架相同的ASP.NET,MVC更轻,并且符合HTTP,所以它可以提供更好的性能


  • 我认为MVC是一个更轻的框架,并且性能更高,因为它不做WebForms框架开箱即用的很多事情,例如ViewState。我认为不公平的说法是,MVC不适用于更大规模的应用程序,因为它的扩展性能可能比WebForms更好。在开箱即用的特性方面,WebForms为您做了更多的工作,因为它通过viewstate等为您处理文章之间的状态。

    我没有任何与我的绩效比较相关的链接,但是如果没有,我会非常惊讶。甚至微软也可能有。


    在这个线程中,groupthink和cargocult编程非常强大。您的架构师朋友是对的(可能是因为错误的原因),同时也是错的。

    that it is not as flexible as WebForms

    这太傻了。你什么都可以做。它们都非常灵活。在灵活性方面,MVC可能是这里的明显赢家,因为您可以使用ActionFilters轻松实现面向方面的编程(AOP)。MVC之所以在这里胜出,另一个原因是MVC中考虑了依赖注入。您可以在WebForms中进行控制反转和依赖注入,但它需要涉及模型视图展示器模式的复杂实现。

    MVC app will be slower than a web forms app.

    书面声明无效。任何应用程序都可以相对较慢地编写,因为它是一个复杂的过程,涉及到许多方面以达到最终产品。但是,就原始速度而言。webforms实际上更快。https://stackoverflow.com/a/20253243/37055

    it is lighter weight because there is no page life cycle, viewstate, etc.. It should thus load faster at the very least

    这也是一个无效的语句。页面生命周期在所有方面都是不相关的,因为MVC中有与控制器和动作过滤器相关的必然生命周期。视图状态很有趣…如果您选择将100和1000千字节的数据填充到视图状态,要求每次回发到服务器时都有1MB-5MB的请求,是的,显然以几乎不同的方式执行任何操作都会更快。这不是webforms的错误,但是webforms允许您很容易地使用viewstate陷入失败的深渊。

    is ASP.NET MVC better for large scale apps than ASP.NET WebForms?

    没有。但是这个问题的答案是"ASP.NET WebForms是用于大型应用程序的,而不是用于ASP.NET WebForms?"答案也是否定的。答案是否定的,因为答案总是依情况而定。每个框架都有利弊,你需要衡量这些利弊,没有明确的答案。

    如果你正在建立一个内容驱动的网站,谁的工作是尽可能快的页面加载时间,如www.microsoft.com,那么你很可能会选择webforms。

    which would you choose to use for a large scale enterprise application?

    首先,你很可能没有这个问题。如果您真的有责任设计一个大型企业应用程序,那么您就没有资格问这个问题。(或者招聘过程实际上并不需要大规模的开发经验)。

    对于大型应用程序,您选择的框架几乎毫无意义。大型应用程序建立在队列上。他们将直接或通过服务总线(如:公共交通、Azure服务总线或NserviceBus)利用msmq等工具。只有通过排队,你才能达到像亚马逊、eBay和其他主要玩家那样处理数百万请求的规模。