ASP.Net MVC概述
模型-視圖-控制器 (MVC) 體繫結構模式將應用程式分成三個主要組件:模型、視圖和控制器。 ASP.NET MVC 架構提供用於建立 Web 應用程式的 ASP.NET Web Form模式的替代模式。 ASP.NET MVC 架構是一個可測試性非常高的輕型示範架構,(與基於 Web Form的應用程式一樣)它整合了現有的 ASP.NET 功能,如主版頁面和基於成員資格的身分識別驗證。 MVC 架構在 System.Web.Mvc 程式集中定義。
MVC 設計模式
MVC 是許多開發人員熟悉的標準設計模式。 一些類型的 Web 應用程式將得益於 MVC 架構。 一些類型將繼續使用基於 Web Form和回傳的傳統 ASP.NET 應用程式模式。 其他類型的 Web 應用程式將結合這兩種方法;這兩種方法彼此互不包含。
MVC 架構套件括以下組件:
模型。 模型對象是實現應用程式資料域邏輯的應用程式組件。 通常,模型對象會檢索模型狀態並將其儲存在資料庫中。 例如,Product 對象可能會從資料庫中檢索資訊,操作該資訊,然後將更新的資訊寫回到 SQL Server 資料庫內的 Products 表中。
在小型應用程式中,模型通常是概念上的分離,而不是實際分離。 例如,如果應用程式僅讀取資料集並將其發送到視圖,則該應用程式沒有物理模型層和關聯的類。 在這種情況下,資料集擔當模型對象的作用。
視圖。 視圖是顯示應用程式使用者介面 (UI) 的組件。 通常,此 UI 是用模型資料建立的。 Products 表的編輯檢視便是一個視圖樣本,該視圖基於 Product 對象的目前狀態顯示文字框、下拉式清單和複選框。
控制器。 控制器是處理使用者互動、使用模型並最終選擇要呈現的視圖來顯示 UI 的組件。 在 MVC 應用程式中,視圖僅顯示資訊;控制器則用於處理和響應使用者輸入和互動。 例如,控制器處理查詢字串值,並將這些值傳遞給模型,而模型可能會使用這些值來查詢資料庫。
MVC 模式可以協助您建立使應用程式的不同方面(輸入邏輯、商務邏輯和 UI 邏輯)分離的應用程式,同時可在這些元素之間提供鬆散耦合。 該模式指定每種邏輯在應用程式中應處的位置。 UI 邏輯位於視圖中。 輸入邏輯位於控制器中。 商務邏輯位於模型中。 在您產生應用程式時,通過使用這種分離方式,可以協助您化繁為簡,因為它可以使您側重於一次實現應用程式的一個方面。 例如,您可以側重於獨立於商務邏輯的視圖。
MVC 應用程式的這三個主要組件之間的鬆散耦合也可促進並行開發。 例如,一個開發人員可以從事視圖方面的工作,第二個開發人員可以從事控制器邏輯方面的工作,第三個開發人員可以側重於模型中的商務邏輯。
對測試驅動的開發的支援
使用 MVC 模式除了可以化繁為簡外,還可以使應用程式的測試工作比基於 Web Form的 ASP.NET Web 應用程式的測試工作更加輕鬆。 例如,在基於 Web Form的 ASP.NET Web 應用程式中,單一類既用於顯示輸出又用於響應使用者輸入。 為基於 Web Form的 ASP.NET 應用程式編寫自動化測試可能是一項複雜的工作,因為若要測試單個頁面,您必須執行個體化應用程式中的頁類、其所有子控制項以及其他相關類。 因為為運行頁面而執行個體化的類如此之多,所以可能難以編寫專門側重於應用程式單個組件的測試。 因此,與 MVC 應用程式測試相比,基於 Web Form的 ASP.NET 應用程式的測試更加難以實現。 而且,基於 Web Form的 ASP.NET 應用程式的測試需要 Web 服務器。 MVC 架構可使組件分離並大量使用介面,這樣,便可以將單個組件與架構的其餘部分分開進行測試。
何時建立 MVC 應用程式
您必須仔細考慮是使用 ASP.NET MVC 架構還是使用 ASP.NET Web Form模型來實現 Web 應用程式。 MVC 架構未取代 Web Form模型;您可以對 Web 應用程式使用任一架構。 (如果您具有現有的基於 Web Form的應用程式,則這些應用程式將完全按照它們一貫的方式繼續工作。)
在決定對特定網站使用 MVC 架構或 Web Form模型之前,請權衡各種方法的優點。
ASP.NET MVC 架構具有以下優點:
通過將應用程式分為模型、視圖和控制器,化繁為簡的工作更加輕鬆。
它不使用檢視狀態或基於伺服器的表單。 這使得 MVC 架構特別適合想要完全控制應用程式行為的開發人員。
它使用一種通過單一控制器處理 Web 應用程式請求的前端控制器模式。 這使您可以設計一個支援豐富路由基礎結構的應用程式。 有關更多資訊,請參見 Front Controller(前端控制器)。
它為測試驅動的開發 (TDD) 提供了更好的支援。
它非常適合大型開發人員團隊支援的 Web 應用程式,以及需要對應用程式行為進行嚴格控制的 Web 設計人員。
基於 Web Form的架構具有以下優點:
它支援通過 HTTP 保留狀態的事件模型,這有益於開發業務線 Web 應用程式。 基於 Web Form的應用程式提供了在數百個伺服器控制項中受支援的許多事件。
它使用頁面控制器模式向單個頁面添加功能。 有關更多資訊,請參見 Page Controller(頁面控制器)。
它針對基於伺服器的表單使用檢視狀態,這使得管理狀態資訊更加輕鬆。
它非常適合想要利用大量組件快速開發應用程式的 Web 開發人員和設計人員的小型團隊。
通常,對於應用程式開發而言,它比較簡單,這是因為組件(Page 類、控制項等)緊密整合並且通常需要比 MVC 模型更少的代碼。
ASP.NET MVC 架構具有以下功能:
應用程式任務(輸入邏輯、商務邏輯和 UI 邏輯)的分離、可測試性和測試驅動的開發 (TDD)。 MVC 架構中的所有核心協定都基於介面並且可使用 模擬物件進行測試,模擬物件是模仿應用程式中實際對象的行為的類比對象。 您可以對應用程式進行單元測試,而不必在 ASP.NET 進程中運行控制器,這使得單元測試既快速又靈活。 您可以使用任何與 .NET Framework 相容的單元測試架構。
可擴充且可插入的架構。 設計 ASP.NET MVC 架構組件的目的是為了可以輕鬆地替換或自訂它們。 您可以插入自己的視圖引擎、URL 路由策略、操作方法參數序列化以及其他組件。 ASP.NET MVC 架構還支援使用依賴項注入 (DI) 和控制反轉 (IOC) 容器模型。 DI 使您能夠將對象注入到類中,而不是依靠類來建立對象本身。 IOC 指定某個對象是否需要其他對象,第一個對象應該從設定檔之類的外部源中擷取第二個對象。 這樣,測試會更加輕鬆。
廣泛支援 ASP.NET 路由,ASP.NET 路由是一個功能強大的 URL 對應組件,它允許您產生具有易於理解的可搜尋 URL 的應用程式。 URL 未必包含副檔名,並且旨在支援非常適合搜尋引擎最佳化 (SEO) 和具象狀態傳輸 (REST) 定址的 URL 命名模式。
支援將現有 ASP.NET 頁面(.aspx 檔案)、使用者控制項(.ascx 檔案)和主版頁面(.master 檔案)標記檔案中的標記用作視圖模板。 您可以將諸如嵌套主版頁面、內聯運算式 (<%= %>)、聲明性伺服器控制項、模板、資料繫結、本地化等現有 ASP.NET 功能與 ASP.NET MVC 架構結合使用。
支援現有 ASP.NET 功能。 ASP.NET MVC 允許您使用一些功能,如 Forms 身分識別驗證和 Windows 身分識別驗證、URL 授權、成員資格和角色、輸出和資料緩衝、會話和設定檔狀態管理、狀況監控、配置系統以及提供者體繫結構。
【相關推薦】
1. 深入瞭解ASP.NET MVC與WebForm的區別
2. 詳細介紹ASP.NET MVC--控制器(controller)
3. 詳細介紹ASP.NET MVC--視圖
4. 詳細介紹ASP.NET MVC--路由
5. 通過asp.net mvc開發自訂菜單編輯工具的程式碼範例