陳亞莉
一、MVC設計模型組成
“MVC”(Model-View-Controller)由Trygve Reenskaug提出,首先被應用在SmallTalk-80環境中,是許多交互和界面系統的構成基礎。MVC作為一種開發模型,通常用于分布式應用系統的設計和分析中,以及用于確定系統各部分間的組織關系。對于界面設計可變性的需求,MVC把交互系統的組成分解成模型、視圖、控制器三種部件。
模型(Model)部件保存由視圖顯示,由控制器控制的數據;它封裝了問題的核心數據、邏輯和功能的計算關系,它獨立于具體的界面表達和I/0操作。視圖(View)部件把表示模型數據及邏輯關系和狀態的信息以特定形式展示給用戶。它從模型獲得顯示信息,對于相同的信息可以有多個不同的顯示形式或視圖。
控制器部件是處理用戶與軟件的交互操作的,其職責是控制提供模型中任何變化的傳播,確保用戶界面于模型間的對應聯系;它接受用戶的輸入,將輸入反饋給模型,進而實現對模型的計算控制,是使模型和視圖協調工作的部件。
二、MVC設計模式在ASP.NET中的實現
ASP.NET提供了一個很好的實現這種經典設計模式的類似環境。開發者通過在ASPX頁面中開發用戶接口來實現視圖;控制器的功能在邏輯功能代碼(.cs)中實現;模型通常對應應用系統的業務部分。
視圖是模型的表示,它提供用戶交互界面。在ASP.NET下,視圖的實現很簡單。可以像開發WINDOWS界面一樣直接在集成開發環境下通過拖動控件來完成頁面開發本。視圖部分處理流程:首先,頁面模板定義了頁面的布局:頁面配置文件定義視圖標簽的具體內容;然后,由頁面布局策略類初始化并加載頁面;每個用戶部件根據它自己的配置進行初始化,加載校驗器并設置參數,以及事件的委托等;用戶提交后,通過了表示層的校驗,用戶部件把數據自動提交給業務實體即模型。
為了能夠控制和協調每個用戶跨越多個請求的處理,控制機制應該以集中的方式進行管理。因此,為了達到集中管理的目的引入了控制器。應用程序的控制器集中從客戶端接收請求(典型情況下是一個運行瀏覽器的用戶),決定執行什么商業邏輯功能,然后將產生下一步用戶界面的責任委派給一個適當的視圖組件。
控制器提供一個控制和處理請求的集中入口點,它負責接收、截取并處理用戶請求;并將請求委托給分發者類,根據當前狀態和業務操作的結果決定向客戶呈現的視圖。在這一部分主要定義了HttpReqDispatcher(分發者類)、HttpCapture(請求捕獲者類)、Controller(控制器類)等,它們相互配合來完成控制器的功能。請求捕獲者類捕獲HTTP請求并轉發給控制器類??刂破黝愂窍到y中處理所有請求的最初入口點??刂破魍瓿梢恍┍匾奶幚砗蟀颜埱笪薪o分發者類;分發者類分發者負責視圖的管理和導航,它管理將選擇哪個視圖提供給用戶,并提供給分發資源控制。在這一部分分別采用了分發者、策略、工廠方法、適配器等設計模式。
MVC系統中的模型從概念上可以分為兩類——系統的內部狀態和改變系統狀態的動作。模型是你所有的商業邏輯代碼片段所在。
三、MVC模式的優缺點
1、MVC模式的優點
通過在ASP.NET中的MVC模式編寫的,具有極其良好的可擴展性。它可以輕松實現以下功能:①實現一個模型的多個視圖;②采用多個控制器;③當模型改變時,所有視圖將自動刷新;④所有的控制器將相互獨立工作。
2、MVC模式的不足
①增加了系統結構和實現的復雜性。對于簡單的界面,嚴格遵循Mvc,使模型、視圖與控制器分離,會增加結構的復雜性,并可能產生過多的更新操作,降低運行效率。
②視圖與控制器間的過于緊密的連接。視圖與控制器是相互分離,但確實聯系緊密的部件,視圖沒有控制器的存在,其應用是很有限的,反之亦然,這樣就妨礙了他們的獨立重用。
③視圖對模型數據的低效率訪問。依據模型操作接口的不同,視圖可能需要多次調用才能獲得足夠的顯示數據。對未變化數據的不必要的頻繁訪問,也將損害操作性能。
四、結束語
與軟件所處理問題的內在模型相比較,用戶界面是需要經常發生變化的,采用MVC設計模式可以在滿足對界面要求的同時,使軟件的計算模型獨立于界面的構成。也可以基于此模型建立大型分布式應用程序框架。
作者單位:湖南科技職業學院