最新回應

[ASP.NET] : WebForm MVC Pattern

前言

        微軟提出了一個新的ASP.NET的開發方式 : ASP.NET MVC。這是一個很強大也很有彈性的開發方式,但是卻要捨棄ASP.NET Web Form,這個好不容易習慣的開發環境。

其實ASP.NET Web Form也可以做到MVC的相關功能,只是在開發上比較複雜,要靠人工來維護程式架構的完整性。本篇文章介紹一種ASP.NET WebForm實做MVC的簡化架構,希望能讓大家在開發ASP.NET應用程式的時候能有多一種的選擇。

 

 

MVC架構圖 

 

 

 

先從整體架構的MVC看起,上圖為整個系統使用的MVC架構圖。一共分為三大類物件,其職責為 :

l   Model : 系統實際做的事情,例如:讀寫資料庫、控制實體裝置。

l   View : 接受使用者輸入決定該執行那個Controller功能、提供系統輸出。

l   Controller : 依照使用者輸入,決定該用Model做甚麼事、決定該用哪個View顯示甚麼資料。

 

從圖上可以很明顯的看到,ViewController之間是雙向相依的關係。我們將它拆解出一個介面,來解除這個相依關係。拆解完的圖,如下圖所示 :

 

 

 

 

 

頁面物件圖

 

 

 

在上一個章節,我們已經看過了系統所使用的MVC架構圖。可是因為ASP.NET的種種先天後天上的限制,整個MVC架構並沒有辦法直接搬到ASP.NET上。

上圖是將MVC架構轉化為ASP.NET WebForm的頁面物件。為了方便說明,找了管理使用者的功能,來說明頁面物件的職責。

 

頁面物件的職責為 :

l   UserManageModel.cs(類別) : 讀寫使用者資料庫。

l   UserQueryView.ascx(Web使用者控制項) : 預設呈現的View 顯示查詢結果、接受使用者輸入。

l   UserInsertView.ascx(Web使用者控制項) :UserData新增輸入。

l   UserUpdateView.ascx(Web使用者控制項) :UserData更新輸入。

l   UserManageConsole.aspx (Web 頁面) : 包含所有View控制項,決定該呈現哪個View。實做IController用以提供View使用。建立Model用以提供View使用。

 

頁面MVC分類為

l   Model : UserManageModel.cs

l   View : UserQueryView.ascxUserInsertView.ascxUserUpdateView.ascx

l   Controller : UserManageConsole.aspx

 

光看這張圖很難理解,整個頁面物件在做的事情。因為這張圖是靜態呈現整個系統的頁面物件,必須要搭配下一章節的頁面活動圖,才能夠比較清楚的了解整個系統的運作。

 

 

頁面活動圖

 

 

上圖為新增User的活動圖,案例說明如下 :

1.          顯示QueryView

2.          使用者按下新增按鈕。QueryView呼叫IManageController.Insert()

3.          IManageController隱藏所有View,顯示InsertView

4.          使用者在InsertView輸入資料並且通過資料驗證。

5.          使用者按下送出按鈕。InsertView呼叫IManageController.Insert(userData)

6.          IManageController呼叫ManageModel. Insert(userData)將資料寫入資料庫。

7.          IManageController隱藏所有Viw,顯示QueryView

 

 

 

 

上圖為修改User的活動圖,案例說明如下 :

1.          顯示QueryView

2.          使用者選擇要修改的資料按下修改按鈕。QueryView呼叫IManageController.Update(userId)

3.          IManageController隱藏所有Viw,顯示UpdateView

4.          UpdateView使用userId查詢資料庫內的userData顯示在畫面

5.          使用者在UpdateView輸入資料並且通過資料驗證。

6.          使用者按下送出按鈕。UpdateView呼叫IManageController.Update(userData)

7.          IManageController呼叫ManageModel. Update(userData)將資料寫入資料庫。

8.          IManageController隱藏所有Viw,顯示QueryView

 

優缺點說明

        依照這個架構開發的ASP.NET頁面,就享有很多開發上的優點。例如 :

l   畫面呈現、頁面流程、企業邏輯三者分離,變更其中內容不會影響到其他。

l   將系統每個使用案例流程,拆解至Controller的一個Function內,讓每個使用案例的進入點變成是一個Function,而不是一個特定的頁面。

l   程式碼乾淨直覺,一個Web使用者控制項只有一個單一的職責。

l   其他……

 

當然缺點也很明顯。例如 :

l   架構複雜不是一頁就全部寫完,學習的曲線較高。

l   Controller View拆的不是很徹底,修改功能常常要一起修改。

l   拆解多層的呼叫,執行的效率較低。

l   其他……

 

結語

        本篇文章介紹一種ASP.NET WebForm實做MVC的簡化架構,讓大家在開發ASP.NET應用程式的時候有多一種的選擇。當然整個架構的優缺點很明顯,在實做的時候需要多點的考量。要用哪種架構開發系統,應該依照專案的複雜度,人力成本等等去做選擇。這邊要特別說 : 沒有所謂最好的架構,只要把專案完成能收到錢就是好的架構。

另外整篇內容只包含了整個ASP.NET WebForm MVC的分析設計

,實做部分會再陸陸續續的發表。

 

 

 


期許自己~
能以更簡潔的文字與程式碼,傳達出程式設計背後的精神。
真正做到「以形寫神」的境界。


 

 

 

2010/2/2 16:43| 閱讀數 : 760 | 1 人收藏 4 人推薦 我要推薦 | Add Comment | 文章分類: ASP.NET 訂閱


關連文章

回應

目前沒有回應.
標題 *
名稱 *
Email (將不會被顯示)
Url
回應
登入後使用進階評論
Please add 4 and 2 and type the answer here: