熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

ASP.NET MVC 4框架揭秘:什麼是MVC模式

2013-11-13 12:32:53  來源: .NET編程 

    什麼是MVC模式

  MVC的創建者是Trygve M H Reenskau他是挪威的計算機專家同時也是奧斯陸大學的名譽教授MVC是他在年訪問施樂帕克研究中心(Xerox Palo Alto Research CenterXerox PARC)期間提出一種主要針對GUI應用的軟件架構模式MVC最初用於SmallTalkTrygve最初對MVC的描述記錄在Applications Programming in Smalltalk(TM)How to use ModelViewController (MVC)這篇論文中有興趣的讀者可以通過地址http://stwwwcsillinoisedu/ users/smarch/stdocs/mvchtml閱讀這篇論文

  MVC體現了關注點分離這一基本的設計方針它將構成一個人機交互應用涉及的功能分為ModelController和View三部分它們各自具有相應的職責

  Model是對應用狀態和業務功能的封裝我們可以將它理解為同時包含數據和行為的領域模型(Domain Model)Model接受Controller的請求並完成相應的業務處理在狀態改變的時候向View發出相應的通知

  View實現可視化界面的呈現並捕捉最終用戶的交互操作(比如鼠標和鍵盤操作)

  View捕獲到用戶交互操作後會直接轉發給Controller後者完成相應的UI邏輯如果需要涉及業務功能的調用Controller會直接調用Model在完成UI處理之後Controller會根據需要控制原View或者創建新的View對用戶交互操作予以響應

  圖揭示了MVC模式下ModelView和Controller之間的交互對於傳統的MVC模式很多人認為Controller僅僅是View和Model之間的中介實則不然View和Model存在直接的聯系View可以直接調用Model查詢其狀態信息當Model狀態發生改變的時候它也可以直接通知View比如在一個提供股票實時價位的應用中維護股價信息的Model在股價變化的情況下可以直接通知相關的View改變其顯示信息

  圖  ModelViewController之間的交互

  從消息交換模式的角度來講Model針對View的狀態通知和View針對Controller的用戶交互通知都是單向的我們推薦采用事件機制來實現這兩種類型的通知從設計模式的角度來講就是采用觀察者(Observer)模式通過注冊/訂閱的方式來實現它們即View作為Model的觀察者通過注冊相應的事件來檢測狀態的改變而Controller作為View的觀察者通過注冊相應的事件來處理用戶的交互操作

  我看到很多人將MVC和所謂的三層架構進行比較其實兩者並沒有什麼可比性MVC更不是分別對應著UI業務邏輯和數據存取三個層次不過兩者也不能說完全沒有關系Trygve M H Reenskau當時提出MVC的時候是將其作為構建整個GUI應用的架構模式這種情況下的Model實際上維護著整個應用的狀態並實現了所有的業務邏輯所以它更多地體現為一個領域模型而對於多層架構來說(比如我們經常提及的三層架構)MVC是被當成UI呈現層(Presentation Layer)的設計模式而Model則更多地體現為訪問業務層的入口(Gateway)如果采用面向服務的設計業務功能被定義成相應服務並通過接口(契約)的形式暴露出來這裡的Model還可以表示成進行服務調用的代理

       返回目錄ASPNET MVC 框架揭秘

       編輯推薦

       Java程序性能優化讓你的Java程序更快更穩定

       Visual C++音頻/視頻技術開發與實戰


From:http://tw.wingwit.com/Article/program/net/201311/16131.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.