ASP.NET MVC 概述

來源:互聯網
上載者:User

標籤:style   blog   http   使用   os   io   strong   檔案   

目標:學習ASP.NET MVC 和ASP.NET WebForm的不同之處。學習在合適的地方使用ASP.NET MVC。

   MVC(Model-View-Controller)結構模式把一個對象分離成3大塊:Model(資料模型層),View(視圖層),Controller(控制層),ASP.NET MVC 架構提供了一種有別於ASP.NET WebForm的模式,提供了基於mvc的網頁對象。ASP.NET MVC是一種輕量級的,高度可測試的展示型架構(和WebForm對比),並且融合了已有的ASP.NET的特徵,例如主版頁面以及基於會員的驗證。MVC 架構是定義在System.Web.Mvc這個命名空間下並且這是一個基本的命名空間。並且支援System.Web命名空間部分。

  MVC是一種標準的設計模式廣為許多開發人員所熟悉。一些類型的網路應用程式將會受益於ASP.NET MVC,另外一些其他的將會繼續使用傳統的WebForm模式並使用postbacks,還有一些應用程式將會把MVC 和WebForm結合起來讓他們感覺是近似的,當然,也不排除其他的方法。

  MVC 架構套件括以下組件:

   步驟 01:調用Controller的action並且內建參數值。

  • 模型層(Models):模型對象是程式的一部分實現了應用程式資料域的邏輯。通常的說,模型對象檢索和儲存模型陳述在資料庫中。舉個例子:一個產品對象也許會從資料庫中檢索資訊,對它進行操作,寫入更新資訊然後回傳給產品表在SQL SERVER資料庫中。

  在小程式中,模型經常在理論上分離,當然不是物理上的分離。舉個例子:如果程式僅僅只是讀了一個資料集然後把這個資料集返回給View,這個程式並沒有一個和類聯絡起來的物理模型層。在那種情況下,資料集其實是扮演了一個模型對象的角色。

  • 視圖層(Views):視圖是一個把程式顯示在螢幕(UI)上的“容器”。通常來說,介面其實是從模型對象建立。一個例子,一個可編輯的產品表的視圖,裡面放了一些TEXTBOX,下拉框(DropDownList),一些CheckBox,當然這些都是 基於產品對象的。
  • 控制層(Controllers):控制層處理使用者互動,和模型層一起工作,無限制的選擇一個視圖去渲染顯示出來的UI的一些組件。在MVC應用程式中,視圖層只是負責顯示資訊,控制層處理以及回複給使用者輸入資訊以達到互動的效果。舉個例子:控制層處理查詢字串(query-string)的值,然後把這些值傳給MODEL,反過來用這些值可以查詢資料庫。

  MVC模式協助你建立應用程式以達到分離應用程式的不同方面(輸入邏輯,商務邏輯,UI邏輯),以達到對象之間的低耦合。MVC模式指定每種類型的邏輯必須建立在應用程式之上。UI邏輯其實屬於VIEW中的。輸入邏輯屬於Controller,商務邏輯屬於Model。分層模式能夠幫你很好的管理當你建立好了應用程式以後,因為它能讓你有時專註於某一方面的實現。舉個例子,當你專註於VIEW的時候可以不用去擔心Model的事情 == 。

  除了管理起來方便以外,MVC模式在測試應用程式方面也比WebForm模式更加的簡單。舉個例子,WebForm程式中,一個單獨的類經常使用2個檔案去顯示輸出以及回傳使用者的輸入。寫一個自動化的測試對於基於WebForm的應用程式來說也許會很複雜,因為去測試一個獨立頁面,你必須執行個體化這個Page對應的類,所有的子控制項,將會使我們在關注應用程式的某個部分而不去關注其他地方變得很困難,因此MVC模式的優勢就顯現出來了。更深一點的說,WebForm程式需要一個Web Server,而MVC架構會讓組件之間降低耦合性以及大量使用介面, 使得單獨的組件孤立於其他的架構成為可能。

  低耦合在MVC應用程式的M-V-C的組件之間同樣可以保證並行開發。比如,有3個開發人員,一個開發人員專註於控制層,另一個開發員專註於視圖層,最後一個開發員專註於模型層的建設成為可能。

  決定何時使用MVC模式比較合適

  你必須非常小心的考慮什麼時候去使用MVC架構或者WebForm.MVC並不能完全取代WebForm,你可以選擇其一作為你應用程式開發的基石。

  在你決定使用MVC架構或者WebForm去實現你的網站之前,權衡好各自的優勢。

  MVC架構的優勢

   MVC架構有以下幾點優勢:

  • 使得完全掌控分離一個對象成為M-V-C3層模式變得更加容易。
  • 不使用View state以及伺服器控制項。這使得MVC架構變得更加理想對於開發人員而言(可以完全控制應用程式的行為)
  • 使用了前端控制前模式通過網頁應用程式的請求(單獨一個控制器)。這樣可以讓你可以設計應用程式支援多路由結構,如果你想看更多關於Front Controller ,可以查看其MSDN文檔。
  • 對於TDD有更好的支援。
  • 對於大項目來說(大量的人員在一個團隊裡面),需要高效的控制應用程式的行為。

  WebForm的優勢

  WebForm的優勢有以下幾點:

  • 支援事件模型儲存狀態在HTTP上,適合線性業務的網站開發,WebForm程式提供了很多事件以支援大量的伺服器控制項。
  • 使用頁面控制器模式對於獨立的頁面逐個添加,更多請看這裡->Pgae Conroller 
  • 使用了ViewState或者伺服器表單,這讓控制狀態資訊變得更加容易。
  • 小的團隊裡面,或者是擁有大量伺服器控制項的想迅速開發的團隊。
  • 總體來說,相對而言開發程式還是不那麼複雜的,因為組件(Page類,控制項等等)都緊密的結合在了一起,相對於MVC模式不會有那麼多的代碼。

  ASP.NET MVC模式的特點

  ASP.NET MVC架構有以下特點:

  • 實現了應用程式任務的分離(輸入邏輯,商務邏輯,介面邏輯),可測試性的以及預設TDD。所有的核心類在MVC架構中都是基於介面的,能被類比對象測試的。在程式中可以用類比對象類比實際程式的行為。你可以進行單元測試在不使用Controller的情況下在ASP.NET應用程式中,可以讓單元測試變得快而舒適。你可以使用任意的單元測試去測試不同版本的.Net Framework。
  • 一種可擴充和外掛程式型的架構。ASP.NET MVC組件被設計成容易被替換或者定製的。你可以插入在自己的視圖引擎裡面,URL 路由規則,action方法參數序列化,以及其他組件。MVC架構也支援使用依賴注入以及控制反轉容器模型。依賴注入可以讓你注入對象到類裡面,除了依賴類去建立對象本身。控制反轉指定如果一個對象需要其他對象,第一個對象從外部資源應該得到第二個對象,比如一個設定檔案(比如web.config),這將變得更加容易。
  • 一個強有力的URL-mapping組件,讓你建立可理解和可查詢的URLS的程式。URLS不會包含檔案名稱尾碼,設計URL命名模式對於搜素引擎SEO來說是非常好的,以及表示狀態傳輸定址。
  • 支援使用標記在已有的ASP.NET PAGE中(aspx檔案),使用者控制項(ascx檔案),主版頁面(.master 檔案),你可以很方便的使用已有的ASP.NET特徵在MVC架構裡,比如嵌入式的主版頁面,單行運算式(<%= =>),陳述伺服器控制項,模板,資料繫結,本地化等等。
  • 支援已有的ASP.NET的特徵,MVC將會讓你使用這些特徵比如form效驗以及windows效驗,URL授權,成員以及角色,輸出以及資料緩衝,session和簡要狀態管理,健康監控,設定系統,提供構架。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.