在這一章中,我們將學(xué)習(xí)如何使用基架快速搭建和運(yùn)行一個(gè)簡單的Microsoft ASP.NET MVC Web站點(diǎn)。在我們馬上投入學(xué)習(xí)和編碼之前,我們首先了解一些有關(guān)ASP.NET MVC和Entity Framework的背景信息,然后再詳細(xì)學(xué)習(xí)如何搭建開發(fā)環(huán)境。

1.1 MVC和ASP.NET MVC

  這本書涵蓋Microsoft版本的MVC,即ASP.NET MVC。在寫本書的時(shí)候,ASP.NET MVC的生產(chǎn)版本為MVC5,因此,本書的示例代碼都使用ASP.NET MVC 5編寫。在本書中有一章內(nèi)容涵蓋ASP.NET Core 1.0 MVC (MVC 6)。

  MVC這三個(gè)大寫字母分別表示Model-View-Controller(模型-視圖-控制器),是一種廣泛使用的軟件開發(fā)設(shè)計(jì)模式。ASP.NET MVC由以下基本模塊組成:

  • Models:是一些表示應(yīng)用程序數(shù)據(jù)的類,這些類通常稱之為普通CLR對象(Plain Old CLR Objects, POCOs)。這些類也用來封裝和執(zhí)行一些業(yè)務(wù)邏輯,比如,我們稍后看到的購物車的業(yè)務(wù)邏輯。

  • Views:是一些用于生成HTML的模板文件,生成的HTML文件將會(huì)被發(fā)送到瀏覽器。視圖(View)通常用于展示從模型(Model)獲取的數(shù)據(jù)。盡管視圖(View)可以包含一些決定哪些HTML可以被生成的邏輯,但不應(yīng)該包含任何業(yè)務(wù)邏輯。

  • Controllers:是一些用于處理輸入請求的類,這些類可以從模型(Model)獲取數(shù)據(jù),并將這些數(shù)據(jù)傳遞給視圖(View),最終在視圖(View)生成的HTML中顯示??刂破鳎–ontroller)可能會(huì)包含一些根據(jù)請求中的某些信息來過濾數(shù)據(jù)的邏輯。比如,我們可以根據(jù)傳遞給控制器(Controller)方法的參數(shù)(該參數(shù)的值來自于客戶端請求)來生成查詢。

  譯者注:在本書后續(xù)翻譯過程中,將會(huì)把Model翻譯成模型、View翻譯成視圖、Controller翻譯成控制器,不再使用英文描述。

  在本書中的示例代碼有助于加深我們對模型、視圖和控制器定義的理解,并在合適的時(shí)機(jī)使用更加高級的概念,比如視圖模型(View Model)。

  MVC起源于70年代后期的Smalltalk項(xiàng)目,從此之后不斷被更新并應(yīng)用于多個(gè)技術(shù)領(lǐng)域。MVC的主要原則是要?jiǎng)?chuàng)建一個(gè)可分層的、可測試的以及可維護(hù)的應(yīng)用程序體系架構(gòu)。MVC的特點(diǎn)之一就是比較適合做單元測試,這主要得益于模型、視圖和控制器的劃分。單元測試在本書中沒有涉及,如果想對單元測試有一個(gè)深入的理解,推薦大家閱讀Adam Freeman的PRO ASP.NET MVC(中文名稱:精通ASP.NET MVC 5)一書。

1.2 Entity Framework和Code First(代碼優(yōu)先)

  Entity Framework (EF)是一個(gè)對象關(guān)系映射(object relational mapping, ORM)框架,該框架是.NET Framework的一部分。本書將通篇使用Entity Framework的Code First方法編寫類及它們之間的關(guān)系,然后在不使用任何SQL語句的情況下,生成數(shù)據(jù)庫及對應(yīng)的表。在編寫本書時(shí),Entity Framework可用版本為EF 6,然而在本書中有一章會(huì)涉及使用EF 7版本。在本書中的所有示例代碼使用的都是SQL Server,但是,Entity Framework也可以用于其他關(guān)系型數(shù)據(jù)庫,比如Oracle。

網(wǎng)友評論