說明:不同系統的測試結果可能不同,但測試結果的相對比例應該差別不大。
在第一個測試裡,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。
以下是對本文檔的一個說明,及對回復的答復。
我們開發這個架構的本意是提高用戶的體驗和開發的效率,在開發完成後進行性能測試的時候才發現這個架構對性能有很大的提高,本來還擔心對性能有負面影響的,也算無心插柳。寫本文的目的是和大家分享自己的發現,很多人可能和我原來一樣,沒想到測試結果會是這樣的。
@kiler
分頁讀取數據顯示是最基本的要求,而我們所說的改善是更進一步的,即使分了頁,還是能大大提高性能的。
@Boler Guo
一個好的架構,不僅僅能提高性能,還能提高開發效率和可維護性;
@維生素C.Net
我所說的架構對性能的提高,與數據量是無關的,因為不論數據量大小,不同步驟占用資源的比例是不變的。通過架構可以減少步驟,從而提高性能。
@雙魚座
每個系統規模不一樣,對性能要求都是不一樣的,你的系統沒有性能問題當然好;單就你的描述,這個架構還是能大大提高性能的,當然對你的系統可能不需要。
還有 Ajax 帶來的客戶體驗的提高,我看過很多系統都做得很好,不知道為什麼你不認可,你可以看看我們的演示,不知道會不會對 AJax 有一個新的認識。
@極地銀狐.Net
這位老兄說的太虛,我倒覺得有些東西了解的再深還不如做做測試,測試以前沒有想到僅僅是序列化,ASP.Net 就要占用那麼多資源。
@風語者·疾風
每個工具都有他的優勢,PHP性能可能很高,但至少他的開發效率比不過ASP.Net,每個人選擇開發工具的時候,都會自己均衡的。