性能差异 ASP.NET与ASP.NET MVC

一、为什么说 ASP.NET WebForm 比 ASP.NET MVC 要差?

  WebForm 顾名思义,微软一向主打简单化,窗体模式,拖拽控件就能做网站了,

  然而这也引发了许多 Java 和 .NET 语言好坏(性能)的争议,

  很早的时候部门老大不让用服务器控件,现在才明白是为什么。

  我们不得不考虑的问题是,既然ASP.NET Web Form 如此成功且具有优势,为什么微软还要推出ASP.NET MVC?

  主要是因为ASP.NET Webform的性能问题。在Web应用程序中从两方面来定义性能:

  1. 响应时间: 服务器响应请求的耗时

  2. 带宽消耗: 同时可传输多少数据。

 

  响应时间

  我们可以理解为什么ASP.NET Webform比较慢,如图我们做了一些小的加载测试。

  分别使用ASP.Net MVC和ASP.Net Webform,发现ASP.Net MVC的响应时间比Webform快了两倍。

  接下来我们在思考一个问题为什么ASP.NET MVC的性能更好?看看下面这个示例,简单的UI代码和UI的后台代码。

  通过分析我们可以得知,每一次请求都有转换逻辑,运行并转换服务器控件为HTML输出。如果我们的页面使用表格,树形控件等复杂控件,

  转换就会变得很糟糕且非常复杂。HTML输出也是非常复杂的。由于这些不必要的转换从而增加了响应时间。

  该问题的解决方案就是摆脱后台代码,写成纯HTML代码。

 

  带宽消耗

  ASP.NET开发人员都非常熟悉Viewstates,因为它能够自动保存post返回的状态,减少开发时间。

  但是这种开发时间的减少会带来巨大的消耗,Viewstate增加了页面的大小。

  在做的加载测试中,与MVC 对比,我们发现Viewstate增加了两倍的页面存储。

 

  1、HTML 消耗

  现在因为我们都是后台代码和ASP.NET web server控件的努力,我们对于怎样得到HTML以及如何使他们更有效没有更好的办法。

  如下面展示的ASPX 代码,你能确定会生成什么样的HTML代码吗?

  2、后台代码类的重用性

  如果仔细观察一些专业的ASP.NET Webform项目,你会发现后台代码类往往都包含了大量的代码,并且这些代码也是非常复杂的。

  而现在,后台代码类继承了“System.Web.UI.Page”类。但是这些类并不像普通的类一样能够到处复用和实例化。

  换句话来讲,在Weform类中永远都不可能执行以下代码中的操作:

时间: 2024-10-11 07:21:14

性能差异 ASP.NET与ASP.NET MVC的相关文章

ASP.NET没有魔法——ASP.NET MVC Razor与View渲染

对于Web应用来说,它的界面是由浏览器根据HTML代码及其引用的相关资源进行渲染后展示给用户的结果,换句话说Web应用的界面呈现工作是由浏览器完成的,Web应用的原理是通过Http协议从服务器上获取到对应的Html代码以及相关资源,使得浏览器能够完成正确的呈现工作. ASP.NET MVC作为一个Web应用构建框架View承担了UI显示的功能,在开发过程中View以Action的名称命名,当用户的请求被路由到某一Action方法时,ASP.NET MVC将会根据Action的名称来获取到对应的V

ASP.Net Core 2.2 MVC入门到基本使用系列 (二)

本教程会对基本的.Net Core 进行一个大概的且不会太深入的讲解, 在您看完本系列之后, 能基本甚至熟练的使用.Net Core进行Web开发, 感受到.Net Core的魅力. 本教程知识点大体分为以下几个阶段 ASP.Net Core MVC基础知识 Startup基本配置和理解 Controller使用 Razor视图 传统视图 Model Validation (基本用法) 一点点的Vue (教程使用Vue配合) SqlSugar ORM (进行数据库交互) Entity Frame

ASP.Net Core 2.2 MVC入门到基本使用系列 (三)

本教程会对基本的.Net Core 进行一个大概的且不会太深入的讲解, 在您看完本系列之后, 能基本甚至熟练的使用.Net Core进行Web开发, 感受到.Net Core的魅力. 本教程知识点大体分为以下几个阶段 ASP.Net Core MVC基础知识 Startup基本配置和理解 Controller使用 Razor视图 传统视图 Model Validation (基本用法) 一点点的Vue (教程使用Vue配合) SqlSugar ORM (进行数据库交互) Entity Frame

ASP.Net Core 2.2 MVC入门到基本使用系列 (四)

本教程会对基本的.Net Core 进行一个大概的且不会太深入的讲解, 在您看完本系列之后, 能基本甚至熟练的使用.Net Core进行Web开发, 感受到.Net Core的魅力. 本教程知识点大体分为以下几个阶段 ASP.Net Core MVC基础知识 Startup基本配置和理解 Controller使用 Razor视图 传统视图 Model Validation (基本用法) 一点点的Vue (教程使用Vue配合) SqlSugar ORM (进行数据库交互) Entity Frame

Configuring Autofac to work with the ASP.NET Identity Framework in MVC 5

https://developingsoftware.com/configuring-autofac-to-work-with-the-aspnet-identity-framework-in-mvc-5 Configuring Autofac to work with the ASP.NET Identity Framework in MVC 5 By Tony Mackay  02 February 2015 This post will show you how to modify the

.NET、C#和ASP.NET,ASP.NET MVC 四者之间的区别

from:http://www.cnblogs.com/wwym/p/5555772.html 经常,会有一些人搞不清楚.NET和c#和ASP.NET这三者之间的关系,她们都是什么呢?他们之间有什么关系呢?今天我简单给大家总结一下吧. 首先:什么是.NET? .NET是微软公司下的一个开发平台,.NET核心就是.NET Framwork(.NET框架)是.NET程序开发和运行的环境,在这个平台下可以用不同的语言进行开发,因为.NET是跨语言的一个平台.语言可以是C#,f#,j#,vb.net等等

ASP.NET Web Form和MVC中防止F5刷新引起的重复提交问题

转载  http://www.cnblogs.com/hiteddy/archive/2012/03/29/Prevent_Resubmit_When_Refresh_Reload_In_ASP_NET_Web_Form_MVC.html 什么是刷新/重新载入 IE中的刷新(Refresh),在FF和Chrome中称为重新载入(Reload),与正常进入页面的区别在于以下两点: 1. 缓存控制 如果文件(比如图片)在本地缓存中已经存在,正常进入页面会不访问服务器而直接从本地加载.而对于刷新操作,

ASP.NET CORE 1.0 MVC API 文档用 SWASHBUCKLE SWAGGER实现

from:https://damienbod.com/2015/12/13/asp-net-5-mvc-6-api-documentation-using-swagger/ 代码生成工具: https://github.com/NSwag/NSwag This article shows how to document your ASP.NET Core 1.0 MVC API using Swagger with Swashbuckle. Per default, it does not us

ASP.NET没有魔法——ASP.NET MVC使用Oauth2.0实现身份验证

原文:ASP.NET没有魔法--ASP.NET MVC使用Oauth2.0实现身份验证 随着软件的不断发展,出现了更多的身份验证使用场景,除了典型的服务器与客户端之间的身份验证外还有,如服务与服务之间的(如微服务架构).服务器与多种客户端的(如PC.移动.Web等),甚至还有需要以服务的形式开放给第三方的,身份验证这一功能已经演化为一个服务,很多大型应用中都有自己的身份验证服务器甚至集群,所以普通的身份验证方式已经不能满足需求. 在.Net领域中也有一些开源的身份验证服务器组件,如Identit

ASP.NET Core 2.0 MVC项目实战

 一.前言 毕业后入职现在的公司快有一个月了,公司主要的产品用的是C/S架构,再加上自己现在还在学习维护很老的delphi项目,还是有很多不情愿的.之前实习时主要是做.NET的B/S架构的项目,主要还是用的那种传统的开发模式,只有一个项目用到了Web API,自己负责后端的接口功能实现.既然现在没办法改变现状,那就先改变自己吧.定了个计划,下班后慢慢的开始学习ASP.NET Core Web API和Vue,准备从前端到后端自己写一个小项目玩玩,毕竟代码这个东西,时间长了是会忘的.