2009年6月27日 星期六

MVC (1): Asp.NET MVC 概念說明

MVC

MVC是一個 UI Presentation Pattern。與三層式架構並無直接關聯。但因為我們也常三層式架構,不可避免的,要如何將 MVC 與三層式架構一起使用呢?首先就必須了解什麼是 MVC.

MVC 是一種展現層(Presentation Layer)的架構。

Model 即資料
View 根據Model的數據,進行內容展示的組件
Controller 接受並處理客戶端的指命(即操作Model),選擇一個View並輸出內容

Asp.net MVC

Asp.net MVC 當然是將 MVC Pattern 使用於  asp.net  上。因此,會多了一些特定的特色。

Model 即資料
View 根據Model的數據,進行內容展示的組件。以 asp.net MVC 來說,就是輸出成HTML。
Controller 接受並處理客戶端的指命(即操作Model),選擇一個View並輸出內容。以asp.net MVC來說,就是負責Page flow or Page logic

Asp.net MVC + 3-layer Application

若加上三層式架構概念後,又加上了下表的粗體字。

Model 即資料。取得資料時,需呼叫業務邏輯層,再呼叫資料邏輯層以存取資料。因此,Model 與業務邏輯層相關性高。
View 根據Model的數據,進行內容展示的組件。以 asp.net MVC 來說,就是輸出成HTML。展示層
Controller 接受並處理客戶端的指命(即操作Model),選擇一個View並輸出內容。以asp.net MVC來說,就是負責Page flow or Page logic,(中文可翻成UI呈現邏輯)。展示層

 

image

相依性

有個非常重要的地方,是 MVC 的相依性,即下圖箭頭的方向。例如,View 相依於 Model,意即 View 組件有參考到  Model 組件。相反地,Model 並不知道 View 的存在。

這樣帶來了一些好處。首先,是同樣的數據(Model)可以使用不同的View來展示出不同的呈現方式。再者,我們可針對有邏輯的部份(Model的商業邏輯,Controller 的UI呈現邏輯)做測試。最難的部份View,即包含網頁的部份,才進行人工測試,如美工編排是否正確等。

image

1 則留言:

Leo 提到...

獲益良多。很多人都說 MVC 就是三層式架構,可是我總覺得那裡怪怪的,看完您這篇文章,就懂了。謝謝。

Share with Facebook