ASP.NET Core 學(xué)習(xí)手冊(cè)
(點(diǎn)擊上方藍(lán)字,可快速關(guān)注我們)
來(lái)源:Nate
windsting.github.io/little-aspnetcore-book/book/
前言
簡(jiǎn)明 ASP.NET Core 手冊(cè)!我寫(xiě)這本小書(shū)的目的,是幫助開(kāi)發(fā)者和愛(ài)好者了解 ASP.NET Core 2.0,一個(gè)嶄新的,用于創(chuàng)建 Web應(yīng)用 和 API 的框架。
這本 簡(jiǎn)明 ASP.NET Core 手冊(cè) 內(nèi)容組織成了一篇教程。
你將從零開(kāi)始,完整地構(gòu)建一個(gè) 待辦事項(xiàng)(to-do) 應(yīng)用,同時(shí)了解以下內(nèi)容:
MVC (Model-View-Controller) 模式的基本內(nèi)容
前端代碼(HTML, CSS, JavaScript)怎樣與后端代碼交互
什么是依賴注入以及它的實(shí)用之處
如何進(jìn)行數(shù)據(jù)庫(kù)的讀寫(xiě)操作
如何添加 登錄、注冊(cè)功能,以及如何提升安全性
如何部署該應(yīng)用到網(wǎng)絡(luò)上
別擔(dān)心,你可以在 對(duì) ASP.NET Core (以及上面列表的內(nèi)容)一無(wú)所知的狀態(tài)下開(kāi)始學(xué)習(xí)。
開(kāi)始之前
你將要構(gòu)建的這個(gè)應(yīng)用,其完整源碼位于GitHub(https://www.github.com/nbarbettini/little-aspnetcore-todo) 。
如果需要與你自己的代碼做對(duì)比,可任意下載。
這本書(shū)本身也會(huì)由于修訂和內(nèi)容的增加而頻繁更新。如果你閱讀的是 PDF、電子書(shū),或者打印版,請(qǐng)查閱官網(wǎng)(littleasp.net/book)的版本更新。
有關(guān)版本信息和更新內(nèi)容,請(qǐng)查閱本書(shū)的最后一頁(yè)。
選擇你的語(yǔ)言閱讀
感謝那些多語(yǔ)言的讀者,簡(jiǎn)明 ASP.NET Core 手冊(cè) 已經(jīng)被翻譯成其它語(yǔ)言:
The Little ASP.NET Core Book (English -- original version)
ASP.NET Core El Kitab? (Turkish)
本書(shū)的目標(biāo)讀者
如果你剛開(kāi)始編程,本書(shū)將使你了解構(gòu)建最新web應(yīng)用的模式和概念。通過(guò)從頭開(kāi)始創(chuàng)建一些東西,你將學(xué)習(xí)構(gòu)建一個(gè) web 應(yīng)用的方法(以及合理組織各模塊的方法)。盡管這個(gè)手冊(cè)不能事無(wú)巨細(xì)地講解你對(duì)編程所需的全部?jī)?nèi)容,但它將成為你的一個(gè)起點(diǎn),通向更多高級(jí)的主題。
如果你已經(jīng)在使用諸如 Node、Python、Ruby、Go 或者 Java 之類(lèi)的后端語(yǔ)言寫(xiě)代碼,你會(huì)注意到很多熟悉的概念,比如 MVC、視圖模板和依賴注入。你將使用 C# 進(jìn)行進(jìn)行編程,但跟你先前熟知的內(nèi)容不會(huì)差異太大。
如果你是一個(gè) ASP.NET MVC 開(kāi)發(fā)者,你將如魚(yú)得水。ASP.NET Core 增添了一些新工具并復(fù)用(及簡(jiǎn)化)了你用過(guò)的那些東西。我會(huì)在后面指出其中的部分差異。
不論你此前在 web 編程方面經(jīng)驗(yàn)如何,本書(shū)都會(huì)傾囊相授,足以使你用 ASP.NET Core 創(chuàng)建一個(gè)簡(jiǎn)單但實(shí)用的 web 應(yīng)用。
你將學(xué)習(xí)如何用前后端代碼實(shí)現(xiàn)設(shè)計(jì)目標(biāo),如何與數(shù)據(jù)庫(kù)交互,如何測(cè)試并部署應(yīng)用到真實(shí)環(huán)境。
什么是 ASP.NET Core?
ASP.NET Core 是一個(gè)由微軟創(chuàng)建的,用于構(gòu)建 web 應(yīng)用、API、微服務(wù) 的 web 框架。它使用常見(jiàn)的模式,諸如 MVC(Model-View-Controller)、依賴注入,和一個(gè)由中間件構(gòu)成的請(qǐng)求處理管線。
它基于 Apache 2.0 許可證開(kāi)放源碼,就是說(shuō),源代碼可以自由獲取,并且歡迎社區(qū)成員以 缺陷修復(fù) 和 新功能提交 的方式進(jìn)行貢獻(xiàn)。
ASP.NET Core 運(yùn)行在微軟的 .NET 運(yùn)行時(shí)庫(kù)上,類(lèi)似于 Java 的 虛擬機(jī)(JVM)或者 Ruby 的解釋器。有幾種語(yǔ)言(C#,Visual Basic,F(xiàn)#)可以用來(lái)編寫(xiě) ASP.NET Core 程序。C# 是最常見(jiàn)的選擇,我在本書(shū)中也會(huì)采用它。你可以在 Windows、Mac,和 Linux 上構(gòu)建并運(yùn)行 ASP.NET Core 應(yīng)用。
又一個(gè) web 框架,需求何在?
現(xiàn)存的 web 框架選項(xiàng)已經(jīng)很多了:Node/Express、Spring、Ruby on Rails、Django、Laravel 等等,數(shù)不勝數(shù)。ASP.NET Core 又有什么可取之處呢?
速度 ASP.NET Core 很快。因?yàn)?.NET Core 是編譯運(yùn)行的,執(zhí)行速度遠(yuǎn)高于解釋執(zhí)行的語(yǔ)言,比如 JavaScript 或者 Ruby、ASP.NET Core 也已經(jīng)為多線程和異步任務(wù)作了專門(mén)的優(yōu)化。與使用 Node.js 寫(xiě)的代碼相比,執(zhí)行速度高出 5-10 倍是很正常的。
生態(tài) ASP.NET Core 可能初出茅廬,但 .NET 卻已久經(jīng)考驗(yàn)。在 NuGet(.NET 的包管理系統(tǒng),類(lèi)似 npm、Ruby gems,或者 Maven)上有成千上萬(wàn)的軟件包。有現(xiàn)成的包可用來(lái)完成 JSON 反序列化、數(shù)據(jù)庫(kù)連接、PDF生成,或者幾乎你能想到的任何需求。
安全性 微軟的開(kāi)團(tuán)隊(duì)很注重安全性,ASP.NET Core 從創(chuàng)建基礎(chǔ)就是安全的。它已經(jīng)自動(dòng)處理了 凈化輸入數(shù)據(jù) 和 跨域偽造請(qǐng)求(XSRF),你就不用操心這些了。你同時(shí)還享有 .NET 編譯器的靜態(tài)類(lèi)型檢測(cè)的福利,它像個(gè)時(shí)刻警惕著,還有些強(qiáng)迫癥的審校者。這樣,在使用一個(gè)變量或者某些數(shù)據(jù)時(shí),那些無(wú)意識(shí)的錯(cuò)誤就插翅難逃。
.NET Core 和 .NET 標(biāo)準(zhǔn)
貫穿本書(shū),你將學(xué)習(xí)有關(guān) ASP.NET Core (web 框架)的知識(shí)。我會(huì)偶爾提及 .NET 運(yùn)行時(shí)(用于運(yùn)行 .NET 代碼的支持庫(kù))。
你可能還會(huì)聽(tīng)說(shuō) .NET Core 和 .NET標(biāo)準(zhǔn),這些命名有些混亂,所以在此做一簡(jiǎn)短的釋疑:
.NET 標(biāo)準(zhǔn) 是一個(gè)平臺(tái)無(wú)關(guān)的接口,它定義了 .NET 中具有哪些特性和 API。.NET 標(biāo)準(zhǔn)并不等同于任何實(shí)際的代碼或者功能,僅僅是 API 的定義。.NET 標(biāo)準(zhǔn)現(xiàn)存多個(gè)不同的“版本”或者說(shuō)級(jí)別,反映出提供 API 的數(shù)量(或者說(shuō) API 所覆蓋的廣度)。比如 .NET標(biāo)準(zhǔn)2.0 的 API 數(shù)量比 .NET標(biāo)準(zhǔn)1.5 多,后者的 API 又比 .NET標(biāo)準(zhǔn)1.0 多。
.NET Core 是可安裝在 Windows、Mac或者Linux上的 .NET 運(yùn)行時(shí)庫(kù)。它在各個(gè)操作系統(tǒng)上,使用對(duì)應(yīng)的平臺(tái)相關(guān)代碼實(shí)現(xiàn)了定義于 .NET 標(biāo)準(zhǔn)中的 API。你將要把它安裝到機(jī)器上,用來(lái)構(gòu)建和運(yùn)行 ASP.NET Core 應(yīng)用程序。
作為對(duì)比,這里要指出, .NET Framework 是另一個(gè) .NET標(biāo)準(zhǔn) 的實(shí)現(xiàn),它只能運(yùn)行在 Windows 上。在 .NET Core 出現(xiàn)并把 .NET 推向 Mac 和 Linux 之前,它是唯一的 .NET 運(yùn)行時(shí)庫(kù)。ASP.NET Core 也可以跑在 Windows 專用的 .NET Framework 上,但我不會(huì)過(guò)多涉及這個(gè)主題。
如果你已經(jīng)被這些命名搞糊涂了,別發(fā)愁!咱們馬上就要寫(xiě)代碼進(jìn)行實(shí)踐了。
ASP.NET 4 開(kāi)發(fā)者注意
如果你從沒(méi)用過(guò) ASP.NET 以前的版本,直接看下一章去吧!
ASP.NET Core 是對(duì) ASP.NET 徹底的重寫(xiě),重點(diǎn)關(guān)注于讓該框架應(yīng)用新的開(kāi)發(fā)方法,并最終使其與 System.Web、IIS、和 Windows 解耦。
你要是還記得 ASP.NET 4 的 OWIN/Katana 那些內(nèi)容,你就已經(jīng)學(xué)會(huì)一半了:Katana 項(xiàng)目成了 ASP.NET 5,而后者的名字最終被改成了 ASP.NET Core。
作為 Katana 的傳承, Startup 類(lèi)成了起始和中心,Application_Start 和 Global.asax 則不復(fù)存在了。
整個(gè)處理管線由中間件驅(qū)動(dòng),MVC 和 Web API 不再有區(qū)別:控制器可以方便的返回視圖、狀態(tài)碼,或者數(shù)據(jù)。
依賴注入功能已經(jīng)內(nèi)置了,所以,如果你不想費(fèi)勁的話,完全可以不用再安裝并配置一個(gè)服務(wù)容器了,比如 StructureMap 或者 Ninject。整個(gè)框架已經(jīng)針對(duì)速度和運(yùn)行時(shí)效率進(jìn)行了優(yōu)化。
好了,前言就到這兒。開(kāi)始學(xué)習(xí) ASP.NET Core 吧。
往期推薦
