此页面上的内容需要较新版本的 Adobe Flash Player。

获取 Adobe Flash Player

您现在的位置: 智可网 - 程序开发 - 微软开发专区 - .Net - .Net实例 - 正文
通过改善架构来提高 ASP.Net 应用程序的性能
教程录入:吴家声    责任编辑:446901797 作者:佚名 文章来源:本站原创
     有的时候我们的 Web 应用程序在本机测试的时候,速度很快,可放在局域网上测试的时候,却会发现存在性能问题;甚至有时在局域网速度正常的应用,在广域网上还会发现问题。这些问题一般都是应用中的疏忽或错误,并不涉及到系统架构,通过真实环境的调试和测试都能找到问题所在并解决。
   今天我们所要说的是通过改善架构来从根本上提高 ASP.Net 应用程序的性能。
   我们先来对 ASP.Net 的几个简单的应用做一下测试。
   测试环境:AthlonXP 3200+,DDR400 512M,WindowsXP SP2,本机的SQL Server 2000,中文 Northwind 数据库(从Access导入)的产品表,约70条记录。
  
  测试序号 程序类型 测试方法 测试结果
  (每秒请求数) SQLServer
  所占用资源 ASP.Net
  所占用资源
  1 Web服务 用产品表填充DataSet,并返回记录数 250次 100% -
  2 Web服务 用产品表填充DataSet,并返回 DataSet 138次 54% 46%
  3 Web应用程序 用产品表填充DataSet,并绑定 DataGrid 70次 28% 72%
  说明:不同系统的测试结果可能不同,但测试结果的相对比例应该差别不大。
  
   在第一个测试里,Web 服务只是从数据库读取记录填充到 DataSet,并返回记录数(注意不是返回记录),所占用的系统资源很少,假设系统资源完全被SQLServer 占用,并且对结论不会有负面影响。
   在第二个测试中,Web 服务将 DataSet 返回,每秒请求数就降低了几乎一半, 这一半的系统资源,被ASP.Net 用于将 DataSet 序列化。
   在第三个测试中,Web 应用程序将 DataSet 绑定到 DataGrid,并返回页面,每秒请求数几乎降低了四分之三,这些系统资源被 ASP.Net 用于将 DataSet 绑定到 DataGrid,并将页面序列化。
  
   从以上测试中我们可以看到,DataGrid 的绑定和序列化会占用大量的系统资源,如果要提高系统性能,需要通过改善架构来实现。
  
   一、将对数据库的操作,从页面中分离出来,放到独立的持久层。
   这样在客户端通过 DOM 或 XSLT 将数据展现为表格,来代替服务器端 DataGrid 的绑定工作,大大减轻了服务器的压力。并且客户端通过 AJax 从持久层获取数据,会提高用户的使用体验。
   二、将页面从数据中彻底独立出来,以便利用缓存。
   有的应用了 AJax 的页面还是会读取初始数据,这样的话页面就不能缓存。这些页面一般比较复杂,会比普通页面占有更多的资源,如果能够利用缓存,将进一步提高系统的性能。
  
   通过以上两点,ASP.Net 的性能,几乎能够提高一倍。
  
   您可以自己作一下测试,或者访问我们的示例 www.BizStruct.cn。 
  
分享
打赏我
打开支付宝"扫一扫" 打开微信"扫一扫"
客户端
"扫一扫"下载智可网App
意见反馈
通过改善架构来提高 ASP.Net 应用程序的性能
作者:佚名 来源:本站原创
     有的时候我们的 Web 应用程序在本机测试的时候,速度很快,可放在局域网上测试的时候,却会发现存在性能问题;甚至有时在局域网速度正常的应用,在广域网上还会发现问题。这些问题一般都是应用中的疏忽或错误,并不涉及到系统架构,通过真实环境的调试和测试都能找到问题所在并解决。
   今天我们所要说的是通过改善架构来从根本上提高 ASP.Net 应用程序的性能。
   我们先来对 ASP.Net 的几个简单的应用做一下测试。
   测试环境:AthlonXP 3200+,DDR400 512M,WindowsXP SP2,本机的SQL Server 2000,中文 Northwind 数据库(从Access导入)的产品表,约70条记录。
  
  测试序号 程序类型 测试方法 测试结果
  (每秒请求数) SQLServer
  所占用资源 ASP.Net
  所占用资源
  1 Web服务 用产品表填充DataSet,并返回记录数 250次 100% -
  2 Web服务 用产品表填充DataSet,并返回 DataSet 138次 54% 46%
  3 Web应用程序 用产品表填充DataSet,并绑定 DataGrid 70次 28% 72%
  说明:不同系统的测试结果可能不同,但测试结果的相对比例应该差别不大。
  
   在第一个测试里,Web 服务只是从数据库读取记录填充到 DataSet,并返回记录数(注意不是返回记录),所占用的系统资源很少,假设系统资源完全被SQLServer 占用,并且对结论不会有负面影响。
   在第二个测试中,Web 服务将 DataSet 返回,每秒请求数就降低了几乎一半, 这一半的系统资源,被ASP.Net 用于将 DataSet 序列化。
   在第三个测试中,Web 应用程序将 DataSet 绑定到 DataGrid,并返回页面,每秒请求数几乎降低了四分之三,这些系统资源被 ASP.Net 用于将 DataSet 绑定到 DataGrid,并将页面序列化。
  
   从以上测试中我们可以看到,DataGrid 的绑定和序列化会占用大量的系统资源,如果要提高系统性能,需要通过改善架构来实现。
  
   一、将对数据库的操作,从页面中分离出来,放到独立的持久层。
   这样在客户端通过 DOM 或 XSLT 将数据展现为表格,来代替服务器端 DataGrid 的绑定工作,大大减轻了服务器的压力。并且客户端通过 AJax 从持久层获取数据,会提高用户的使用体验。
   二、将页面从数据中彻底独立出来,以便利用缓存。
   有的应用了 AJax 的页面还是会读取初始数据,这样的话页面就不能缓存。这些页面一般比较复杂,会比普通页面占有更多的资源,如果能够利用缓存,将进一步提高系统的性能。
  
   通过以上两点,ASP.Net 的性能,几乎能够提高一倍。
  
   您可以自己作一下测试,或者访问我们的示例 www.BizStruct.cn。