《ASP.NET Core 3框架揭秘》已經開始預售,入群享受5折優惠


WeChat Image_20200307073158作為一個17年的.NET開發者,我對一件事特別不能理解:我們的計算機圖書市場充斥着一系列介紹ASP.NET Web Forms、ASP.NET MVC、ASP.NET Web API的書籍,但是卻找不到一本專門介紹ASP.NET自身框架的著作。我們知道上述這些Web開發框架都是建立在ASP.NET這個底層框架之上,底層的ASP.NET框架才是根基所在。在過去的這些年里,我接觸過很多資深的ASP.NET開發人員,發現他們對ASP.NET框架大都沒有深入的了解。image

2014年,在向出版社提交了《ASP.NET MVC 5框架揭秘》的終版稿件之后,我本打算寫一本《ASP.NET框架揭秘》。在新書的准備過程中,微軟推出了ASP.NET Core(那時還被稱為ASP.NET 5,當時還沒有.NET Core的概念)。為此我及時轉移到了針對ASP.NET Core的學習和研究,並在之后開始了本書的寫作。

在我過去尚算豐富的寫作經歷中,《ASP.NET Core 3框架揭秘》算作耗時最長(差不多5年),投入心血最多的一本書。2015年初,我敲下了本書的第一行文字,微軟在2016年6月正式發布.NET Core 1.0的時候,本書的絕大部分內容就已經完成。 隨后微軟不斷推出新的版本,本書的內容也在不斷的快速“迭代”中。你手中的這本書共計800多頁,我在寫作過程中刪除的文字也能達到這個數字。

有的人可能會說,我每天只是做一些簡單的編程工作,根本沒有必要去了解底層原理和設計方面的內容。其實不論我們從事何種層次的工作,最根本的目的只有一個,那就是解決問題。解決方案分兩種,一種叫做“揚湯止沸”,另一種被稱為“釜底抽薪”。由於只看到鍋里不斷沸騰的水,你只能不斷地往鍋里澆冷水,我們希望這本書能夠讓你看到鍋底熊熊燃燒的薪火。

《ASP.NET Core 3框架揭秘》已經開始預售,進入讀者群享受5折優惠。由於目前人數已經超過200人,只能通過邀請方能加入。有興趣的朋友可以搜索微信賬號“broadview002”(博文小丸子)並添加為好友,並在申請消息中指定本書書號“38462”,出版社工作人員將自動幫你添加到該微信群。對於在群的朋友們,你也可以邀請感興趣的人加入。新開3群,前200名直接掃碼加入。

WeChat Image_20200312131937

本書內容

ASP.NET Core一個全新的Web開發平台,它為我們構建一個可復用和可定制的請求處理管道,微軟在它上面構建了MVC、SingalR、GRPC、Orleans這樣廣泛使用的Web框架,我們也可以利用它構建自己的Web框架(比如我曾經在ASP.NET Core構建了一款GraphQL框架)。本書只關注最本質的東西,即ASP.NET Core請求處理管道,並不會涉及上述這些Web框架,本書的內容主要划分為如下四個部分。

跨平台的開發體驗和實現原理

跨平台是.NET Core區別於傳統.NET Framework最大的特征,作為開篇入門材料,本書第1章“跨平台的開發體驗”會通過幾個簡單的Hello World程序讓讀者體驗在Windows、Mac OS、Linux平台上開發.NET Core應用,以及通過Docker容器部署ASP.NET Core應用的樂趣。隨后的第2章 “跨平台的奧秘” 將告訴你.NET Core的跨平究竟是如何實現的。

基礎框架

ASP.NET Core框架依賴一些基礎框架,其中最重要的就是依賴注入框架。由於依賴注入框架不僅僅是構建ASP.NET Core請求處理管道的基石,而且依賴注入也成為了ASP.NET Core應用的基本編程模式,所以本書采用兩章的內容(第3章 “依賴注入(上篇)” 和第4章 “依賴注入(下篇)” )對依賴注入原理以及依賴注入框架的設計和編程方式進行了詳細介紹。

ASP.NET Core應用具有很多讀取文件內容的場景,所以它構建了一個抽象的文件系統,本書第5章 “文件系統” 會對這個文件系統的設計模型和兩種實現方式(物理文件系統和程序集內嵌文件系統)進行詳細介紹。

.NET Core針對 “配置” 的支持是傳統.NET 開發人員所不能想象的,我們同樣采用兩章的篇幅對這一主題進行講解。第6章 “配置選項(上篇) “旨在介紹支持多種數據源的配置系統。不論是開發ASP.NET Core應用還是組件,我們推薦采用Options模式來讀取配置選項,第7章 “配置選項(下篇)” 會着重講述這種強類型的配置選項編程方式。

.NET Core在錯誤診斷方面給我們非常多的選擇,第8章 “診斷日志(上篇)” 會介紹五種常用的記錄診斷日志的方式。.NET Core還提供了一個支持多種輸出渠道的日志系統,針對該日志系統在第9章 “診斷日志(下篇)” 具有非常詳細的介紹。

管道詳解

.NET Core的服務承載系統用來承載那些需要長時間運行的服務,ASP.NET Core作為最為重要的服務類型被承載與該系統中,第10章 “承載系統” 會對該服務承載系統進行系統介紹。由於請求處理管道是整本書的核心所在,所以我們采用了整整三章的篇幅來介紹這個部分。第11章 “管道(上篇)” 主要從編程模型的角度來認識管道。第12章 “管道(中篇)” 提供了一個極簡版的模擬框架來展示ASP.NET Core框架的總體設計。在隨后的第13章 “管道(下篇)” 中,我們以這個模擬框架為基礎,采用漸進的方式補充一些遺漏的細節,進而將ASP.NET Core框架真實的管道展現在讀者眼前。

中間件

ASP.NET Core框架的請求處理管道由服務器和中間件組成,管道利用服務器來監聽和接收請求,將完整最終對請求的響應,應用針對請求的處理則體現在有序排列的中間件上。微軟為我們提供了一系列原生的中間件,針對這些中間件的介紹全部放在了本書的下冊。

這部分涉及用來處理文件請求(第14章 “靜態文件” )、路由(第15章 “路由” )、異常處理(第16章 “異常處理” )的中間件,也包括用來響應緩存(第17章 “緩存” )和會話(第18章 “會話” )的中間件,還包括用來實現認證(第19章 “認證” )、授權 “(第20章 “授權” )、跨域資源共享(第21章 “跨域資源共享” )等與安全相關的中間件。

這部分還介紹了針對本地化(第22章“本地化”)和健康檢查(第23章“健康檢查”)的中間件。除此之外,我們還提供用來實現主機名過濾、HTTP重寫、設置基礎路徑等功能的中間件,這些零散的中間件全部被收入最后一章(第24章“補遺”)中。

二、寫作特點

《ASP.NET Core 3框架揭秘》算是揭秘系列的第6本書了。在過去十來年里,我得到了很多來自熱心讀者的反饋,這些反饋對書的內容基本上都持正面的評價,但對寫作技巧和表達方式的評價則不盡相同。雖然每個作者都由屬於自己的寫作風格,每個讀者的學習思維方式也不僅相同,兩者很難出現100%的契合,但是我還是決定在這本書上做出改變。

本書的內容采用了不一樣的組織方式,我覺得這樣的方式更符合系統地學習一門全新技術的“流程”。對於每一個模塊,我會采用“體驗先行”的原則,提供一些簡單的實例演示讓讀者對當前模塊的基本功能特性和編程模式具有大致的了解。我們會在編程體驗中抽取出一些核心的對象,並利用它們構建出當前模塊的抽象模型,讀者讀懂了這個模型也就了解了當前模塊的總體設計。接下來我們從抽象轉向具體,進一步深入介紹抽象模型的實現原理。為了讓讀者能夠將在真實項目中靈活自如地運用當前的模塊,我們會介紹一些面向應用的擴展和最佳實踐。總地來說,本書采用 “編程體驗”、“總體設計”、“具體實現”和“靈活運用”這樣流程來讓讀者循序漸進地學習ASP.NET Core的每個功能模塊。

本書綜合運用了三種不同的“語言”來講述每一個技術主題,它們分別是文字語言、圖表語言和編程語言。一圖勝千言,我在每一章節中都精心設計了很多圖表,這些具象的圖表能夠幫助讀者朋友們更容易地理解技術模塊的總體設計、執行流程和交互方式。除了利用編程語言描述應用編程接口(API)之外,全書提供了近200個實例,這些實例具有不同的作用,它們有的是為了演示某個實用的編程技巧或者最佳實踐,有的是為了強調一些容易忽視但很重要的技術細節,還有的是為了探測和證明所述的論點。

本書在很對地方會展示一些類型的代碼,但是這些代碼是和真正的源代碼是有差異的,兩者差異源於幾個原因:第一、源代碼在版本更替中一直在發生改變;第二、由於篇幅的限制,我會刻意刪除一些細枝末節的代碼,比如針對參數的驗證、診斷日志的輸出和異常處理等;第三、很多源代碼其實都具有優化的空間。綜上所述,本書中提供的代碼片段旨在揭示設計原理和實現邏輯,不是為了向讀者展示源代碼。

三、目標讀者

雖然《ASP.NET Core 3框架揭秘》關注的是ASP.NET Core自身框架提供請求處理管道,而不是具體某個應用編程框架(比如MVC、SingalR、GRPC等),但是這本書適合所有.NET技術從業人員。

我個人覺得任何好的設計都應該是簡單的設計,唯有簡單的設計才能應對后續版本更替中出現的復雜問題。從這個意義上講,ASP.NET框架的設計就是“好的設計“,因為自它正式推出的那一刻起,其總體設計基本上就沒有發生改變。ASP.NET Core的設計同樣是” 好的設計 “,其簡單的管道式設計在未來的版本更替中也不會發生太大的改變,既然是好的設計,它就應該簡單。

正如上面所說,本書采用的“漸進式”的寫作方式,即使對於那些完全沒有接觸過ASP.NET Core的開發人員,都會很容易通過本書深入並系統掌握這門技術。由於本書提供的大部分內容都是獨一無二的,即使是非常資深的.NET開發設計人員,我相信也能在書中找到很多不甚了解的盲點。

四、目錄

ASP.NET Core 3框架揭秘(上冊)
ASP.NET Core 3框架揭秘(下冊)


免責聲明!

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



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