標籤:關係 http 伺服器 方法 處理 應用程式 get 存在 mfc
本文編譯自J2EE的相關文檔。
MVC(Model-View-Controller)應用程式結構被用來分析分布式應用程式的特徵。這種抽象結構能有助於將應用程式分割成若干邏輯組件,使程式設計變得更加容易。
MVC結構提供了一種按功能對各種對象進行分割的方法(這些對象是用來維護和表現資料的),其目的是為了將各對象間的耦合程度減至最小。MVC結構本來是為了將傳統的輸入(input)、處理(processing)、輸出(output)任務運用到圖形化使用者互動模型中而設計的。但是,將這些概念運用於基於Web的企業級多層應用領域也是很適合的。
在MVC結構中,模型(Model)代表應用程式的資料(data)和用於控制訪問和修改這些資料的商務規則(business rule)。通常模型被用來作為對現實世界中一個處理過程的軟體近似,當定義一個模型時,可以採用一般的簡單的建模技術。
當模型發生改變時,它會通知視(View),並且為視提供查詢模型相關狀態的能力。同時,它也為控制器(Controller)提供訪問封裝在模型內部的應用程式功能的能力。
一個視(View)用來組織模型的內容。它從模型那裡獲得資料並指定這些資料如何表現。當模型變化時,視負責鑑效組資料表現的一致性。視同時將使用者要求告知控制器(Controller)。
控制器(Controller)定義了應用程式的行為;它負責對來自視的使用者要求進行解釋,並把這些要求映射成相應的行為,這些行為由模型負責實現。在獨立啟動並執行GUI用戶端,使用者要求可能是一些按一下滑鼠或是菜單選擇操作。在一個Web應用程式中,它們的表現形式可能是一些來自用戶端的GET或POST的HTTP請求。模型所實現的行為包括處理業務和修改模型的狀態。根據使用者要求和模型行為的結果,控制器選擇一個視作為對使用者請求的應答。通常一組相關功能集對應一個控制器。描述了一個MVC應用程式中模型、視、控制器三部分的關係:
圖中實線表示高耦合的依賴關係,虛線表示低耦合的訊息關係。業務模組是不依賴使用者介面的,這樣就隔離了使用者介面的變更對業務程式的影響。使用者介面負責收集使用者的輸入,顯示使用者需要的資料;控制器負責將使用者的請求調用到實際的業務程式,也將業務程式處理的結果回送給使用者介面;業務程式具體處理業務操作。同時業務模組可能主動發送訊息到使用者介面,通知介面顯示資料。
在具體的環境下,這些因素可能發生一些變化。比如,在web開發中,由於web應用程式的性質,使用者介面是在瀏覽器上啟動並執行,而介面的控制和業務模組在瀏覽器上運行,所以在web應用中通常採用這種典型的MVC模式。並且在Web應用中,不存在伺服器主動向用戶端“推”資料,因此從Model到View之間的虛線也是不存在的。在windows表單程式中,控制器和介面經常是合并在一起的,比如MFC架構中使用的Document-View模式,其中的Document對應MVC中的Model,負責儲存業務資料,處理商務邏輯,View相當於MVC中的View+Controller,負責使用者介面的顯示、使用者輸入的收集和畫面的跳轉控制。
MVC結構簡介