共用方式為


ASP.NET MVC 概觀

Microsoft 提供

了解 ASP.NET MVC 應用程式和 ASP.NET Web 表單應用程式之間的差異。 了解如何決定何時建置 ASP.NET MVC 應用程式。

模型 - 檢視 - 控制器 (MVC) 架構模式可將一個應用程式劃分成三組主要元件:模型、檢視和控制器。 ASP.NET MVC 架構提供建立 MVC 型 Web 應用程式的 ASP.NET Web Form 模式替代方案。 ASP.NET MVC 架構是一個輕量級、高度可測試的展示架構,與基於 Web Forms 的應用程式一樣,它整合了現有的 ASP.NET 功能,例如主版頁面和成員資格型驗證。 MVC 架構定義於 System.Web.Mvc 命名空間中,而且是 System.Web 命名空間的基本支援部分。

MVC 是許多開發人員熟悉的標準設計模式。 某些類型的 Web 應用程式將受益於 MVC 架構。 其他人會繼續使用以 Web Form 和回傳為基礎的傳統 ASP.NET 應用程式模式。 其他類型的 Web 應用程式將結合這兩種方法:兩種方法都不會排除另一種方法。

MVC 架構包括以下元件:

叫用要求參數值的控制器動作

圖 01:叫用要求參數值的控制器動作 (按一下以檢視全尺寸影像)

  • 模型. 模型物件是應用程式中實作應用程式資料網域邏輯的部分。 通常,模型物件會在資料庫中擷取並儲存模型狀態。 例如,Product 物件可能會從資料庫檢索訊息,對其進行操作,然後將更新的資訊寫回 SQL Server 中的 Products 資料表。

在小型應用程式中,模型通常是概念性區隔而不是實體區隔。 例如,如果應用程式只讀取資料集並將其傳送至檢視,則應用程式沒有實體模型層和相關聯的類別。 在此案例下,資料集會採用模型物件的角色。

  • 檢視。 [檢視] 是顯示應用程式使用者介面 (UI) 的元件。 一般而言,此 UI 是從模型資料建立的。 例如,Products 資料表的編輯檢視會根據 Products 物件的目前狀態顯示文字方塊、下拉式清單和核取方塊。

  • 控制器。 控制器是處理使用者互動、使用模型並最終選擇要呈現的顯示 UI 的檢視的元件。 在 MVC 應用程式中,檢視只會顯示資訊,而控制器則會處理及回應使用者輸入和互動。 例如,控制器處理查詢字串值,並將這些值傳遞給模型,而模型又使用這些值查詢資料庫。

MVC 模式可協助您建立應用程式,用來隔離應用程式的不同層面 (輸入邏輯、商務邏輯和 UI 邏輯),同時提供這些項目之間的鬆散結合。 此模式指定每一種邏輯應該位於應用程式中的位置。 UI 邏輯位於檢視。 輸入邏輯位於控制器。 商務邏輯則位於模型。 這項隔離可協助您管理建置應用程式時的複雜度,因為它使您能夠一次專注於實作的一個層面。 例如,您可以專注於檢視而不需要根據商務邏輯。

除了管理複雜度之外,MVC 模式可讓您更輕鬆地測試應用程式,而不是測試以 Web Form 為基礎的 ASP.NET Web 應用程式。 例如,在以 Web Form 為基礎的 ASP.NET Web 應用程式中,會使用單一類別來顯示輸出和回應使用者輸入。 撰寫 Web Form 型 ASP.NET 應用程式的自動化測試可能十分複雜,因為若要測試個別頁面,您必須具現化頁面類別、其所有子控制項,以及應用程式中的其他相依類別。 由於許多類別會具現化為執行頁面,因此很難撰寫專門著重於應用程式個別部分的測試。 因此,Web Form 型 ASP.NET 應用程式的測試比 MVC 應用程式中的測試更難實作。 此外,以 Web Form 為基礎的 ASP.NET 應用程式中的測試需要 Web 伺服器。 MVC 架構會分離元件,並大量使用介面,因此可以與架構的其餘部分隔離測試個別元件。

MVC 應用程式三個主要元件之間的鬆散結合也會促進平行開發。 例如,一個開發人員可以處理檢視,第二個開發人員可以處理控制器邏輯,而第三個開發人員可以專注於模型中的商業邏輯。

決定何時建立 MVC 應用程式

您必須仔細考慮使用 ASP.NET MVC 架構還是 ASP.NET Web 表單模型來實作 Web 應用程式。 MVC 架構不會取代 Web Forms 模型;您可以將任一架構用於 Web 應用程式。 (如果您有現有的 Web Form 型應用程式,這些應用程式會繼續如往常一樣運作。)

在您決定針對特定網站使用 MVC 架構或 Web Forms 模型之前,請先權衡每個方法的優點。

MVC 型 Web 應用程式的優點

ASP.NET MVC 架構具有下列優點:

  • 該架構將應用程式分割成模型、檢視和控制器,可更輕鬆地管理複雜度。
  • 該架構不使用檢視狀態或伺服器型表單。 這讓 MVC 架構成為想要完全控制應用程式行為的開發人員的理想選擇。
  • 該架構使用前端控制器模式,透過單一控制器處理 Web 應用程式要求。 這可讓您設計支援豐富的路由基礎結構的應用程式。 如需詳細資訊,請參閱前端控制器
  • 它對測試驅動開發 (TDD) 提供更好的支援。
  • 它適用於大規模開發人員小組,和需要高度控制應用程式行為的 Web 設計工具小組所支援的 Web 應用程式。

Web Forms 型 Web 應用程式的優點

以 Web Forms 為基礎的架構具有下列優點:

  • 該架構支援透過 HTTP 保留狀態的事件模型,這有利於企業營運 Web 應用程式開發。 以 Web Forms 為基礎的應用程式,提供了由數百個伺服器控制項支援的數十個事件。
  • 它使用頁面控制器模式,將功能新增至個別頁面。 如需詳細資訊,請參閱頁面控制器
  • 它使用檢視狀態或伺服器型表單,讓管理狀態資訊更容易執行。
  • 它適用於想要利用大量可用於快速應用程式開發之元件的 Web 開發人員和設計工具小組。
  • 一般而言,應用程式開發較不複雜,因為元件 (Page 類別、控制項等) 會緊密整合,而且通常需要比 MVC 模型更少的程式碼。

ASP.NET MVC 架構的功能

ASP.NET MVC 架構提供以下功能:

  • 根據預設,區分應用程式工作 (輸入邏輯、商業邏輯和 UI 邏輯)、可測試性和測試驅動開發 (TDD)。 MVC 架構中的所有核心合約都是介面型的,而且可以使用模擬物件進行測試,這些模擬物件是模擬應用程式中實際物件的行為。 您可以對應用程式進行單元測試,而不需要在 ASP.NET 流程中執行控制器,讓單元測試變得快速且靈活。 您可以使用任何與 .NET Framework 相容的單元測試架構。
  • 可延伸的插入式架構。 ASP.NET MVC 架構的元件經過設計,可以輕鬆取代或自訂。 您可以插入自己的檢視引擎、URL 路由原則、動作方法參數序列化和其他元件。 ASP.NET MVC 架構也支援使用相依性插入 (DI) 和控制反轉 (IOC) 容器模型。 DI 可讓您將物件插入類別,而不是依賴該類別來建立物件本身。 IOC 指定如果物件需要另一個物件,第一個物件應該會從外部來源 (例如組態檔) 取得第二個物件。 這可讓測試更容易。
  • 一個功能強大的 URL 對應元件,允許您建置具有可理解和可搜尋 URL 的應用程式。 URL 不需要包含副檔名,而且經過設計可支援適用於搜尋引擎最佳化 (SEO) 和具象狀態傳輸 (REST) 定址的 URL 命名模式。
  • 支援在現有的 ASP.NET 頁面 (.aspx 檔案)、使用者控制項 (.ascx 檔案) 和主版頁面 (.master 檔案) 標記檔案作為檢視範本。 您可以使用現有的 ASP.NET 功能搭配 ASP.NET MVC 架構,例如巢狀主版頁面、內嵌運算式 (<%= %>)、宣告式伺服器控制項、範本、資料繫結、當地語系化等等。
  • 支援現有的 ASP.NET 功能。 ASP.NET MVC 可讓您使用表單驗證和 Windows 驗證、URL 授權、成員資格和角色、輸出和資料快取、工作階段和設定檔狀態管理、健康情況監視、組態系統和提供者架構等功能。