[譯]Professional ASP.NET MVC3(03) – Chapter 1:Getting Started(下)

來源:互聯網
上載者:User
三、理解MVC應用程式結構

使用Visual Studio建立一個新的ASP.NET MVC應用後,會自動為項目產生一些檔案和目錄,1-10所示.。 ASP.NET MVC項目預設有六個頂級目錄,如表1-1所示。

 

表1-1:預設頂級目錄

目錄

用途

/Controllers

用來放處理URL 請求的Controller類

/Models

用來放表示及操作資料業務對象的類

/Views

用來放負責表示輸出(例如HTML)的使用者介面模板檔案的位置

/Scripts

放JavaScript庫檔案和指令碼(.js)的位置

/Content

放置CSS,圖片檔案以及其他非動態或JavaScript的內容

/App_Data

用來儲存想要讀寫的資料檔案的位置

 

假如我不喜歡這種目錄結構該呢?

ASP.NET MVC並不強制要求使用該結構。事實上,開發人員在進行大型應用開發時會將應用程式劃分為多重專案,從而使其更加方便管理(例如,資料模型類經常被分離出來,單獨放置在一個類庫項目中)。不過,預設產生的項目結構確實提供了不錯的目錄慣例,你可以通過使用它來保持清晰的應用程式關注點。

 

注意下面這些檔案和目錄。當你展開時:

  • /Controller檔案夾:你會發現Visual Studio預設向項目中添加了兩個controller類——HomeController和AccountController(圖1-11)。

  • /Views檔案夾:你會發現預設向項目中添加了三個子目錄——/Account, /Home, /Shared,以及裡麵包含的一些模板檔案(1-12)。
  • /Content和/Sripts檔案夾,你會發現用於控制整站HTML樣式的Site.css檔案,以及使項目支援jQuery的JavaScript類庫(1-13)。

                          

 

  • MvcMusicStore.Tests項目:可以看到兩個類,包含了關於Controller類的單元測試(見圖1-14)。

這些由Visual Studio添加的預設檔案,為你提供了一個可用的應用程式的基本結構,結束時已經包含了首頁,關於頁面,帳號登入、登出、註冊頁面,以及錯誤處理頁面。

ASP.NET MVC和慣用約定

ASP.NET MVC應用程式在很大程度預設依賴於慣用約定。它使開發人員能夠避免進行一些可以基於約定推斷出來的配置和定製等。

例如,MVC使用當處理view模板時,MVC使用基於約定的目錄命名結構,這些約定使你在controller類引用view時忽略其實體路徑。ASP.NET MVC預設會在項目的\Views[ControllerName]\檔案夾尋找view模板檔案。

MVC是圍繞著一些明顯的基於約定預設值來設計的,當然如過需要的話可以被重寫。這個概念通常被稱作“約定由於配置”(convention over configure)。

 

約定由於配置(Conventon over Configureation

約定由於配置的概念是在若干年前由Ruby on Rails流行而來的,主要含義是:

到現在為止,我們知道應該如何構建一個web應用程式。那麼我們來把這些經驗融合到架構中,這樣我們就不必每次都重新進行所有配置

 

通過查看應用程式啟動並執行三個核心檔案夾,我們就可以在ASP.NET MVC的工作中發現此概念:

  • Controllers
  • Models
  • Views

你不必在web.config檔案中設定這些檔案夾名稱——按照約定他們會在那裡。這就省去了必須編寫像web.config這樣的XML檔案的工作。例如,為了明確的告訴MVC引擎,“你可以在Views路徑找到我的views”——它已經知道了。這是一個約定。

 

This isn’t meant to be magical. Well, actually, it is; it’s just not meant to be black magic — the kind of magic where you may not get the outcome you expected (and moreover can actually harm you). ASP.NET MVC’s conventions are pretty straightforward. This is what is expected of your application’s structure:

這並不是神乎其神的。不過,事實上它確實是。不過它並不是巫術——從這種魔術那裡可能得不到你所預期的結果(此外,還可能會傷害到你)。ASP.NET MVC中的約定是非常簡單的,下面將是你的軟體結構:

  • 每個Controller類命名都以Controller結尾——如ProductController、HomeController等,都存在於Controllers目錄。
  • 有一個單獨的Views目錄存放程式中所有的Views。
  • Controllers所使用的Views都在Views主目錄下的子目錄中,並且根據controller名稱進行命名(去除Controller尾碼)。例如,前面提到的ProductController對應的view存在於 /Views/Product檔案夾中。

所有可共用的UI元素都以類似的結構存在,不過是在Views檔案夾下的Shared目錄中。在第3章中會瞭解更多關於Views的資訊。

 

約定簡化溝通(Conventions Simplify Communication

你編寫代碼來進行表達和交流。主要要向兩類不同的觀眾進行表述:

  • 你必須清楚明白地向電腦傳到執行指令;
  • 想要開發人員能夠定位並閱讀你的代碼,以便於進行後續的維護、調試和擴充

我們已經討論了約定優於配置原則是如何幫你高效地向MVC表達你的意圖的。約定還能使你清楚地同其他開發人員(包括今後自己)進行交流溝通。遵循通用的約定使全世界的MVC開發人員能夠在所有的程式中具有共同的基準,這樣就避免了對程式結構的每個方面進行反覆的講述。軟體設計模式通常的優點之一是它建立了一個標準的語言。由於ASP.NET MVC應用了MVC模式,並且包含了一些自己的約定慣例,使得MVC開發人員即使在大型項目中也很容易看懂並非他們自己編寫(或者不記得寫過)的代碼。

四、 總結

本章涉及面較廣,首先從ASP.NET MVC簡介開始,介紹了ASP.NET web架構和MVC軟體模式如何融合成強大的系統來構建web應用程式。你可以看到ASP.NET MVC怎樣經曆兩個版本而臻於成熟,較深入地介紹了ASP.NET MVC 3的特徵和重點。基於這些基礎,進行了開發環境的安裝並且開始建立一個簡單的MVC3應用。最後,查看了MVC 3應用程式的結構和構件。從第2章的Controllers開始,在後面的章節中我們會更加深入的瞭解這些組成部分的細節。

 

註:參考書籍《Professional ASP.NET MVC3》,僅供學習和交流,請勿用於商業用途。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.