天天看點

mvc

在ASP.NET MVC開發模型中,頁面的請求并不是像傳統的Web應用開發中的請求一樣是對某個檔案進行通路,初學者可能會在一開始覺得非常的不适應。例如當使用者通路

/home/abc.aspx時,在伺服器的系統目錄中一定會存在abc.aspx這個頁面,而對于傳統的頁面請求的過程也非常容易了解,因為在伺服器上隻有存在了home檔案夾,在home檔案夾下一定存在abc.aspx頁面才能夠進行相應的頁面通路。

 對于ASP.NET MVC開發模型而言,當請求URL路徑為“/home/abc.aspx”時,也許在伺服器中并不存在相應的abc.aspx頁面,而可能是伺服器中某個方法。在ASP.NET MVC應用程式中,頁面請求的位址不能夠按照傳統的概念進行分析,要了解ASP.NET MVC應用程式的頁面請求位址就需要了解ASP.NET MVC開發模型的運作結構。

Models:Models負責與資料庫進行互動,在ASP.NET MVC架構中,使用LINQ進行資料庫連接配接和操作。

Views:Views負責頁面的頁面呈現,包括樣式控制,資料的格式化輸出等。

Controllers:Controllers負責處理頁面的請求,使用者呈現相應的頁面。

視圖(View)代表使用者互動界面,對于Web應用來說,可以概括為HTML界面,但有可能為XHTML、XML和Applt。随着應用的複雜性和規模性,界面的處理也變得具有挑戰性。一個應用可能有很多不同的視圖,MVC設計模式對于視圖的處理僅限于視圖上資料的采集和處理,以及使用者的請求,而不包括在視圖上的業務流程的處理。業務流程的處理交予模型(Model)處理。比如一個訂單的視圖隻接受來自模型的資料并顯示給使用者,以及将使用者界面的輸入資料和請求傳遞給控制和模型。

  模型(Model):就是業務流程/狀态的處理以及業務規則的制定。業務流程的處理過程對其它層來說是黑箱操作,模型接受視圖請求的資料,并傳回最終的處理結果。業務模型的設計可以說是MVC最主要的核心。目前流行的EJB模型就是一個典型的例子,它從應用技術實作的角度對模型做了進一步的劃分,以便充分利用現有的元件,但它不能作為應用設計模型的架構。它僅僅告訴你按這種模型設計就可以利用某些技術元件,進而減少了技術上的困難。對一個開發者來說,就可以專注于業務模型的設計。MVC設計模式告訴我們,把應用的模型按一定的規則抽取出來,抽取的層次很重要,這也是判斷開發人員是否優秀的設計依據。抽象與具體不能隔得太遠,也不能太近。MVC并沒有提供模型的設計方法,而隻告訴你應該組織管理這些模型,以便于模型的重構和提高重用性。我們可以用對象程式設計來做比喻,MVC定義了一個頂級類,告訴它的子類你隻能做這些,但沒法限制你能做這些。這點對程式設計的開發人員非常重要。

  控制(Controller)可以了解為從使用者接收請求,

将模型與視圖比對在一起,共同完成使用者的請求。劃分控制層的作用也很明顯,它清楚地告訴你,它就是一個分發器,選擇什麼樣的模型,選擇什麼樣的視圖,可以完成什麼樣的使用者請求。控制層并不做任何的資料處理。例如,使用者點選一個連接配接,控制層接受請求後,

并不處理業務資訊,它隻把使用者的資訊傳遞給模型,告訴模型做什麼,選擇符合要求的視圖傳回給使用者。是以,一個模型可能對應多個視圖,一個視圖可能對應多個模型。