根據MSDN webcast 整理
邏輯/實體設計實踐
推薦 : 使用邏輯三層模型
- 頁面(.aspx)和使用者控制項(.ascs)
- 可重用類型(組件)放在\bin目錄下
- 資料放在SQL資料庫中
推薦 : 為Web Farm設計
- 不要假定訪問者永遠會回到同一伺服器
- 注意靜態變數和應用狀態
- Web Farm工作階段狀態
推薦 : 用同一個進程
應避免(可能時):
- 對XML Web服務的同步調用
- 通過DCOM的遠程調用
使用XML Web 服務 :
- 網際網路上應用之間的通訊
- 不要用於應用內通訊
推薦 : 使用ISA伺服器,當需要DMZ安全域時 :
- 只允許通過ISA訪問
- ISA隧道通過DMZ到達ASP.NET
- 減少進程轉換
語言/代碼建議
- 避免使用晚綁定
- <%@ Page Language = "VB" Explicit = "true" %>要求聲明所有變數類型,依然允許晚綁定
- <%@ Page Language = "VB" strict = "true" %>禁止使用任何晚綁定
COM互動建議
- 盡量少使用COM,而使用託管的組件
資料建議
- 將資料存放區在SQL Server中
- 選擇合適的資料訪問方式 : OLEDB/SQL client/ODBC
- 合理選擇DataSet和DataReader 進行資料訪問
狀態管理
- 選擇合適的方式存放Session : Inproc/StateServer/database
- 使用單一資料型別
- 避免在Session中儲存STA的COM對象
- 如果不需要Session,則禁用它 : EnableSessionState = "false"
- 如果可能,可使用readonly特性 : EnableSessionState = "Readonly"
- 哪果不需要ViewState則禁用它, EnableViewState = false
- 最小化ViewState中的資料
- 查看ViewState的大小查看HTML輸出源碼或者啟用Trace
使用緩衝
- 頁面緩衝
- 部分頁面緩衝
- Cache對象
- 資料緩衝
- WebService緩衝
量化WEB效能的方法:
機器吞吐率
回應時間
通過給伺服器加負載來測試
使用多台用戶端機器載入
免費Microsoft Web Application Stress
測試多種情境
- 類比對網站的端對端情境遍曆
- 測試單頁效能
需要計算的數值
- 不同負載下的Request/sex(100,250,500,750,1000等同時訪問的客戶)
- 辨明在可接受TTFB/TTLB回應時間內的最大客戶負載
關鍵的效能計數器
處理器,CPU%使用率 || 低數值 = 受陰或者鎖競爭
ASP.NET,入列請求數 || 線性增長意味著伺服器已滿負荷
ASP.NET應用,每秒請求數||動態輸送量(應當一致)
ASP.NET應用,總錯誤數 || 指示功能錯誤(應當是0)
ASP.NET應用,背景工作處理序重啟 || 指示嚴重功能錯誤