The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

ASP.NET MVC 開發心得分享 (1):開發流程篇

終於在這次春節長假開始有時間研究 ASP.NET MVC,雖然我在之前已經將所有 ASP.NET MVC Tutorials 文件看完了,也看懂了,但說實在的,自己開始「動手」寫的時候,還是一樣「很卡」,非常的不順手,文件、範例程式一樣到處翻,好在我平時有整理學習資料的習慣,資料找起來有比較順手一些,建議各位在研發時一定要有做筆記的習慣。

我整理了一下最近的思緒,對於一個全新的 ASP.NET MVC 專案,應該會有以下流程:

  1. 準備好網站雛形頁面(Prototype)或所有網站之靜態版型頁面
    • 透過頁面元素進行資料來源分析
      • 設計資料庫結構、表格、欄位、關連
    • 分析出所有需要的 Controller, Model, View, MasterPage, UserControl, Html Helpers
      • 可於 Prototype 加註相關說明
  2. 資料庫必須先準備好
    • 需將表格、關連、檢視表、預儲程序都先建立好
    • 資料庫中最好包括測試資料,以方便套版測試之用
  3. 新增 ASP.NET MVC 專案
  4. 建立 Model ( LINQ to SQL )
    • 先透過 LINQ to SQL Designer 介面完成 ORM 物件對應
    • 再補充所有表格的 partial class 的撰寫,並將資料驗證與商業邏輯都加上
  5. 建立 Controller
    • 將共用的 Code 寫到 BaseController 去
      • 建立共用的 DataContext 物件
      • 各 ViewPage / ViewMasterPage / ViewUserControl 共用的 ViewData 物件
    • 再將原先規劃的 Controller 全部建立
    • 再將所有 Controller 應該出現的 Action 全部建立好
    • 適當的套用自訂 Action Filters,包括 HandleError, OutputCache, Authorize
    • 接著開始分工,將不同的 Controller 指派給不同的人進行開發
  6. 建立 View
    • 依照 Controller 的分工,各自將各自的 View 進行套版
    • 在套用 ASP.NET 內建的 SiteMap 時,要注意 securityTrimmingEnabled 屬性是不支援的,若選單會依據權限不同而顯示不同的選單項目,需自行修正。
      參考文章:Providing Website Navigation with SiteMaps
    • 盡可能的用 Strong-Typed 的方式開發,降低 Runtime Error 的風險
    • 適當的設定 web.config 預設匯入一些在 View 中常用的命名空間,例如:ProjectX.Models
      參考文章:ASP.NET 如何預設匯入指定的命名空間(Namespace)
    • 適當的將在不同頁面中重複出現的元素做成 User Control
    • 若輸出的資料包括特殊的表單元素時,建議做成 Html Helper 擴充方法,以簡化頁面邏輯!

這些流程日後應該會再補充,我會更新在同一篇文章內。