现在有很多关于ASP.NET MVC的炒作,但事实是,ASP.NET webforms已经有一段时间没有了。有没有办法让当前的开发人员优化ASP.NET webforms以便像ASP.NET MVC一样快地执行?
我注意到ASP.NET MVC和ASP.NET webforms之间的速度存在显着差异。 MVC非常快捷,加载页面的速度比webforms快。我可以通过优化它来实现与ASP.NET webforms相同的功能吗?如果是的话,你会推荐什么?
答案 0 :(得分:9)
技术无关紧要,您的应用程序如何实现。可以说ViewState会产生影响,但这也是一个实现细节。 ViewState不是必需的,您也可以将其保留在服务器上。在这一天结束时,这两种技术都通过HTTP提供HTML。
答案 1 :(得分:7)
在您的页面指令中执行以下操作:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs"
Inherits="TestApp._Default" EnableViewState="false" %>
主要关闭ViewState
将弥补页面效果差异的大部分。同样限制WebForm控件的使用也会使你的HTML变得更加冗长,因为它们往往会产生非常详细的HTML。
另一方面,这样做几乎就像削减WebForms的一些大优势。使用ViewState
控制和抽象状态是WebForms今天如此受欢迎的主要原因之一。
我还做了很多WebForms开发,也做了MVC。了解两者及其优势将有助于您在任一框架中创建高性能应用程序。当我创建任何新的WebForms应用程序时,我要做的第一件事是将页面包装在Panel
中,确保为整个面板禁用ViewState
。随着我的发展,我找到ViewState
的用途(例如,为了节省时间或简化事情),我逐个转向,所以我理解为什么我使用它并做出一个有意义的决定来添加我的页面开销。
如果您在考虑性能的情况下接近Web应用程序,WebForms可以和MVC一样快,但如果您只想忽略性能并完成应用程序,那么很容易让它慢得多。
答案 2 :(得分:5)
其中一个原因是ViewState,以及作为<ASP:TextBox>
的一部分呈现的其他膨胀代码等。您应该关注页面权重。
其他一切都是平等的,这是我所知道的主要性能差异。
答案 3 :(得分:3)
我注意到速度上存在相当明显的差异
也许您应该首先以可定义的方式正确衡量绩效。然后,如果你确实有所不同,那么差异就会更明显,以及如何弥合这种性能差异。
答案 4 :(得分:3)
有一件事可以使ASP.NET慢一点,其他人提到:Viewstate。对于ajax调用尤其如此。使用UpdatePanels时会发布完整的Viewstate。
那说有一件事会让你的ASP.NET站点胜过你的ASP.NET MVC站点:缓存。 ASP.NET允许圆环缓存:您可以在WebControll的基础上定义缓存规则。您无法在ASP.NET MVC中执行此操作。
如果你确实存在速度问题,请尝试找到瓶颈。它可能是数据库调用(使用sql-profiler来检查),它可能与html相关(使用yslow)或者它可能与应用程序相关(尝试像redgate那样的分析器)。
答案 5 :(得分:1)
这是两种不同工具的案例,用于解决问题和尝试比较它们的两种不同方法吗?