淺談MVC

原文:http://www.asp.net/mvc/tutorials/older-versions/overview/asp-net-mvc-overview

這篇文章幫助你瞭解關於ASP.NET MVC應用程序和ASP.net Web Forms的不同。學習如何確定何時創建一個ASP.Net MVC應用。


模型-視圖-控制器(MVC)架構風格將應用程序分爲了3個主要的部分:模型、視圖和控制器。ASP.NET MVC框架提供了一個ASP.NET Web Forms風格的新的選擇來創建基於MVC的Web應用。ASP.NET MVC框架是一個輕量級、容易測試表現層的框架(跟基於Web Form2-based應用一樣),將現有的ASP.NET特性,比如母版頁和基於Membership授權集成在一起。MVC框架被定義在System.Web.Mvc命名空間中,它是一個基礎,受到System.Web命名空間的支持。


MVC是一個許多開發者都熟悉的標準的設計模式。有一些Web應用程序都從MVC框架中受益。其它應用程序將會繼續使用基於Web Forms和postbacks(回傳)機制的傳統的ASP.NET應用程序風格。其它類型的Web應用將會合並這兩種方法。不是誰替代誰。


MVC框架包含以下部分:

Invoking a controller action that expects a parameter value
圖01:調用一個控制器動作時需要一個參數值

模型:模型對象是應用程序的部分來實現應用程序邏輯的數據域。通常的,模型對象檢索和存儲模型都在數據庫中。舉個例子,一個產品對象可能從數據庫中檢索,執行它,然後在SQL Server中寫回更新信息到產品表。
在小型應用程序中,模型通常是將物理模型轉化爲概念模型。舉個例子,如果應用程序只讀一個數據集並把它發送給視圖,應用程序並沒有一個物理模型層和相關類。這樣的話,數據集充當模型對象的角色。

視圖:視圖是顯示應用程序用戶接口的組件。典型的,用戶接口是從模型數據創建的。一個例子就是一張產品表顯示基於產品對象當前狀態的文本框、下拉框和複選框。

控制器:控制器是用來處理用戶交互、與模型工作並最終選擇一個視圖用來呈現用戶接口的組件。在一個MVC應用程序中,視圖只是用來顯示信息;控制器處理和響應用戶輸入和交互。比如控制器處理查詢字符串的值以及把這些值傳給模型,模型可以使用這些值查詢數據庫並返回給控制器。

MVC風格幫助你創建一個鬆耦合的、分離不同方面(輸入邏輯、業務邏輯和用戶接口邏輯)的應用程序。這個風格確定每個邏輯應該在應用程序中處於的位置。用戶接口邏輯在視圖中。輸入邏輯在控制器中。業務邏輯在模型中。當你創建一個應用程序時,這種分離會幫助你管理複雜的應用,因爲它能夠幫助你將你的注意力一次集中在一個方面的實現。比如,你可以專注於視圖而不用關心它的業務邏輯。

除此以外,管理複雜的應用,MVC風格比基於Web Forms風格的ASP.NET Web應用程序更容易測試。舉個例子,在基於ASP.NET Web應用程序中,一個單獨的類被用來顯示輸出,同時也用來響應用戶輸入。書寫基於Web Forms的ASP.NET應用程序的自動化測試會變得複雜,因爲測試一個獨立的頁面,你必須實例化頁面類、所有它的子控件和額外的應用程序中的獨立的類。因爲如此多的類在運行頁面時被實例化,在獨立部分的應用程序中集中的、完全的書寫測試將會變得困難。基於ASP.NET應用程序的測試因此將會比在一個MVC的應用中更困難。更多的,測試基於Web Forms的ASP.NET應用程序需要一個Web服務器。MVC框架解耦這些部分並且使得接口更加容易使用,在獨立的其餘框架部分測試成爲可能。

在MVC應用程序的3個主要部分解耦,也可以提升並行開發。比如,第一個開發者可以做視圖,第二個開發者可以做控制器邏輯,第三個開發者可以專注於模型業務邏輯。

決定何時創建一個MVC應用
你必須認真考慮是使用ASP.NET MVC框架還是ASP.NET Web Forms模型來做一個Web應用。MVC框架並不是替代Web Forms模型。你可以使用其中的一種來做Web應用(如果你有一個現成的基於Web Forms的應用程序,最好還是使用已經擁有的技術來繼續工作)。

在你覺得使用MVC框架還是Web Forms模型來做一個特定的網站,權衡每一種方法的優點。

基於MVC架構的Web應用的優點
ASP.NET MVC框架提供瞭如下一些優點:
  • 它通過將應用程序分爲模型、視圖、控制器等幾個部分,來使得管理複雜的項目更容易。
  • 它不使用ViewState和基於服務器端的Forms。這使得MVC框架對於想完全控制應用程序行爲的開發者來說很理想。
  • 它使用一個前端控制器風格通過一個單控制器來處理Web應用程序。這幫助你設計一個支持路由的應用程序。更多信息,參考MSDN網站上的Front Controller
  • 它提供了更好的測試驅動開發支持(TDD)。
  • 它對控件團隊開發者和設計者之間的工作提供了支持。
基於Web Forms的Web應用的優點
基於Web Forms框架提供瞭如下一些優點:
  • 它支持事件模型來保持HTTP通信,這使得Web應用開發從單線業務中受益。基於Web Forms的應用應用提供了大量的服務器端控件的事件。
  • 它使用一個頁面控制器風格,增加功能到獨立的頁面。更多信息,參考MSDN網站上的Page Controller
  • 它使用ViewState和基於服務器端的Forms,這能更容易的管理狀態信息。
  • 對於Web開發者和設計者團隊來說,可以更好的使用大量的服務器端控件來進行快速應用開發。
  • 一般來說,會降低應用程序開發的難度,因爲組件(頁面類、控件等等)都高度集成,比MVC模型所需要的代碼量更少。
ASP.NET MVC框架的特性
ASP.NET MVC框架提供瞭如下的特性:
  • 分離應用程序任務(輸入邏輯、業務邏輯和用戶接口邏輯),更容易測試並且原生支持測試驅動開發(TDD)。所有在MVC框架中的核心交互都基於接口,並且能夠使用模擬對象行爲的模型對象進行測試。你可以不用運行ASP.NET進程中的控制器就可以進行單元測試,這使得單元測試很快而且靈活。你可以使用任何兼容.NET框架的單元測試框架進行測試。
  • 一個可擴展的支持注入的框架。ASP.NET MVC框架組件被設計以至於他們能夠容易替換和自定義。你可以在你自己的頁面引擎中使用注入,URL路由策略,Action方法參數序列化以及其它部分。ASP.NET MVC框架同樣支持依賴注入(DI)和控制反轉(IOC)。依賴注入允許你在類中注入對象,取代依靠類來創建對象自身。控制反轉確定另一個對象,第一個對象應該通過外部源比如配置文件來獲取第二個對象。這使得測試更容易。
  • 一個強有力的URL映射組件使得你創建應用程序更容易閱讀並被搜索。URL並不會必須包含文件名擴展,來被設計成支持URL命名風格更好的工作,並對搜索引擎優化(SEO)和REST地址支持更好。
  • 支持一個現有的ASP.NET頁面,用戶控件以及母版頁標籤文件作爲視圖模版,你可以用ASP.NET MVC框架使用到現有的ASP.NET特性,比如內嵌母版頁,單行表達式、服務端控件、模版、數據綁定、全球化等等。
  • 支持現有的ASP.NET特性。ASP.NET MVC允許你使用如下特性,比如:Forms授權和Windows認證、URL授權、Membership和角色、輸出和數據緩存、Session和Profile狀態管理、health監控、配置系統以及Provider架構等。
發佈了21 篇原創文章 · 獲贊 25 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章