天天看點

MVC一、什麼是MVC?二、MVC程式設計模式三、MVC特點:四、MVC控件五、三層架構和MVC的關系

一、什麼是MVC?

        MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟體設計典範,用一種業務邏輯、資料、界面顯示分離的方法組織代碼,将業務邏輯聚集到一個部件裡面,在改進和個性化定制界面及使用者互動的同時,不需要重新編寫業務邏輯。MVC被獨特的發展起來用于映射傳統的輸入、處理和輸出功能在一個邏輯的圖形化使用者界面的結構中。

        MVC開始是存在于桌面程式中的,M是指業務模型,V是指使用者界面,C則是控制器,使用MVC的目的是将M和V的實作代碼分離,進而使同一個程式可以使用不同的表現形式。比如一批統計資料可以分别用柱狀圖、餅圖來表示。C存在的目的則是確定M和V的同步,一旦M改變,V應該同步更新。

二、MVC程式設計模式

MVC 是一種使用 MVC(Model View Controller 模型-視圖-控制器)設計建立 Web 應用程式的模式:

Model(模型)表示應用程式核心(比如資料庫記錄清單)。

View(視圖)顯示資料(資料庫記錄)。

Controller(控制器)處理輸入(寫入資料庫記錄)。

MVC 模式同時提供了對 HTML、CSS 和 JavaScript 的完全控制。

Model(模型)是應用程式中用于處理應用程式資料邏輯的部分。

通常模型對象負責在資料庫中存取資料。

View(視圖)是應用程式中處理資料顯示的部分。

通常視圖是依據模型資料建立的。

Controller(控制器)是應用程式中處理使用者互動的部分。

通常控制器負責從視圖讀取資料,控制使用者輸入,并向模型發送資料。

MVC 分層有助于管理複雜的應用程式,因為您可以在一個時間内專門關注一個方面。例如,您可以在不依賴業務邏輯的情況下專注于視圖設計。同時也讓應用程式的測試更加容易。

MVC 分層同時也簡化了分組開發。不同的開發人員可同時開發視圖、控制器邏輯和業務邏輯。

三、MVC特點:

優點:

3.1耦合性低

       視圖層和業務層分離,這樣就允許更改視圖層代碼而不用重新編譯模型和控制器代碼,同樣,一個應用的業務流程或者業務規則的改變隻需要改動MVC的模型層即可。因為模型與控制器和視圖相分離,是以很容易改變應用程式的資料層和業務規則。

       模型是自包含的,并且與控制器和視圖相分離,是以很容易改變應用程式的資料層和業務規則。如果把資料庫從MySQL移植到Oracle,或者改變基于RDBMS資料源到LDAP,隻需改變模型即可。一旦正确的實作了模型,不管資料來自資料庫或是LDAP伺服器,視圖将會正确的顯示它們。由于運用MVC的應用程式的三個部件是互相獨立,改變其中一個不會影響其它兩個,是以依據這種設計思想能構造良好的松耦合的構件。

3.2重用性高

       MVC模式允許使用各種不同樣式的視圖來通路同一個伺服器端的代碼,因為多個視圖能共享一個模型,它包括任何WEB(HTTP)浏覽器或者無線浏覽器(wap).由于模型傳回的資料沒有進行格式化,是以同樣的構件能被不同的界面使用。由于已經将資料和業務規則從表示層分開,是以可以最大化的重用代碼。模型也有狀态管理和資料持久性處理的功能。

3.3 生命周期成本低

      MVC使開發和維護使用者接口的技術含量降低。

3.4部署快

      用MVC模式使開發時間得到相當大的縮減,它使程式員(Java開發人員)集中精力于業務邏輯,界面程式員(HTML和JSP開發人員)集中精力于表現形式上。

3.5可維護性高

      分離視圖層和業務邏輯層也使得WEB應用更易于維護和修改。

3.6有利軟體工程化管理

      由于不同的層各司其職,每一層不同的應用具有某些相同的特征,有利于通過工程化、工具化管理程式代碼。控制器也提供了一個好處,就是可以使用控制器來聯接不同的模型和視圖去完成使用者的需求,這樣控制器可以為構造應用程式提供強有力的手段。給定一些可重用的模型和視圖,控制器可以根據使用者的需求選擇模型進行處理,然後選擇視圖将處理結果顯示給使用者。

四、MVC控件

      在ASP .NET MVC架構中沒有了自己的控件,頁面顯示完全就回到了寫html代碼的年代。還好在 asp .net mvc架構中也有自帶的HtmlHelper和UrlHelper兩個幫助類。另外在MvcContrib擴充項目中也有擴充一些幫助類,這樣我們就不光隻能使用完整的html來編寫了需要顯示的頁面了,就可以使用這些幫助類來完成,但最後運作時都還是要生成html代碼的。

4.1 HtmlHelper類

HtmlHelper類位于System.Web.MVC.Html命名空間下。主要包括FormExtensions,InputExtensions,

4.1.1 LinkExtensions,SelectExtensions,TextAreaExtensions,ValidationExtensions,RenderPartialExtensions等7個靜态類,他們全部是是采用拓展方法來實作的。

4.1.2 InputExtensions類:主要有5種類型的擴充方法,分别用于CheckBox控件、Hidden控件、Pass控件、RadionButton控件和TextBox控件

LinkExtensions類:該類主要用于生成相關連結,主要擴充了ActionLink和RouteLink方法。

ActionLink:擴充方法主要實作一個連接配接,共有十個重載方法。

4.2 UrlHelper幫助類

看類名也都知道這個類是用來成URL在 ASP .NET MVC應用程式中。

UrlHelper提供了四個非常常用的四個方法。

1.Action方法通過提供Controller,Action和各種參數生成一個URL,

2.Content方法是将一個虛拟的,相對的路徑轉換到應用程式的絕對路徑,

3.Encode方法是對URL位址進行加密,與Server.Encode方法一樣。

4.RouteUrl方法是提供在目前應用程式中規定的路由規則中比對出URL。

另外還有兩個屬性,分别是RequestContext和RouteCollection兩個屬性,分别指的是包含HTTP上下文和RouteData兩個屬性,另外,RouteCollection是整個目前應用程式中規定的路由規則。

4.3自定義控件

對HtmlHelper對象的擴充。擴充方法實作的三要素:1、靜态類 2、靜态方法 3、this關鍵字

五、三層架構和MVC的關系

        三層架構和MVC的關系,都在邏輯上将應用程式劃為三塊,湊了一個數字3。三層是三層,MVC是MVC,它們毫無關系的。

       三層是從整個應用程式架構的角度來分的三層(如果程式需要,還可以分多層)。

  三層是為了解決整個應用程式中各個業務操作過程中不同階段的代碼封裝的問題,為了使程式員更加專注的處理某階段的業務邏輯。

  比如将資料庫操作代碼封裝到一層中,提供一些方法根據參數直接傳回使用者需要的相應資料,這樣在處理具體的業務邏輯的時候,就不用關心資料的存儲問題了。

       MVC是在應用程式(BS結構)的視圖層劃分出來的不同功能的幾個子產品。

  MVC主要是為了解決應用程式使用者界面的樣式替換問題,把展示資料的 HTML 頁面盡可能的和業務代碼分離。MVC把純淨的界面展示邏輯(使用者界面)獨立到一些檔案中(Views),把一些和使用者互動的程式邏輯(Controller)單獨放在一些檔案中,在 Views 和 Controller 中傳遞資料使用一些專門封裝資料的實體對象,這些對象,統稱為Models。

  之是以說MVC和三層毫無關系,是因為它們二者使用範圍不同:三層可以應用于任何語言、任何技術的應用程式;而MVC隻是為了解決BS應用程式視圖層各部分的耦合關系。它們互不沖突,可以同時存在,也可根據情況使用其中一種。

小結:先簡單了解一下MVC,接下來認真學習,仔細體會MVC的特點。

繼續閱讀