在這一章中,我們將學(xué)習(xí)如何使用基架快速搭建和運(yùn)行一個簡單的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。在寫本書的時候,ASP.NET MVC的生產(chǎn)版本為MVC5,因此,本書的示例代碼都使用ASP.NET MVC 5編寫。在本書中有一章內(nèi)容涵蓋ASP.NET Core 1.0 MVC (MVC 6)。
MVC這三個大寫字母分別表示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文件將會被發(fā)送到瀏覽器。視圖(View)通常用于展示從模型(Model)獲取的數(shù)據(jù)。盡管視圖(View)可以包含一些決定哪些HTML可以被生成的邏輯,但不應(yīng)該包含任何業(yè)務(wù)邏輯。
Controllers:是一些用于處理輸入請求的類,這些類可以從模型(Model)獲取數(shù)據(jù),并將這些數(shù)據(jù)傳遞給視圖(View),最終在視圖(View)生成的HTML中顯示。控制器(Controller)可能會包含一些根據(jù)請求中的某些信息來過濾數(shù)據(jù)的邏輯。比如,我們可以根據(jù)傳遞給控制器(Controller)方法的參數(shù)(該參數(shù)的值來自于客戶端請求)來生成查詢。
譯者注:在本書后續(xù)翻譯過程中,將會把Model翻譯成模型、View翻譯成視圖、Controller翻譯成控制器,不再使用英文描述。
在本書中的示例代碼有助于加深我們對模型、視圖和控制器定義的理解,并在合適的時機(jī)使用更加高級的概念,比如視圖模型(View Model)。
MVC起源于70年代后期的Smalltalk項(xiàng)目,從此之后不斷被更新并應(yīng)用于多個技術(shù)領(lǐng)域。MVC的主要原則是要創(chuàng)建一個可分層的、可測試的以及可維護(hù)的應(yīng)用程序體系架構(gòu)。MVC的特點(diǎn)之一就是比較適合做單元測試,這主要得益于模型、視圖和控制器的劃分。單元測試在本書中沒有涉及,如果想對單元測試有一個深入的理解,推薦大家閱讀Adam Freeman的PRO ASP.NET MVC(中文名稱:精通ASP.NET MVC 5)一書。
1.2 Entity Framework和Code First(代碼優(yōu)先)
Entity Framework (EF)是一個對象關(guān)系映射(object relational mapping, ORM)框架,該框架是.NET Framework的一部分。本書將通篇使用Entity Framework的Code First方法編寫類及它們之間的關(guān)系,然后在不使用任何SQL語句的情況下,生成數(shù)據(jù)庫及對應(yīng)的表。在編寫本書時,Entity Framework可用版本為EF 6,然而在本書中有一章會涉及使用EF 7版本。在本書中的所有示例代碼使用的都是SQL Server,但是,Entity Framework也可以用于其他關(guān)系型數(shù)據(jù)庫,比如Oracle。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26