通过改善架构来提高 ASP.Net 应用程序的性能
有的時(shí)候我們的 Web 應(yīng)用程序在本機(jī)測(cè)試的時(shí)候,速度很快,可放在局域網(wǎng)上測(cè)試的時(shí)候,卻會(huì)發(fā)現(xiàn)存在性能問(wèn)題;甚至有時(shí)在局域網(wǎng)速度正常的應(yīng)用,在廣域網(wǎng)上還會(huì)發(fā)現(xiàn)問(wèn)題。這些 問(wèn)題一般都是應(yīng)用中的疏忽或錯(cuò)誤,并不涉及到系統(tǒng)架構(gòu),通過(guò)真實(shí)環(huán)境的調(diào)試和測(cè)試都能找到問(wèn)題所在并解決。
??? 今天我們所要說(shuō)的是通過(guò)改善架構(gòu)來(lái)從根本上提高 ASP.Net 應(yīng)用程序的性能。
??? 我們先來(lái)對(duì) ASP.Net 的幾個(gè)簡(jiǎn)單的應(yīng)用做一下測(cè)試。
??? 測(cè)試環(huán)境:AthlonXP 3200+,DDR400 512M,WindowsXP SP2,本機(jī)的SQL Server 2000,中文 Northwind 數(shù)據(jù)庫(kù)(從Access導(dǎo)入)的產(chǎn)品表,約70條記錄。
| 測(cè)試序號(hào) | 程序類(lèi)型 | 測(cè)試方法 | 測(cè)試結(jié)果 (每秒請(qǐng)求數(shù)) | SQLServer 所占用資源 | ASP.Net 所占用資源 |
| 1 | Web服務(wù) | 用產(chǎn)品表填充DataSet,并返回記錄數(shù) | 250次 | 100% | - |
| 2 | Web服務(wù) | 用產(chǎn)品表填充DataSet,并返回 DataSet | 138次 | 54% | 46% |
| 3 | Web應(yīng)用程序 | 用產(chǎn)品表填充DataSet,并綁定 DataGrid | 70次 | 28% | 72% |
說(shuō)明:不同系統(tǒng)的測(cè)試結(jié)果可能不同,但測(cè)試結(jié)果的相對(duì)比例應(yīng)該差別不大。
??? 在第一個(gè)測(cè)試?yán)?#xff0c;Web 服務(wù)只是從數(shù)據(jù)庫(kù)讀取記錄填充到 DataSet,并返回記錄數(shù)(注意不是返回記錄),所占用的系統(tǒng)資源很少,假設(shè)系統(tǒng)資源完全被SQLServer 占用,并且對(duì)結(jié)論不會(huì)有負(fù)面影響。
??? 在第二個(gè)測(cè)試中,Web 服務(wù)將 DataSet 返回,每秒請(qǐng)求數(shù)就降低了幾乎一半, 這一半的系統(tǒng)資源,被ASP.Net 用于將 DataSet 序列化。
??? 在第三個(gè)測(cè)試中,Web 應(yīng)用程序?qū)?DataSet 綁定到 DataGrid,并返回頁(yè)面,每秒請(qǐng)求數(shù)幾乎降低了四分之三,這些系統(tǒng)資源被 ASP.Net 用于將 DataSet 綁定到 DataGrid,并將頁(yè)面序列化。
??? 從以上測(cè)試中我們可以看到,DataGrid 的綁定和序列化會(huì)占用大量的系統(tǒng)資源,如果要提高系統(tǒng)性能,需要通過(guò)改善架構(gòu)來(lái)實(shí)現(xiàn)。
??? 一、將對(duì)數(shù)據(jù)庫(kù)的操作,從頁(yè)面中分離出來(lái),放到獨(dú)立的持久層。
??? 這樣在客戶端通過(guò) DOM 或 XSLT 將數(shù)據(jù)展現(xiàn)為表格,來(lái)代替服務(wù)器端 DataGrid 的綁定工作,大大減輕了服務(wù)器的壓力。并且客戶端通過(guò) AJAX 從持久層獲取數(shù)據(jù),會(huì)提高用戶的使用體驗(yàn)。
??? 二、將頁(yè)面從數(shù)據(jù)中徹底獨(dú)立出來(lái),以便利用緩存。
??? 有的應(yīng)用了 AJAX 的頁(yè)面還是會(huì)讀取初始數(shù)據(jù),這樣的話頁(yè)面就不能緩存。這些頁(yè)面一般比較復(fù)雜,會(huì)比普通頁(yè)面占有更多的資源,如果能夠利用緩存,將進(jìn)一步提高系統(tǒng)的性能。
??? 通過(guò)以上兩點(diǎn),ASP.Net 的性能,幾乎能夠提高一倍。
轉(zhuǎn)載于:https://www.cnblogs.com/jerrypen/archive/2011/09/23/2187816.html
總結(jié)
以上是生活随笔為你收集整理的通过改善架构来提高 ASP.Net 应用程序的性能的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 自利利他德行天下的意思是什么
- 下一篇: 小班教案《我的小脚丫》反思