我发现有一些疯狂的说法,声称ASP.NET MVC比ASP.NET WebForms快30倍。实际上有什么性能差异,是否进行过测量,以及性能优势是什么。
这将帮助我考虑从ASP.NET WebForms迁移到ASP.NET MVC。
我发现有一些疯狂的说法,声称ASP.NET MVC比ASP.NET WebForms快30倍。实际上有什么性能差异,是否进行过测量,以及性能优势是什么。
这将帮助我考虑从ASP.NET WebForms迁移到ASP.NET MVC。
真正的区别-正如@tvanfosson所建议的那样-在于可测试性和清晰的SoC。如果提高性能是您的主要关注点,我认为这不是跳出WebForms并开始在MVC中重新构建的好理由,至少在尝试了优化WebForms的可用技术之前不是。
通过消除视图状态并使其可编程处理提交的输出,它将我其中一个页面的有效载荷从2MB减少到200k
仅仅是大小减小了,尽管处理相同,也能大幅提高每秒连接和请求速度。
我的测试显示,MVC在请求每秒方面比WebForms快2倍至7倍不等,但这取决于您构建WebForms应用程序的方式。如果只有“hello world”文本且没有任何服务器端控件,则MVC大约快30%至50%。
对我来说,MVC真正的“性能”提升是增加了应用程序的可测试表面。在WebForms中,应用程序中有很多难以测试的部分。而在MVC中,变得可测试的代码量基本上翻了一倍。基本上所有不易于测试的内容都是生成布局的代码。现在,包括填充视图中实际使用数据的逻辑在内的所有业务逻辑和数据访问逻辑都可以进行测试。虽然我希望它也更具性能表现——页面生命周期大大简化,更易于网络编程——但即使它与WebForms相同或稍慢,从质量的角度来看,也值得切换。
我认为问题在于,无论ASP.Net MVC比旧的WebForms更快多少,它都不会有太大的区别,因为大部分时间都用在了数据库上。大多数情况下,你的Web服务器将只占用0-10%的CPU使用率,只是在等待数据库服务器的响应。除非你的网站受到极大的访问量,并且你的数据库非常快速,否则你可能不会注意到很大的差异。
http://forums.asp.net/p/1231621/2224136.aspx
Rob Connery本人在某种程度上证实了ScottGu所声称的ASP.NET MVC每秒可以处理8000个请求的说法。
也许Jeff和他的团队可以从开发这个网站中给出一些提示。
有关指标,请参见http://www.techempower.com/benchmarks/#section=data-r7&hw=i7&test=db。
在每个比较中,MVC都位于列表的中下/下上排名,而优化的Webforms使用则位于中上/上下排名。
有一个轶事,但是这些指标非常严肃,www.microsoft.com是由Webforms而不是MVC提供服务。这里是否有人认为如果MVC从经验上更快,他们不会选择MVC?
这个问题其实很难回答。MVC默认使用Web Forms视图引擎,但可以配置为使用任意数量的自定义视图引擎,因此如果您想要性能比较,就需要更具体地说明。