• 性能差异 ASP.NET WebForm与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类中永远都不可能执行以下代码中的操作:
  • 相关阅读:
    Linux的优缺点,Linux与windows的区别
    一文带你读懂 Mysql 和 InnoDB存储引擎
    由浅入深一个Demo带你认识Restful风格的架构
    同步锁Synchronized与Lock的区别?
    认识多线程中start和run方法的区别?
    Java多线程与并发相关问题
    初识WebSocket
    Tomcat与Nginx服务器的配合使用及各自的区别
    Java内存模型相关原则详解
    你对区块链的理解还停留在炒币上吗
  • 原文地址:https://www.cnblogs.com/loongsoft/p/7273521.html
Copyright © 2020-2023  润新知