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


三、理解MVC應用程序結構

使用Visual Studio創建一個新的ASP.NET MVC應用后,會自動為項目生成一些文件和目錄,如圖1-10所示.。 ASP.NET MVC項目默認有六個頂級目錄,如表1-1所示。

image

 

表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)。

image

  • /Views文件夾:你會發現默認向項目中添加了三個子目錄——/Account, /Home, /Shared,以及里面包含的一些模板文件(如圖1-12)。
  • /Content和/Sripts文件夾,你會發現用於控制整站HTML樣式的Site.css文件,以及使項目支持jQuery的JavaScript類庫(如圖1-13)。

image                           image

 

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

image

這些由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》,僅供學習和交流,請勿用於商業用途。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM