ASP。NET MVC vs ASP。NET WebForm性能比较

内容 超出范围的测试代码的意图测试是如何进行的?测试asp的性能标准结论。NET MVC作为解决方案阅读1 Web mvc形式 阅读2 webform mvc 阅读3 webform mvc 阅读4 webform mvc 阅读5 webform mvc 读6 webform mvc (MUF)必须使用特征测试的方法选择强制进一步阅读历史 本测试目的 本文的目的是比较ASP和ASP之间的性能。NET WebForms和ASP。净MVC。从Webforms到MVC的主要原因是性能,性能和性能。 供参考:如果你是MVC教程的新手,你可以从文章最后给出的视频开始。 测试代码 为了这个测试,我们创建了两个项目,一个在ASP中。asp.net MVC和其他asp.net MVC。净Webforms。我们保持了绝对简单的测试。这两个项目都显示了20个文本框,并且有一个装载了1000条记录的网格。 下面是ASP。与网格服务器控件绑定的asp.net Webform代码。 隐藏,复制Code

        protected void Page_Load(object sender, EventArgs e)
        {
for(int i=0;i<1000;i++)
            {
obj.Add(DateTime.Now.ToString());
            }
            GridView1.DataSource = obj;
GridView1.DataBind();
        }
    }

在ASPX UI上,我们有20个使用ASP服务器控件的文本框。净Webforms。 隐藏,复制Code

<asp:TextBoxID="TextBox1"runat="server"BackColor="#FF66FF"></asp:TextBox>

<asp:TextBoxID="TextBox2"runat="server"BackColor="#FF66FF">

<asp:TextBoxID="TextBox3"runat="server"BackColor="#FF66FF">

…….
<asp:TextBoxID="TextBox6"runat="server"BackColor="#FF66FF">

在ASP。NET MVC项目,我们也有类似的逻辑。我们有20个文本框创建使用HTML控件和一个简单的循环创建一个HTML表。 隐藏,复制Code

<input id="Text1" type="text" style="background-color:#FF66FF" />

<input id="Text1" type="text" style="background-color:#FF66FF" />

<input id="Text1" type="text" style="background-color:#FF66FF" />

@{
List<string> obj = new List<string>();
for (int i = 0; i < 1000; i++)
{
obj.Add(DateTime.Now.ToString());
}
}

@{
foreach (string str in obj)
      {

      }
}
<table>
Item@str

的范围 在这个测试中,我们没有使用JSON、Jquery、Ajax,因为我们只是想测试这些平台的性能,而不是它们与HTML 5、Ajax等其他技术相冲突时的性能。 测试是如何进行的? 使用VSTS和telerik负载测试软件,按照以下规范进行测试: 用户加载25个用户。运行测试持续时间为10分钟。机器配置戴尔8 GB内存,核心i3项目托管在IIS 8。项目使用MVC 5创建。假设网络LAN连接。所以这个测试暂时不能解释网络延迟。浏览器在测试中选择了Chrome和Internet Explorer。在测试期间多次读取未知事件的平均值。在这篇文章中所做的阅读和所有发表的阅读都是阅读1,2,等等。 性能标准 性能是通过两个标准度量的:平均页面响应时间和以字节为单位的响应内容。 平均页面响应时间:这个值是在执行负载测试时25个用户获得页面输出的平均时间。 响应内容长度:每个请求传输的平均总字节数。之所以采用这个标准,是因为我们怀疑与编写自定义HTML相比,服务器控件生成的HTML数量更多。 结论的测试 响应时间 MVC的响应时间比Webform好得多。我们发现ASP。NET MVC的响应时间是Webforms的两倍。 原因很明显。当一个请求被发送到Webforms时,有一个复杂的ASP。NET页面的生命周期,在后面的代码中执行。这段代码背后是没有什么,但sort of转换逻辑转换ASP。NET服务器控件到HTML。 在ASP。NET MVC,没有背后的代码,也没有这样的转换是必需的,因为控件本身是HTML格式。 内容长度 对于相同类型的逻辑,从Webform生成的HTML内容长度比MVC要长两倍。 当我们查看视图源时,我们看到了Webform生成的大量视图状态数据,这在MVC中是不存在的。这意味着我们上网时会消耗更多的带宽。与asp.net Webform站点相比。净MVC网站。 ASP。NET MVC作为解决方案 如果您看到负载测试的结论,我们需要一个没有代码和服务器控件的解决方案。当你创建ASP。NET MVC项目,你将不会发现NOcode背后和服务器控件。 下面是MVC视图的快照,您可以看到有。cshtml,但没有CSHTML.CS。 如果你去一个MVC视图并点击工具箱,它只有HTML选项卡和所有的服务器控件已经完全关闭。 你也可以阅读这篇详细的文章,它讨论了我们在ASP中错过的东西。NET MVC从Webforms。 下面是为Webform和MVC粘贴的所有7个读数。这些读数将使您更深入地了解这些技术之间的性能因素。 阅读1 Web表单 负载测试总结 测试运行信息 负载测试名称loadtest1描述,结束时间上午开始时间1/11/2015 9:49:56 1/11/2015 9:59:56是热身时间就是时间00:10:00控制器本地运行的代理1设置用于运行Settings1运行 整体结果 马克斯25用户负载测试/秒19.2测试失败0 avg。测试时间(sec) 1.26事务/秒0 avg。事务时间(sec) 0页/秒19.2 avg。页面时间(sec) 1.25请求/秒19.2 requests失败的请求缓存比例0 avg。响应时间(sec)内容长度(字节)96,425 1.25 avg 关键数据:前5个最慢的页面 页面URL(链接到更多细节)95%时间(sec) http://192.168.15.141:98 / WebForm / WebForm……2.30 关键统计:前5个最慢的测试 名字95%测试时间(sec) webtest1 2.32 测试结果 名字总测试失败的测试场景(%)总额的avg。测试时间(sec) webtest1 scenario1 11,510 0 (0) 1.26 页面的结果 URL(链接到更多细节)场景测试平均页面时间(sec)计数http://192.168.15.141:98/webform/webform1。aspx scenario o1 webtest1 1.25 11,510 交易结果 命名场景测试响应时间(sec)运行时间(sec)计数 系统测试资源 机器名称%测试完成时可用内存时间(Mb) 控制器和代理资源 机器名称%处理器时间可用内存在测试完成(Mb)用户- pc 43.8 855 错误 类型子类型计数最后消息 MVC 负载测试总结 测试运行信息 负载测试名称loadtest2描述,结束时间下午开始时间1/11/2015 12:13:49 1/11/2015 12:23:49点热身时间就是时间00:10:00控制器本地运行的代理1设置用于运行Settings1运行 整体结果 马克斯25用户负载测试/秒46.0测试失败0 avg。测试时间(sec) 0.49事务/秒0 avg。事务时间(sec) 0页/秒46.0 avg。页面时间(sec) 0.48请求/秒46.0请求失败的请求缓存比例0 avg。响应时间(sec)内容长度(字节)58,923 0.48 avg 关键数据:前5个最慢的页面 页面URL(链接到更多细节)95%时间(sec) http://192.168.15.141:98 / LoadTest / SomePa……1.13 关键统计:前5个最慢的测试 名字95%测试时间(sec) webtest2 1.14 测试结果 名字总测试失败的测试场景(%)总额的avg。测试时间(sec) webtest2 scenario1 27,619 0 (0) 0.49 页面的结果 URL(链接到更多细节)场景测试平均页面时间(sec)计数http://192.168.15.141:98/LoadTest/ somepage scenario o1 webtest2 0.48 27,619 交易结果 命名场景测试响应时间(sec)运行时间(sec)计数 系统测试资源 机器名称%测试完成时可用内存时间(Mb) 控制器和代理资源 机器名称%处理器时间可用内存在测试完成(Mb)用户pc 63.0 1,012 错误 类型子类型计数最后消息 阅读2 Webform 负载测试总结 测试运行信息 负载测试名称loadtest1描述,结束时间上午开始时间1/11/2015 10:25:53 1/11/2015 10:35:53是热身时间就是时间00:10:00控制器本地运行的代理1设置用于运行Settings1运行 整体结果 马克斯25用户负载测试/秒11.1测试失败0 avg。测试时间(sec) 2.22事务/秒0 avg。事务时间(sec) 0页/秒11.1 avg。页面时间(sec) 2.20请求/秒11.1请求失败的请求缓存比例0 avg。响应时间(sec)内容长度(字节)100,276 2.20 avg 关键数据:前5个最慢的页面 页面URL(链接到更多细节)95%时间(sec) http://192.168.15.141:98 / WebForm / WebForm……5.77 关键统计:前5个最慢的测试 名字95%测试时间(sec) webtest1 5.80 测试结果 名字总测试失败的测试场景(%)总额的avg。测试时间(sec) webtest1 scenario1 6,640 0 (0) 2.22 页面的结果 URL(链接到更多细节)场景测试平均页面时间(sec)计数http://192.168.15.141:98/webform/webform1。aspx scenario o1 webtest1 2.20 6640 交易结果 命名场景测试响应时间(sec)运行时间(sec)计数 系统测试资源 机器名称%测试完成时可用内存时间(Mb) 控制器和代理资源 机器名称%处理器时间可用内存在测试完成(Mb)用户pc 61.2 841 错误 类型子类型计数最后消息 MVC 负载测试总结 测试运行信息 负载测试名称loadtest2描述,结束时间下午开始时间1/11/2015 1:03:06 1/11/2015 1:13:06热身时间下午00: 00:00持续时间00:10:00控制器本地运行的代理1设置用于运行Settings1运行 整体结果 马克斯25用户负载测试/秒52.2测试失败0 avg。测试时间(sec) 0.39事务/秒0 avg。事务时间(sec) 0页/秒52.2 avg。页面时间(sec) 0.39请求/秒52.2请求失败的请求缓存比例0 avg。响应时间(sec)内容长度(字节)46,281 0.39 avg 关键数据:前5个最慢的页面 页面URL(链接到更多细节)95%时间(sec) http://192.168.15.141:98 / LoadTest / SomePa……1.02 关键统计:前5个最慢的测试 名字95%测试时间(sec) webtest2 1.03 测试结果 名字总测试失败的测试场景(%)总额的avg。测试时间(sec) webtest2 scenario1 31,330 0 (0) 0.39 页面的结果 URL(链接到更多细节)场景测试平均页面时间(sec)计数http://192.168.15.141:98/LoadTest/ somepage scenario o1 webtest2 0.39 31,330 交易结果 命名场景测试响应时间(sec)运行时间(sec)计数 系统测试资源 机器名称%测试完成时可用内存时间(Mb) 控制器和代理资源 机器名称%处理器时间可用内存在测试完成(Mb)用户pc 65.6 855 错误 类型子类型计数最后消息 阅读3 WebForm 负载测试总结 测试运行信息 负载测试名称loadtest1描述,结束时间上午开始时间1/11/2015 11:04:01 1/11/2015 11:14:01是热身时间就是时间00:10:00控制器本地运行的代理1设置用于运行Settings1运行 整体结果 马克斯25用户负载测试/秒9.66测试失败0 avg。测试时间(sec) 2.54事务/秒0 avg。事务时间(sec) 0页/秒9.66 avg。页面时间(sec) 2.52请求/秒9.66请求失败的请求缓存比例0 avg。响应时间(sec)内容长度(字节)99,769 2.52 avg 关键数据:前5个最慢的页面 页面URL(链接到更多细节)95%时间(sec) http://192.168.15.141:98 / WebForm / WebForm……9.77 关键统计:前5个最慢的测试 名字95%测试时间(sec) webtest1 9.77 测试结果 名字总测试失败的测试场景(%)总额的avg。测试时间(sec) webtest1 scenario1 5,795 0 (0) 2.54 页面的结果 URL(链接到更多细节)场景测试平均页面时间(sec)计数http://192.168.15.141:98/webform/webform1。aspx scenario o1 webtest1 2.52 5795 交易结果 命名场景测试响应时间(sec)运行时间(sec)计数 系统测试资源 机器名称%测试完成时可用内存时间(Mb) 控制器和代理资源 机器名称%处理器时间可用内存在测试完成(Mb)用户pc 61.0 875 错误 类型子类型计数最后消息 MVC 负载测试总结 测试运行信息 负载测试名称loadtest2描述,结束时间下午开始时间1/11/2015 1:28:54 1/11/2015 1:38:54点热身时间就是时间00:10:00控制器本地运行的代理1设置用于运行Settings1运行 整体结果 马克斯25用户负载测试/秒16.1测试失败0 avg。测试时间(sec) 1.50事务/秒0 avg。事务时间(sec) 0页/秒16.1 avg。页面时间(sec) 1.49请求/秒16.1请求失败的请求缓存比例0 avg。响应时间(sec)内容长度(字节)57,923 1.49 avg 关键数据:前5个最慢的页面 页面URL(链接到更多细节)95%时间(sec) http://192.168.15.141:98 / LoadTest / SomePa……2.93 关键统计:前5个最慢的测试 名字95%测试时间(sec) webtest2 2.94 测试结果 名字总测试失败的测试场景(%)总额的avg。测试时间(sec) webtest2 scenario1 9,647 0 (0) 1.50 页面的结果 URL(链接到更多细节)场景测试平均页面时间(sec)计数http://192.168.15.141:98/LoadTest/ somepage scenario o1 webtest2 1.49 9,647 交易结果 命名场景测试响应时间(sec)运行时间(sec)计数 系统测试资源 机器名称%测试完成时可用内存时间(Mb) 控制器和代理资源 机器名称%处理器时间可用内存在测试完成(Mb)用户pc 31.7 862 错误 类型子类型计数最后消息 阅读4 WebForm 负载测试总结 测试运行信息 负载测试名称loadtest1描述,结束时间上午开始时间1/11/2015 11:28:39 1/11/2015 11:38:39是热身时间就是时间00:10:00控制器本地运行的代理1设置用于运行Settings1运行 整体结果 马克斯25用户负载测试/秒11.8测试失败7 avg。测试时间(sec) 2.08事务/秒0 avg。事务时间(sec) 0页/秒11.8 avg。页面时间(sec) 2.06请求/秒11.8请求失败7请求缓存比例0 avg。响应时间(sec)内容长度(字节)100,205 2.06 avg 关键数据:前5个最慢的页面 页面URL(链接到更多细节)95%时间(sec) http://192.168.15.141:98 / WebForm / WebForm……5.58 关键统计:前5个最慢的测试 名字95%测试时间(sec) webtest1 5.60 测试结果 名字总测试失败的测试场景(%)总额的avg。测试时间(sec) webtest1 scenario1 7,073 7 (0.099) 2.08 页面的结果 URL(链接到更多细节)场景测试平均页面时间(sec)计数http://192.168.15.141:98/webform/webform1。aspx scenario o1 webtest1 2.06 7073 交易结果 命名场景测试响应时间(sec)运行时间(sec)计数 系统测试资源 机器名称%处理器时间可用内存在测试完成(Mb)用户pc 75.8 922 错误 类型子类型计数最后消息http错误500 -内部servererror 7 500 -内部servererror MVC 负载测试总结 测试运行信息 负载测试名称loadtest2描述,结束时间下午开始时间1/11/2015 1:17:12 1/11/2015 1:27:12点热身时间就是时间00:10:00控制器本地运行的代理1设置用于运行Settings1运行 整体结果 马克斯25用户负载测试/秒30.8测试失败0 avg。测试时间(sec) 0.65事务/秒0 avg。事务时间(sec) 0页/秒30.8 avg。页面时间(sec) 0.64请求/秒30.8请求失败的请求缓存比例0 avg。响应时间(sec)内容长度(字节)50,657 0.64 avg 关键数据:前5个最慢的页面 页面URL(链接到更多细节)95%时间(sec) http://192.168.15.141:98 / LoadTest / SomePa……1.70 关键统计:前5个最慢的测试 名字95%测试时间(sec) webtest2 1.72 测试结果 名字总测试失败的测试场景(%)总额的avg。测试时间(sec) webtest2 scenario1 18,483 0 (0) 0.65 页面的结果 URL(链接到更多细节)场景测试平均页面时间(sec)计数http://192.168.15.141:98/LoadTest/ somepage scenario o1 webtest2 0.64 18484 交易结果 命名场景测试响应时间(sec)运行时间(sec)计数 系统测试资源 机器名称%处理器时间可用内存在测试完成(Mb)用户- pc 43.3 854 错误 类型子类型计数最后消息 阅读5 Webform 负载测试总结 测试运行信息 负载测试名称loadtest1描述,结束时间下午开始时间1/11/2015 1:40:52 1/11/2015 1:50:52点热身时间就是时间00:10:00控制器本地运行的代理1设置用于运行Settings1运行 整体结果 马克斯25用户负载测试/秒18.8测试失败0 avg。测试时间(sec) 1.32事务/秒0 avg。事务时间(sec) 0页/秒18.8 avg。页面时间(sec) 1.31请求/秒18.8请求失败的请求缓存比例0 avg。响应时间(sec)内容长度(字节)100,607 1.31 avg 关键数据:前5个最慢的页面 页面URL(链接到更多细节)95%时间(sec) http://192.168.15.141:98 / WebForm / WebForm……2.55 关键统计:前5个最慢的测试 名字95%测试时间(sec) webtest1 2.56 测试结果 名字总测试失败的测试场景(%)总额的avg。测试时间(sec) webtest1 scenario1 11,261 0 (0) 1.32 页面的结果 URL(链接到更多细节)场景测试平均页面时间(sec)计数http://192.168.15.141:98/ webform/webform1.aspx场景1 webtest1 1.31 11,261 交易结果 命名场景测试响应时间(sec)运行时间(sec)计数 系统在测试资源下 机器名称%处理器时间可用内存在测试完成(Mb)用户pc 60.8 891 6错误 类型子类型计数最后消息 MVC 负载测试总结 测试运行信息 负载测试名称loadtest2描述,结束时间下午开始时间1/11/2015 2:30:38 1/11/2015 2:40:38点热身时间就是时间00:10:00控制器本地运行的代理1设置用于运行Settings1运行 整体结果 马克斯25用户负载测试/秒34.3测试失败0 avg。测试时间(sec) 0.68事务/秒0 avg。事务时间(sec) 0页/秒34.3 avg。页面时间(sec) 0.68请求/秒34.3请求失败的请求缓存比例0 avg。响应时间(sec)内容长度(字节)57,923 0.68 avg 关键数据:前5个最慢的页面 页面URL(链接到更多细节)95%时间(sec) http://192.168.15.141:98 / LoadTest / SomePa……1.60 关键统计:前5个最慢的测试 名字95%测试时间(sec) webtest2 1.61 6测试结果 名字总测试失败的测试场景(%)总额的avg。测试时间(sec) webtest2 scenario1 20,603 0 (0) 0.68 6页的结果 URL(链接到更多细节)场景测试平均页面时间(sec)计数http://192.168.15.141:98/LoadTest/ somepage scenario o1 webtest1 0.68 20603 6交易结果 命名场景测试响应时间(sec)运行时间(sec)计数 系统在测试资源下 机器名称%处理器时间可用内存在测试完成(Mb)用户pc 54.4 915 6错误 类型子类型计数最后消息 读6 Webform 负载测试总结 测试运行信息 负载测试名称loadtest1描述,结束时间下午开始时间1/11/2015 2:15:21 1/11/2015 2:25:21点热身时间就是时间00:10:00控制器本地运行的代理1设置用于运行Settings1运行 整体结果 马克斯25用户负载测试/秒10.7测试失败0 avg。测试时间(sec) 1.98事务/秒0 avg。事务时间(sec) 0页/秒10.7 avg。页面时间(sec) 1.96请求/秒10.7请求失败的请求缓存比例0 avg。响应时间(sec)内容长度(字节)101,007 1.96 avg 关键数据:前5个最慢的页面 页面URL(链接到更多细节)95%时间(sec) http://192.168.15.141:98 / WebForm / WebForm……3.77 关键统计:前5个最慢的测试 名字95%测试时间(sec) webtest1 3.79 测试结果 名字总测试失败的测试场景(%)总额的avg。测试时间(sec) webtest1 scenario1 6,395 0 (0) 1.98 页面的结果 URL(链接到更多细节)场景测试平均页面时间(sec)计数http://192.168.15.141:98/webform/webform1。aspx scenario o1 webtest1 1.96 6,395 交易结果 命名场景测试响应时间(sec)运行时间(sec)计数 系统测试资源 机器名称%测试完成时可用内存时间(Mb) 控制器和代理资源 机器名称%处理器时间可用内存在测试完成(Mb)用户pc 60.4 188 错误 类型子类型计数最后消息 MVC 负载测试总结 测试运行信息 负载测试名称loadtest2描述,结束时间下午开始时间1/11/2015 2:41:57 1/11/2015 2:51:57点热身时间就是时间00:10:00控制器本地运行的代理1设置用于运行Settings1运行 整体结果 马克斯25用户负载测试/秒20.4测试失败0 avg。测试时间(sec) 0.67事务/秒0 avg。事务时间(sec) 0页/秒20.4 avg。页面时间(sec) 0.66请求/秒20.4请求失败4请求缓存比例0 avg。响应时间(sec)内容长度(字节)57,904 0.66 avg 关键数据:前5个最慢的页面 页面URL(链接到更多细节)95%时间(sec) http://192.168.15.141:98 / LoadTest / SomePa……1.38 关键统计:前5个最慢的测试 名字95%测试时间(sec) webtest2 1.39 测试结果 将场景命名为“总测试失败测试”(占总测试的百分比)12220 4 (0.033) 0.67 6页的结果 URL(链接到更多细节)场景测试平均页面时间(sec)计数http://192.168.15.141:98/LoadTest/ somepage scenario o1 webtest2 0.66 12220 6交易结果 命名场景测试响应时间(sec)运行时间(sec)计数 系统在测试资源下 机器名称%测试完成时可用内存时间(Mb) 6控制器和代理资源 机器名称%处理器时间可用内存在测试完成(Mb)用户pc 59.0 852 6错误 一个现有的连接被远程主机强制关闭 如果你确信ASP。NET MVC是前进的道路,现在就开始学习MVC怎么样?下面是一个很棒的ASP。NET MVC视频,其中教MVC在16小时平。 (MUF)必须采用特征法进行测试 许多开发人员会对上面的测试表示惊讶: 我们可以选择禁用viewstate,可以选择使用HTML而不是服务器控件等等。 是的,我们完全同意webforms可以被调整以一种最优的方式运行,它们可以拥有几乎和ASP一样的性能。净MVC。 但是这个测试遵循了最常用的特性方法。通常,当Webform被使用99%的时候,开发人员不会禁用viewstate,他们使用后面的代码,他们使用服务器控件左右等等。 因为如果我们按照这种方式进行测试,那么ASP。NET MVC也有很多最佳实践,如jQuery、JSON等来提高性能。 所以这个测试是为了保持Webform和MVC中最常用的特性。这两种技术都保留在世贸中心遗址,并在市场上使用它们最常用的功能进行比较。 选择与冲动 如果你被带到一个酒吧,让你选择喝葡萄酒或果汁。你很有可能会喝酒,诱惑,人性,不管你怎么称呼它。 但是如果你被带到一家果汁店,你没有选择,你被迫只喝果汁。 ASP。NET Webform为您提供了一个选项,而MVC强制您遵循最佳实践。因此,对于Webform,我可以选择使用HTML和禁用viewstate,但是RAD对人的诱惑太大了,大多数时候人们最终会使用这些特性。 另一方面,MVC并没有提供后台代码、服务器控件、视图状态等选项,因此迫使你使用纯HTML,没有后台代码架构。 进一步的阅读 我们鼓励你阅读下面的文章来增强你的ASP。进一步了解asp.net MVC知识。 WebForms vs MVC,为什么MVC更好? 如果你想开始学习MVC,这篇MVC文章教ASP。NET MVC逐步在7天。 如果你想知道MVC和Webforms的细节,这两篇文章是很好的读物。 如果你正在准备MVC面试,不要错过100 ASP。NET MVC面试问题系列。 历史 2015年1月13日:初版 本文转载于:http://www.diyabc.com/frontweb/news1805.html

原文地址:https://www.cnblogs.com/Dincat/p/13456439.html