65.9K
CodeProject 正在变化。 阅读更多。
Home

ASP.NET MVC 与 ASP.NET WebForm 性能比较

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.77/5 (56投票s)

2015 年 1 月 13 日

CPOL

20分钟阅读

viewsIcon

276938

ASP.NET WebForms 和 ASP.NET MVC 性能比较

目录

本次测试的目的

本文的目的是比较 ASP.NET WebForms 和 ASP.NET MVC 之间的性能。从 Webforms 转向 MVC 的主要原因是性能、性能和性能。

供参考:如果您是 MVC 教程的新手,可以从文章末尾的视频开始。

测试代码

为了进行此测试,我们创建了两个项目,一个使用 ASP.NET MVC,另一个使用 ASP.NET Webforms。我们保持测试绝对简单。这两个项目都显示 20 个文本框,并且加载了一个包含 1000 条记录的网格。

以下是与网格服务器控件绑定的 ASP.NET Webform 后端代码。

        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.NET Webforms 的服务器控件。

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

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

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

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

在 ASP.NET MVC 项目中,我们也具有类似的逻辑。我们使用 HTML 控件创建了 20 个文本框,并使用一个简单的循环创建了一个 HTML 表格。

<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 分钟。
  • 机器配置 DELL 8 GB 内存,酷睿 i3
  • 项目托管在 IIS 8 中。
  • 项目是使用 MVC 5 创建的。
  • 假设使用局域网连接。因此,此测试暂时不考虑网络延迟。
  • 测试中选择的浏览器是 Chrome 和 Internet Explorer。
  • 测试期间进行了多次读数以平均未知事件。共进行了 7 次读数,所有读数都作为读数 1、2 等发布在本文中。

性能标准

性能通过两个标准衡量:平均页面响应时间和响应内容字节数。

平均页面响应时间:当执行负载测试时,25 个用户获取页面输出的平均时间。

响应内容长度:每次请求传输的平均总字节数。选择此标准是因为我们怀疑服务器控件生成的 HTML 量比我们编写自定义 HTML 时要多。

测试结论

响应时间

MVC 的响应时间比 Webform 好得多。我们发现 ASP.NET MVC 的响应时间是 Webforms 的两倍。

原因显而易见。当请求发送到 Webforms 时,会执行复杂的 ASP.NET 页面生命周期。这个后端代码无非是一种转换逻辑,它将 ASP.NET 服务器控件转换为 HTML。

在 ASP.NET MVC 中,没有后端代码,也不需要这种转换,因为控件本身就是 HTML 格式。

内容长度

对于相同类型的逻辑,Webform 生成的 HTML 内容长度是 MVC 的两倍。

当我们查看源代码时,我们发现 Webform 生成了大量的视图状态数据,而 MVC 中没有。这意味着当我们浏览 ASP.NET Webform 网站时,与 ASP.NET MVC 网站相比,将消耗更多的带宽。

ASP.NET MVC 作为解决方案

如果您查看负载测试的结论,我们需要一个没有代码后端和服务器控件的解决方案。因此,当您创建 ASP.NET MVC 项目时,您将不会找到没有代码后端和服务器控件的项目。

以下是 MVC 视图的快照,您可以看到有 * .CSHTML * ,但没有 * CSHTML.CS * 。

如果您进入一个 MVC 视图并单击工具箱,它只有 HTML 选项卡,所有服务器控件都已完全消失。

您还可以阅读这篇详细的文章,其中讨论了我们 在 ASP.NET MVC 中从 Webforms 错过的东西

以下是 Webform 和 MVC 的所有七个读数。这些读数将为您提供更多关于这些技术之间性能因素的见解。

阅读 1

Web 表单

负载测试摘要

测试运行信息

负载测试名称 LoadTest1
描述  
开始时间 2015/1/11 上午 9:49:56
结束时间 2015/1/11 上午 9:59:56
预热时长 00:00:00
持续时间 00:10:00
控制器 (Controller) 本地运行
代理数量 1
使用的运行设置 运行设置1

总体结果

最大用户负载 25
测试/秒 19.2
测试失败 0
平均测试时间(秒) 1.26
事务/秒 0
平均事务时间(秒) 0
页面/秒 19.2
平均页面时间(秒) 1.25
请求/秒 19.2
请求失败 0
请求缓存百分比 0
平均响应时间(秒) 1.25
平均内容长度(字节) 96,425

关键统计:最慢的 5 个页面

URL(更多详情链接) 95% 页面时间(秒)
http://192.168.15.141:98/WebForm/WebForm... 2.30

关键统计:最慢的 5 个测试

名称 95% 测试时间(秒)
WebTest1 2.32

测试结果

名称 场景 总测试次数 失败测试(占总数的百分比) 平均测试时间(秒)
WebTest1 场景1 11,510 0 (0) 1.26

页面结果

URL(更多详情链接) 场景 测试 平均页面时间(秒) Count
http://192.168.15.141:98/WebForm/WebForm1.aspx 场景1 WebTest1 1.25 11,510

事务结果

名称 场景 测试 响应时间(秒) 已用时间(秒) Count

被测系统资源

机器名称 处理器时间百分比 测试完成时可用内存(MB)

控制器和代理资源

机器名称 处理器时间百分比 测试完成时可用内存(MB)
用户电脑 43.8 855

错误

类型 子类型 Count 最后消息

MVC

负载测试摘要

测试运行信息

负载测试名称 LoadTest2
描述  
开始时间 2015/1/11 下午 12:13:49
结束时间 2015/1/11 下午 12:23:49
预热时长 00:00:00
持续时间 00:10:00
控制器 (Controller) 本地运行
代理数量 1
使用的运行设置 运行设置1

总体结果

最大用户负载 25
测试/秒 46.0
测试失败 0
平均测试时间(秒) 0.49
事务/秒 0
平均事务时间(秒) 0
页面/秒 46.0
平均页面时间(秒) 0.48
请求/秒 46.0
请求失败 0
请求缓存百分比 0
平均响应时间(秒) 0.48
平均内容长度(字节) 58,923

关键统计:最慢的 5 个页面

URL(更多详情链接) 95% 页面时间(秒)
http://192.168.15.141:98/LoadTest/SomePa... 1.13

关键统计:最慢的 5 个测试

名称 95% 测试时间(秒)
WebTest2 1.14

测试结果

名称 场景 总测试次数 失败测试(占总数的百分比) 平均测试时间(秒)
WebTest2 场景1 27,619 0 (0) 0.49

页面结果

URL(更多详情链接) 场景 测试 平均页面时间(秒) Count
http://192.168.15.141:98/LoadTest/SomePage 场景1 WebTest2 0.48 27,619

事务结果

名称 场景 测试 响应时间(秒) 已用时间(秒) Count

被测系统资源

机器名称 处理器时间百分比 测试完成时可用内存(MB)

控制器和代理资源

机器名称 处理器时间百分比 测试完成时可用内存(MB)
用户电脑 63.0 1,012

错误

类型 子类型 Count 最后消息

阅读 2

Webform

负载测试摘要

测试运行信息

负载测试名称 LoadTest1
描述  
开始时间 2015/1/11 上午 10:25:53
结束时间 2015/1/11 上午 10:35:53
预热时长 00:00:00
持续时间 00:10:00
控制器 (Controller) 本地运行
代理数量 1
使用的运行设置 运行设置1

总体结果

最大用户负载 25
测试/秒 11.1
测试失败 0
平均测试时间(秒) 2.22
事务/秒 0
平均事务时间(秒) 0
页面/秒 11.1
平均页面时间(秒) 2.20
请求/秒 11.1
请求失败 0
请求缓存百分比 0
平均响应时间(秒) 2.20
平均内容长度(字节) 100,276

关键统计:最慢的 5 个页面

URL(更多详情链接) 95% 页面时间(秒)
http://192.168.15.141:98/WebForm/WebForm... 5.77

关键统计:最慢的 5 个测试

名称 95% 测试时间(秒)
WebTest1 5.80

测试结果

名称 场景 总测试次数 失败测试(占总数的百分比) 平均测试时间(秒)
WebTest1 场景1 6,640 0 (0) 2.22

页面结果

URL(更多详情链接) 场景 测试 平均页面时间(秒) Count
http://192.168.15.141:98/WebForm/WebForm1.aspx 场景1 WebTest1 2.20 6,640

事务结果

名称 场景 测试 响应时间(秒) 已用时间(秒) Count

被测系统资源

机器名称 处理器时间百分比 测试完成时可用内存(MB)

控制器和代理资源

机器名称 处理器时间百分比 测试完成时可用内存(MB)
用户电脑 61.2 841

错误

类型 子类型 Count 最后消息

MVC

负载测试摘要

测试运行信息

负载测试名称 LoadTest2
描述  
开始时间 2015/1/11 下午 1:03:06
结束时间 2015/1/11 下午 1:13:06
预热时长 00:00:00
持续时间 00:10:00
控制器 (Controller) 本地运行
代理数量 1
使用的运行设置 运行设置1

总体结果

最大用户负载 25
测试/秒 52.2
测试失败 0
平均测试时间(秒) 0.39
事务/秒 0
平均事务时间(秒) 0
页面/秒 52.2
平均页面时间(秒) 0.39
请求/秒 52.2
请求失败 0
请求缓存百分比 0
平均响应时间(秒) 0.39
平均内容长度(字节) 46,281

关键统计:最慢的 5 个页面

URL(更多详情链接) 95% 页面时间(秒)
http://192.168.15.141:98/LoadTest/SomePa... 1.02

关键统计:最慢的 5 个测试

名称 95% 测试时间(秒)
WebTest2 1.03

测试结果

名称 场景 总测试次数 失败测试(占总数的百分比) 平均测试时间(秒)
WebTest2 场景1 31,330 0 (0) 0.39

页面结果

URL(更多详情链接) 场景 测试 平均页面时间(秒) Count
http://192.168.15.141:98/LoadTest/SomePage 场景1 WebTest2 0.39 31,330

事务结果

名称 场景 测试 响应时间(秒) 已用时间(秒) Count

被测系统资源

机器名称 处理器时间百分比 测试完成时可用内存(MB)

控制器和代理资源

机器名称 处理器时间百分比 测试完成时可用内存(MB)
用户电脑 65.6 855

错误

类型 子类型 Count 最后消息

阅读 3

WebForm

负载测试摘要

测试运行信息

负载测试名称 LoadTest1
描述  
开始时间 2015/1/11 上午 11:04:01
结束时间 2015/1/11 上午 11:14:01
预热时长 00:00:00
持续时间 00:10:00
控制器 (Controller) 本地运行
代理数量 1
使用的运行设置 运行设置1

总体结果

最大用户负载 25
测试/秒 9.66
测试失败 0
平均测试时间(秒) 2.54
事务/秒 0
平均事务时间(秒) 0
页面/秒 9.66
平均页面时间(秒) 2.52
请求/秒 9.66
请求失败 0
请求缓存百分比 0
平均响应时间(秒) 2.52
平均内容长度(字节) 99,769

关键统计:最慢的 5 个页面

URL(更多详情链接) 95% 页面时间(秒)
http://192.168.15.141:98/WebForm/WebForm... 9.77

关键统计:最慢的 5 个测试

名称 95% 测试时间(秒)
WebTest1 9.77

测试结果

名称 场景 总测试次数 失败测试(占总数的百分比) 平均测试时间(秒)
WebTest1 场景1 5,795 0 (0) 2.54

页面结果

URL(更多详情链接) 场景 测试 平均页面时间(秒) Count
http://192.168.15.141:98/WebForm/WebForm1.aspx 场景1 WebTest1 2.52 5,795

事务结果

名称 场景 测试 响应时间(秒) 已用时间(秒) Count

被测系统资源

机器名称 处理器时间百分比 测试完成时可用内存(MB)

控制器和代理资源

机器名称 处理器时间百分比 测试完成时可用内存(MB)
用户电脑 61.0 875

错误

类型 子类型 Count 最后消息

MVC

负载测试摘要

测试运行信息

负载测试名称 LoadTest2
描述  
开始时间 2015/1/11 下午 1:28:54
结束时间 2015/1/11 下午 1:38:54
预热时长 00:00:00
持续时间 00:10:00
控制器 (Controller) 本地运行
代理数量 1
使用的运行设置 运行设置1

总体结果

最大用户负载 25
测试/秒 16.1
测试失败 0
平均测试时间(秒) 1.50
事务/秒 0
平均事务时间(秒) 0
页面/秒 16.1
平均页面时间(秒) 1.49
请求/秒 16.1
请求失败 0
请求缓存百分比 0
平均响应时间(秒) 1.49
平均内容长度(字节) 57,923

关键统计:最慢的 5 个页面

URL(更多详情链接) 95% 页面时间(秒)
http://192.168.15.141:98/LoadTest/SomePa... 2.93

关键统计:最慢的 5 个测试

名称 95% 测试时间(秒)
WebTest2 2.94

测试结果

名称 场景 总测试次数 失败测试(占总数的百分比) 平均测试时间(秒)
WebTest2 场景1 9,647 0 (0) 1.50

页面结果

URL(更多详情链接) 场景 测试 平均页面时间(秒) Count
http://192.168.15.141:98/LoadTest/SomePage 场景1 WebTest2 1.49 9,647

事务结果

名称 场景 测试 响应时间(秒) 已用时间(秒) Count

被测系统资源

机器名称 处理器时间百分比 测试完成时可用内存(MB)

控制器和代理资源

机器名称 处理器时间百分比 测试完成时可用内存(MB)
用户电脑 31.7 862

错误

类型 子类型 Count 最后消息

阅读 4

WebForm

负载测试摘要

测试运行信息

负载测试名称 LoadTest1
描述  
开始时间 2015/1/11 上午 11:28:39
结束时间 2015/1/11 上午 11:38:39
预热时长 00:00:00
持续时间 00:10:00
控制器 (Controller) 本地运行
代理数量 1
使用的运行设置 运行设置1

总体结果

最大用户负载 25
测试/秒 11.8
测试失败 7
平均测试时间(秒) 2.08
事务/秒 0
平均事务时间(秒) 0
页面/秒 11.8
平均页面时间(秒) 2.06
请求/秒 11.8
请求失败 7
请求缓存百分比 0
平均响应时间(秒) 2.06
平均内容长度(字节) 100,205

关键统计:最慢的 5 个页面

URL(更多详情链接) 95% 页面时间(秒)
http://192.168.15.141:98/WebForm/WebForm... 5.58

关键统计:最慢的 5 个测试

名称 95% 测试时间(秒)
WebTest1 5.60

测试结果

名称 场景 总测试次数 失败测试(占总数的百分比) 平均测试时间(秒)
WebTest1 场景1 7,073 7 (0.099) 2.08

页面结果

URL(更多详情链接) 场景 测试 平均页面时间(秒) Count
http://192.168.15.141:98/WebForm/WebForm1.aspx 场景1 WebTest1 2.06 7,073

事务结果

名称 场景 测试 响应时间(秒) 已用时间(秒) Count

被测系统资源

机器名称 处理器时间百分比 测试完成时可用内存(MB)
用户电脑 75.8 922

错误

类型 子类型 Count 最后消息
HTTP 错误 500 - 内部服务器错误 7 500 - 内部服务器错误

MVC

负载测试摘要

测试运行信息

负载测试名称 LoadTest2
描述  
开始时间 2015/1/11 下午 1:17:12
结束时间 2015/1/11 下午 1:27:12
预热时长 00:00:00
持续时间 00:10:00
控制器 (Controller) 本地运行
代理数量 1
使用的运行设置 运行设置1

总体结果

最大用户负载 25
测试/秒 30.8
测试失败 0
平均测试时间(秒) 0.65
事务/秒 0
平均事务时间(秒) 0
页面/秒 30.8
平均页面时间(秒) 0.64
请求/秒 30.8
请求失败 0
请求缓存百分比 0
平均响应时间(秒) 0.64
平均内容长度(字节) 50,657

关键统计:最慢的 5 个页面

URL(更多详情链接) 95% 页面时间(秒)
http://192.168.15.141:98/LoadTest/SomePa... 1.70

关键统计:最慢的 5 个测试

名称 95% 测试时间(秒)
WebTest2 1.72

测试结果

名称 场景 总测试次数 失败测试(占总数的百分比) 平均测试时间(秒)
WebTest2 场景1 18,483 0 (0) 0.65

页面结果

URL(更多详情链接) 场景 测试 平均页面时间(秒) Count
http://192.168.15.141:98/LoadTest/SomePage 场景1 WebTest2 0.64 18,484

事务结果

名称 场景 测试 响应时间(秒) 已用时间(秒) Count

被测系统资源

机器名称 处理器时间百分比 测试完成时可用内存(MB)
用户电脑 43.3 854

错误

类型 子类型 Count 最后消息

阅读 5

Webform

负载测试摘要

测试运行信息

负载测试名称 LoadTest1
描述  
开始时间 2015/1/11 下午 1:40:52
结束时间 2015/1/11 下午 1:50:52
预热时长 00:00:00
持续时间 00:10:00
控制器 (Controller) 本地运行
代理数量 1
使用的运行设置 运行设置1

总体结果

最大用户负载 25
测试/秒 18.8
测试失败 0
平均测试时间(秒) 1.32
事务/秒 0
平均事务时间(秒) 0
页面/秒 18.8
平均页面时间(秒) 1.31
请求/秒 18.8
请求失败 0
请求缓存百分比 0
平均响应时间(秒) 1.31
平均内容长度(字节) 100,607

关键统计:最慢的 5 个页面

URL(更多详情链接) 95% 页面时间(秒)
http://192.168.15.141:98/WebForm/WebForm... 2.55

关键统计:最慢的 5 个测试

名称 95% 测试时间(秒)
WebTest1 2.56

测试结果

名称 场景 总测试次数 失败测试(占总数的百分比) 平均测试时间(秒)
WebTest1 场景1 11,261 0 (0) 1.32

页面结果

URL(更多详情链接) 场景 测试 平均页面时间(秒) Count
http://192.168.15.141:98/WebForm/WebForm1.aspx 场景1 WebTest1 1.31 11,261

事务结果

名称 场景 测试 响应时间(秒) 已用时间(秒) Count

6 被测系统资源

机器名称 处理器时间百分比 测试完成时可用内存(MB)
用户电脑 60.8 891

6 个错误

类型 子类型 Count 最后消息

MVC

负载测试摘要

测试运行信息

负载测试名称 LoadTest2
描述  
开始时间 2015/1/11 下午 2:30:38
结束时间 2015/1/11 下午 2:40:38
预热时长 00:00:00
持续时间 00:10:00
控制器 (Controller) 本地运行
代理数量 1
使用的运行设置 运行设置1

总体结果

最大用户负载 25
测试/秒 34.3
测试失败 0
平均测试时间(秒) 0.68
事务/秒 0
平均事务时间(秒) 0
页面/秒 34.3
平均页面时间(秒) 0.68
请求/秒 34.3
请求失败 0
请求缓存百分比 0
平均响应时间(秒) 0.68
平均内容长度(字节) 57,923

关键统计:最慢的 5 个页面

URL(更多详情链接) 95% 页面时间(秒)
http://192.168.15.141:98/LoadTest/SomePa... 1.60

关键统计:最慢的 5 个测试

名称 95% 测试时间(秒)
WebTest2 1.61

6 个测试结果

名称 场景 总测试次数 失败测试(占总数的百分比) 平均测试时间(秒)
WebTest2 场景1 20,603 0 (0) 0.68

6 个页面结果

URL(更多详情链接) 场景 测试 平均页面时间(秒) Count
http://192.168.15.141:98/LoadTest/SomePage 场景1 WebTest1 0.68 20,603

6 个事务结果

名称 场景 测试 响应时间(秒) 已用时间(秒) Count

6 被测系统资源

机器名称 处理器时间百分比 测试完成时可用内存(MB)
用户电脑 54.4 915

6 个错误

类型 子类型 Count 最后消息

阅读 6

Webform

负载测试摘要

测试运行信息

负载测试名称 LoadTest1
描述  
开始时间 2015/1/11 下午 2:15:21
结束时间 2015/1/11 下午 2:25:21
预热时长 00:00:00
持续时间 00:10:00
控制器 (Controller) 本地运行
代理数量 1
使用的运行设置 运行设置1

总体结果

最大用户负载 25
测试/秒 10.7
测试失败 0
平均测试时间(秒) 1.98
事务/秒 0
平均事务时间(秒) 0
页面/秒 10.7
平均页面时间(秒) 1.96
请求/秒 10.7
请求失败 0
请求缓存百分比 0
平均响应时间(秒) 1.96
平均内容长度(字节) 101,007

关键统计:最慢的 5 个页面

URL(更多详情链接) 95% 页面时间(秒)
http://192.168.15.141:98/WebForm/WebForm... 3.77

关键统计:最慢的 5 个测试

名称 95% 测试时间(秒)
WebTest1 3.79

测试结果

名称 场景 总测试次数 失败测试(占总数的百分比) 平均测试时间(秒)
WebTest1 场景1 6,395 0 (0) 1.98

页面结果

URL(更多详情链接) 场景 测试 平均页面时间(秒) Count
http://192.168.15.141:98/WebForm/WebForm1.aspx 场景1 WebTest1 1.96 6,395

事务结果

名称 场景 测试 响应时间(秒) 已用时间(秒) Count

被测系统资源

机器名称 处理器时间百分比 测试完成时可用内存(MB)

控制器和代理资源

机器名称 处理器时间百分比 测试完成时可用内存(MB)
用户电脑 60.4 188

错误

类型 子类型 Count 最后消息

MVC

负载测试摘要

测试运行信息

负载测试名称 LoadTest2
描述  
开始时间 2015/1/11 下午 2:41:57
结束时间 2015/1/11 下午 2:51:57
预热时长 00:00:00
持续时间 00:10:00
控制器 (Controller) 本地运行
代理数量 1
使用的运行设置 运行设置1

总体结果

最大用户负载 25
测试/秒 20.4
测试失败 0
平均测试时间(秒) 0.67
事务/秒 0
平均事务时间(秒) 0
页面/秒 20.4
平均页面时间(秒) 0.66
请求/秒 20.4
请求失败 4
请求缓存百分比 0
平均响应时间(秒) 0.66
平均内容长度(字节) 57,904

关键统计:最慢的 5 个页面

URL(更多详情链接) 95% 页面时间(秒)
http://192.168.15.141:98/LoadTest/SomePa... 1.38

关键统计:最慢的 5 个测试

名称 95% 测试时间(秒)
WebTest2 1.39

测试结果

名称 场景 总测试次数 失败测试(占总数的百分比) 平均测试时间(秒)
WebTest2 场景1 12,220 4 (0.033) 0.67

6 个页面结果

URL(更多详情链接) 场景 测试 平均页面时间(秒) Count
http://192.168.15.141:98/LoadTest/SomePage 场景1 WebTest2 0.66 12,220

6 个事务结果

名称 场景 测试 响应时间(秒) 已用时间(秒) Count

6 被测系统资源

机器名称 处理器时间百分比 测试完成时可用内存(MB)

6 个控制器和代理资源

机器名称 处理器时间百分比 测试完成时可用内存(MB)
用户电脑 59.0 852

6 个错误

类型 子类型 Count 最后消息
异常 SocketException 4 现有连接被远程主机强制关闭

因此,如果您确信 ASP.NET MVC 是未来的发展方向,那么现在就开始学习 MVC 如何?以下是一个出色的 ASP.NET MVC 视频,它在 16 小时内完整教授 MVC。

(MUF)必须使用的功能测试方法

许多开发人员会对上述测试提出质疑,声称

  • 我们有禁用视图状态的选项
  • 我们有使用 HTML 而不是服务器控件的选项
  • 等等...

是的,我们完全同意 Webforms 可以进行调整以最优方式运行,并且它们可以与 ASP.NET MVC 具有几乎相同的性能。

但这项测试遵循了最常用的功能方法。一般来说,当 Webform 被使用 99% 的时间时,开发人员不会禁用视图状态,他们使用后端代码,他们左右使用服务器控件等等。

因为如果我们走那样的测试路线,那么 ASP.NET MVC 也有许多最佳实践,比如 jQuery、JSON 等,以提高性能。

所以这次测试是在 Webform 和 MVC 中最常用的功能的基础上进行的。这两种技术都从零开始,并使用它们在市场上最常用的功能进行比较。

选项与强制

如果你被带到一个酒吧,你可以选择喝葡萄酒或果汁。你很有可能会喝葡萄酒……诱惑,人性,无论你怎么称呼它。

但如果你被带到一家果汁店,你没有选择,你只能被迫喝果汁。

ASP.NET Webform 给你一个选择,而 MVC 迫使你遵循最佳实践。所以使用 Webform,我可以选择使用 HTML,禁用视图状态,但是 RAD 的人性诱惑是如此强烈,以至于大多数时候,人们最终会使用这些功能。

另一方面,MVC 不提供后端代码、服务器控件、视图状态等选项,从而迫使您使用纯 HTML,并且不使用后端代码架构。

延伸阅读

我们鼓励您阅读以下文章,以进一步提升您的 ASP.NET MVC 知识。

如果你想开始学习 MVC,这篇 MVC 文章 将在 7 天内逐步教授 ASP.NET MVC。

如果您想详细了解 MVC 与 Webforms,这两篇文章非常值得一读。

如果您正在准备 MVC 面试,请不要错过 100 个 ASP.NET MVC 面试问题系列

如需进一步阅读,请观看下面的面试准备视频和分步视频系列。

历史

  • 2015年1月13日:初始版本
ASP.NET MVC 与 ASP.NET WebForm 性能比较 - CodeProject - 代码之家
© . All rights reserved.