1. 程式人生 > >《ASP.NET Core 3框架揭祕》讀者群,歡迎加入

《ASP.NET Core 3框架揭祕》讀者群,歡迎加入

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

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框架揭祕》(上下冊)在本月正式上市,為此出版社專門建立了一個微信群,。由於目前人數已經超過200人,只能通過邀請方能加入。有興趣的朋友可以搜尋微信賬號“broadview002”(博文小丸子)並新增為好友,並在申請訊息中指定本書書號“38462”,出版社工作人員將自動幫你新增到該微信群。對於在群的朋友們,你也可以邀請感興趣的人加入。

一、本書內容

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框架揭祕(下冊)