首先,從純技術角度對Web型項目做一個計劃,涉及技術難度,環境要求,處理難點,高性能,可擴展性,數據庫移植性,安全性等等,分別進行描述:
l 邏輯結構分層
微軟針對DotNet提供了4個經典的案例有Duwamish、PetShop、Fitch and Mather 和 DotNetFurom.Duwamish和PetShop都給出了完整,可運行的代碼.Duwamish是一個外表簡單,內部極復雜的程序,相反PetShop比較簡單,而且是傳統的三層應用,比較輕巧,而且在例子中給出同時支持SQL server和Oracle數據庫的功能.所以,選擇PetShop3.0的分層作為樣版.
l 技術環境
環境:Win2k Server + IIS + SQL Server2k
技術:ASP.NET + ADO.NET + C# + 企業級模板
開發工具: VS.NET2003
l 數據訪問策略
a. 只用 SQL 語句,好處是支持多版本數據庫時,不用分別維護各版本的存儲過程,缺點是損失一部分性能.
b. 支持多種數據庫,采用工廠模式,運行時根據配置動態綁定
c. 調用DAAB庫,目前DAAB版本是3.0,Petshop3.0使用的是1.0版本.
d. 配置合適的連接池
l 錯誤處理
a. 合理的結構化異常處理,并且給出友好的提示
b. 錯誤信息保存到日志
c. 微軟的企業庫提供了EHAB3.0,可以參考
l 事務處理
.NET中的事務處理分為兩種:自動事務處理和手動事務處理,自動事務處理調用COM+中的企業服務部件實現異構數據庫事務處理,性能不高.手動事務處理分為ADO.NET上的事務處理和存儲過程中的事務處理.一般沒涉及異構數據庫支持,并且沒有用存儲過程的話,采用ADO.NET的事務處理就可以了.
l 安全性
a. 如果是分布式部署,要考慮網絡欺騙,如果單機部署就不用考慮
b. 對受限資源采用Form方式進行授權,原理是根據Cookie,如果要求更高,可以采用基于Windows的身份驗證,或者Passport的方式.一般網站采用的都是Form方式.
c. 配置文件加密,微軟企業庫提供了Configuration Application Block,提供了現成的加密方式,可以參考.也可以自己編寫對稱加密算法.
d. 用戶密碼經過單向加密存入數據庫,Duwamish的SHA1+SALT加密很好,可以參考.
e. 嚴禁數據庫訪問采用SA用戶,并且連接字符串可以采用信任方式訪問,不要放入用戶名和密碼
f. 業務權限劃分,涉及具體業務.微軟的企業庫提供了Security Application Block可以參考.
l 性能
a. 多用Cache,分為頁面輸出緩存和數據緩存.
b. CacheAPI中要注意名字唯一性
c. 少用Session,一般使用InProc類型的session效率最高
d. 頁面上顯示設置Session類型: True,False,ReadOnly
e. 頁面和控件的ViewState屬性
f. 數據查詢使用視圖
l 編碼風格
a. 保持代碼的相似度,提高可度性
b. 遵守命名規范
c. 調用方式模仿PetShop3.0
d. 控件使用規范
e. 美工+報表
l 驗證
a. 數據驗證,比如格式,用code behide結合Validate控件實現
b. 采用客戶端JavaScript時,注意安全性和瀏覽器支持性
c. 業務驗證,比如重復記錄,在BLL層驗證,返回錯誤類型,用Validate控件顯示給用戶
l 并發性
a. 并發性的測試工具MACT
b. 涉及事務處理采用ADO.NET類型的手動事務處理
c. 數據庫查詢時注意鎖的等級,盡量不要用游標,Select時可以采用nolock等等
l 全球化,本地化支持
a. 程序全球化+數據庫全球化
b. 程序全球化包括使用資源和編碼設定
c. 數據庫字段支持Unicode
功能方面的考慮待續