原文: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框架包含以下部分:
- 它通過將應用程序分爲模型、視圖、控制器等幾個部分,來使得管理複雜的項目更容易。
- 它不使用ViewState和基於服務器端的Forms。這使得MVC框架對於想完全控制應用程序行爲的開發者來說很理想。
- 它使用一個前端控制器風格通過一個單控制器來處理Web應用程序。這幫助你設計一個支持路由的應用程序。更多信息,參考MSDN網站上的Front Controller。
- 它提供了更好的測試驅動開發支持(TDD)。
- 它對控件團隊開發者和設計者之間的工作提供了支持。
- 它支持事件模型來保持HTTP通信,這使得Web應用開發從單線業務中受益。基於Web Forms的應用應用提供了大量的服務器端控件的事件。
- 它使用一個頁面控制器風格,增加功能到獨立的頁面。更多信息,參考MSDN網站上的Page Controller。
- 它使用ViewState和基於服務器端的Forms,這能更容易的管理狀態信息。
- 對於Web開發者和設計者團隊來說,可以更好的使用大量的服務器端控件來進行快速應用開發。
- 一般來說,會降低應用程序開發的難度,因爲組件(頁面類、控件等等)都高度集成,比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架構等。