使用Singleton改善ASP.NET性能備注
在最近的ASP.NET項目中,我們在 測試 期間發現系統 性能 低下。最開始我們懷疑是由于使用了過多的UserControl所致。但是由于這已經是項目晚期,已經不可能再推翻以往的設計架構重來。所以我們不得不尋找其它可以改善性能的方法。 剛開始我們使用緩存來進行改
在最近的ASP.NET項目中,我們在
測試期間發現系統
性能低下。最開始我們懷疑是由于使用了過多的UserControl所致。但是由于這已經是項目晚期,已經不可能再推翻以往的設計架構重來。所以我們不得不尋找其它可以改善性能的方法。
剛開始我們使用緩存來進行改善。但是我們的頁面中大量的數據都是隨時變化的,
.net framework不夠精確的緩存命中率給我們的數據一致性表現帶來尷尬的處境。
其次Viewstate的優化似乎也沒有什么效果,可以優化的地方少之又少。
唯一可以做的便是將大量頁面的SessionState改為ReadOnly,因為我們需要在處理過程中使用Session進行用戶效驗。
最后我們不得不從后臺處理來考慮。我們發現后臺的服務類以及業務邏輯被頻繁調用,所以我們使用Singleton模式將底層業務邏輯類和工具類進行了重構,發現性能大幅提升。雖然有人說Singleton的一個缺點便是每次都需要檢查類是否創建,這會消耗資源。但是檢查所消耗的資源總比創建要小得多吧,何況不會無止境的吞噬寶貴的內存。
這次的經歷告訴我們一個教訓:良好的結構將會保證系統的穩定性和性能。
原文轉自:http://www.anti-gravitydesign.com