積經驗
不同技術不同人研究DesignPatternTDDLINQtoSQL,LINQtoEntitiesAutoMapperMoq…
協同開發、團隊分工
開發方法論
透過MVC分階段開發ModelControllerViewModelRepositoryControllerViewModelRepositoryServiceControllerViewIoC/DI/AutoMapper/UnitTest/IntegrationTest透過關注點分離簡化複雜度漸進式擴充各ASP.NETMVC擴充點HTMLHelper,AtionFilter,ModelBinder,ModelValidation,…定時做CodeRefactoring推薦書籍:重構-向範式前進(RefactoringtoPatterns)
團體合作的ASP.NETMVC開發策略
架構師專注Model設計資料結構、資料驗證規則、商業邏輯(BusinessLogic)LINQtoSQL,Repository,Service,DALModelValidation,ModelBinder,DataAnnotation分析師專注Controller設計網頁與後端的互動關係URLRouting,Controller,Actions,ActionFilter開發人員專注View決定前端呈現的細節、實做Action的程式碼、利用Service物件開發人員千萬不要自己承攬HTML,CSS的編修
工作撰寫單元測試程式(非整合測試)
高效能的ASP.NETMVC網站
寫出高效能的程式碼
善用ASP.NET快取機制與用戶端快取機制OutputCacheCacheAPIClient-sideCache適當的透過HTMLHelper產生URL的方式Strong-TypedHTMLHelperTemplateHTMLHelper(ASP.NETMVC2.0)適度的使用CDN(ContentDeliveryNetwork)最小化與合併Scripts、CSS與Images(CSSSpirit)部署時用Release模式建置網站移除不要的HttpModule關閉
web.config中的debug模式HTTP壓縮(要小心CPU問題)
縮短開發時間提升開發速度
累積經驗,撰寫程式碼產生器專注於解決問題,而非程式碼透過關注點分離簡化複雜度進而減少維護時間將問題釐清,並適度分離物件責任,以達到權責分工的目的一個物件僅負責一件事,一個ViewModel只給一個View用撰寫可靠的單元測試程式每個人都要能寫出可讓你們自己信任的測試程式撰寫可靠的整合測試程式透過專職的測試人員撰寫整合測試案例程式確保程式的執行結果與需求一致,保證軟體品質不會退化
安全的ASP.NETMVC網站
適當的選擇ActionSelector讓Action不要這麼容易曝光在網路上有限制的允許HTML輸入[ValidateInput(false)](預設為true)所有輸出的資料都要做HTML.Encode<%:Model%>(ASP.NET4.0)瞭解ModelBinder與ModelValidation的風險Under-PostOver-PostNon-nulldatatype適當的處理錯誤[HandleError]Views\Shared\Error.aspx原始碼檢測工具至今沒有任何一家源碼檢測軟體能夠檢測ASP.NETMVC專案,因為他們連入口點(EntryPoint)都找不到
單元測試的經驗分享
何謂「單元測試」?
測試的最小單位,必須是可信任的、可重複執行的。
例如:測試某一個類別(Class)的某一個方法(Method)
必須與「整合測試」做非常清楚的切割,兩者個概念完全
不同
DAL(DataAccessLayer)的程式不建議撰寫「單元測試」,因為DAL的程式會與資料庫直接產生關聯,而資料庫中可能還會有Trigger,St