TOP
0
0
即日起~6/30,暑期閱讀書展,好書7折起
ASP.NET Core 3 框架揭秘(全2冊)(簡體書)
滿額折
ASP.NET Core 3 框架揭秘(全2冊)(簡體書)
ASP.NET Core 3 框架揭秘(全2冊)(簡體書)
ASP.NET Core 3 框架揭秘(全2冊)(簡體書)

ASP.NET Core 3 框架揭秘(全2冊)(簡體書)

商品資訊

人民幣定價:199 元
定價
:NT$ 1194 元
優惠價
871039
領券後再享88折起
海外經銷商無庫存,到貨日平均30天至45天
可得紅利積點:31 點
相關商品
商品簡介
作者簡介
名人/編輯推薦
目次

商品簡介

作為核心的Web開發平台,ASP.NET Core可利用其極具擴展能力的請求處理管道,來支撐目前常用的開發模型,如MVC、GRPC、SingalR和Orlean等。不論從事哪種類型的Web開發,針對底層管道的了解都是必需的。如對底層框架具有足夠的了解,甚至可以在ASP.NET Core平台上構建自己的Web編程模型。《ASP.NET Core 3框架揭秘》不拘泥於某種Web編程模型,而是直接從HTTP請求處理流程的視角對ASP.NET Core底層框架進行剖析,讓你真正了解*本質和核心的原理。

√ 體驗.NET Core跨平台應用開發,了解.NET Core跨平台的奧秘。

√ 剖析常用基礎框架(依賴注入、文件系統、配置選項和診斷日誌等)。

√ 系統介紹以IHost/IHostBuilder為核心的服務承載系統。

√ 深刻理解ASP.NET Core管道的構建方式,以及管道針對請求的處理流程。

√ 深入講述每個常用中間件針對請求的處理邏輯。

 

《ASP.NET Core 3 框架揭秘(上下冊)》主要闡述ASP.NET Core *核心的部分——請求處理管道。通過閱讀本書,讀者可以深刻系統地了解ASP.NET Core 應用在啟動過程中管道的構建方式,以及請求在管道中的處理流程。《ASP.NET Core 3 框架揭秘(上下冊)》還詳細講述了.NET Core 跨平台的本質,以及多個常用的基礎框架(如依賴注入、文件信息、配置選項和診斷日誌等)。《ASP.NET Core 3 框架揭秘(上下冊)》還對大部分原生的中間件提供了系統性介紹,採用“編程體驗”、“總體設計”、“具體實現”和“靈活運用”的流程,使讀者可以循序漸進地學習ASP.NET Core 的每個功能模塊。《ASP.NET Core 3 框架揭秘(上下冊)》可供所有.NET 從業人員閱讀與參考。

作者簡介

蔣金楠

同程藝龍技術專家。知名IT博主(多年來一直排名博客園第一位),擁有個人微信公眾號“大內老A”;2007—2018年連續12次被評為微軟MVP(最有價值專家),也是少數跨多領域(Solutions Architect、Connected System、Microsoft Integration和ASP.NET/IIS等)的MVP之一;暢銷IT圖書作者,先後出版了《WCF全面解析》、《ASP.NET MVC 4框架揭秘》、《ASP .NET MVC 5框架揭秘》和《ASP.NET Web API 2框架揭秘》等著作。

名人/編輯推薦

作為核心的Web開發平臺,ASP.NET Core可利用其極具擴展能力的請求處理管道,來支撐目前常用的開發模型,如MVC、GRPC、SingalR和Orlean等。不論從事哪種類型的Web開發,針對底層管道的瞭解都是必需的。如對底層框架具有足夠的瞭解,甚至可以在ASP.NET Core平臺上構建自己的Web編程模型。《ASP.NET Core 3框架揭秘》不拘泥於某種Web編程模型,而是直接從HTTP請求處理流程的視角對ASP.NET Core底層框架進行剖析,讓你真正瞭解*本質和核心的原理。
√ 體驗 .NET Core跨平臺應用開發,瞭解 .NET Core跨平臺的奧秘。
√ 剖析常用基礎框架(依賴注入、文件系統、配置選項和診斷日誌等)。
√ 系統介紹以IHost\/IHostBuilder為核心的服務承載系統。
√ 深刻理解ASP.NET Core管道的構建方式,以及管道針對請求的處理流程。
√ 深入講述每個常用中間件針對請求的處理邏輯。

寫作源起

計算機圖書市場存在一系列介紹ASP.NET Web Forms、ASP.NET MVC、ASP.NET Web API的圖書,但是找不到一本專門介紹ASP.NET自身框架的圖書,作為一名擁有17年工作經驗的.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。

本書耗時5年左右,筆者投入了大量心血。2015年年初,筆者開始了本書的寫作,微軟在2016年6月正式發布.NET Core 1.0時,本書的絕大部分內容就已經完成。隨後,微軟不斷推出新的版本,本書的內容也在不斷快速“迭代”中。本書正文部分共計800多頁,但筆者在寫作過程中刪除的部分不少於這個數字。

有人認為自己每天只是做一些簡單的編程工作,根本沒有必要去了解底層原理和設計方面的內容。其實,不論我們從事何種層次的工作,最根本的目的只有一個——解決問題。解決方案分兩種:一種是“揚湯止沸”,另一種是“釜底抽薪”。看到鍋裡不斷沸騰的水,大多數人會選擇不斷地往鍋裡澆冷水,筆者希望這本書能夠使讀者看到鍋底熊熊燃燒的薪火。

本書內容

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

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

.NET Core與傳統.NET Framework最大的區別是跨平台,作為開篇入門材料,第1章通過幾個簡單的Hello World程序,讓讀者可以體驗如何在Windows、macOS、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章介紹了5種常用的記錄診斷日誌的方式。.NET Core還提供了一個支持多種輸出渠道的日誌系統,該日誌系統在第9章進行了詳細的介紹。

管道詳解

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

中間件

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

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

這部分還介紹了針對本地化(第22章)和健康檢查(第23章)的中間件。除此之外,這部分還介紹了用來實現主機名過濾、HTTP重寫、設置基礎路徑等功能的中間件,這些零散的中間件全部在第24章進行介紹。

寫作特點

本書是揭秘系列的第6本書。在過去的十來年裡,筆者得到了很多熱心讀者的反饋,這些反饋對書中的內容基本上都持正面評價,但對寫作技巧和表達方式的評價則不盡相同。每個作者都有屬於自己的寫作風格,每個讀者的學習思維方式也不盡相同,兩者很難出現百分之百的契合,但筆者還是決定在本書上做出改變。

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

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

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

目標讀者

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

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

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

關於作者

蔣金楠,同程藝龍技術專家。知名IT博主(多年來一直排名博客園第一位),擁有個人微信公眾號“大內老A”;2007—2018年連續12次被評為微軟MVP(最有價值專家),也是少數跨多領域(Solutions Architect、Connected System、Microsoft Integration和ASP.NET/IIS等)的MVP之一;暢銷IT圖書作者,先後出版了《WCF全面解析》、《ASP.NET MVC 4框架揭秘》、《ASP .NET MVC 5框架揭秘》和《ASP.NET Web API 2框架揭秘》等著作。

致謝

本書得以順利出版離不開博文視點張春雨團隊的辛勤努力,他們的專業水準和責任心為本書提供了質量保證。此外,徐妍妍在本書寫作過程中做了大量的校對工作,在此表示衷心感謝。

本書支持

由於本書是隨著ASP.NET Core一起成長起來的,並且隨著ASP.NET Core的版本更替進行了多次“迭代”,所以書中某些內容最初是根據舊版本編寫的,新版本對應的內容髮生改變後相應內容可能沒有及時更新。對於ASP.NET Core的每次版本升級,筆者基本上會盡可能將書中的內容做相應的更改,但其中難免有所疏漏。由於筆者的能力和時間有限,書中難免存在不足之處,懇請廣大讀者批評指正。

目次

第1章 全新的開發體驗 1

1.1 Windows平台 1

1.1.1 構建開發環境 1

1.1.2 利用命令行創建.NET Core應用 2

1.1.3 ASP.NET Core應用 6

1.1.4 ASP.NET Core MVC應用 13

1.2 macOS用戶 17

1.2.1 構建開發環境 17

1.2.2 利用命令行創建.NET Core應用 17

1.2.3 ASP.NET Core MVC應用 18

1.3 Linux 19

1.3.1 啟用Linux子系統 20

1.3.2 構建開發環境 22

1.3.3 利用命令行創建ASP.NET Core應用 22

1.4 Docker 24

第2章 跨平台的奧秘 27

2.1 歷史的枷鎖 27

2.1.1 Windows下的.NET 27

2.1.2 非Windows下的.NET 31

2.2 復用之傷 34

2.2.1 源代碼復用 34

2.2.2 程序集復用 36

2.3 全新的佈局 44

2.3.1 跨平台的.NET Core 44

2.3.2 統一的BCL 51

2.3.3 展望未來 56

第3章 依賴注入(上篇) 58

3.1 控制反轉 58

3.1.1 流程控制的反轉 58

3.1.2 好萊塢法則 61

3.1.3 流程定制 62

3.2 IoC模式 62

3.2.1 模板方法 63

3.2.2 工廠方法 64

3.2.3 抽象工廠 66

3.3 依賴注入 68

3.3.1 由容器提供對象 68

3.3.2 3種依賴注入方式 69

3.3.3 Service Locator模式 72

3.4 一個簡易版的依賴注入容器 74

3.4.1 編程體驗 74

3.4.2 設計與實現 79

3.4.3 擴展方法 85

第4章 依賴注入(下篇) 89

4.1 利用容器提供服務 89

4.1.1 服務的註冊與消費 89

4.1.2 生命週期 93

4.1.3 針對服務註冊的驗證 96

4.2 服務註冊 99

4.2.1 ServiceDescriptor 99

4.2.2 IServiceCollection 101

4.3 服務的消費 105

4.3.1 IServiceProvider 105

4.3.2 服務實例的創建 106

4.3.3 生命週期 109

4.4 實現概覽 113

4.4.1 ServiceProviderEngine和ServiceProviderEngineScope 113

4.4.2 ServiceProvider 115

4.4.3 注入IServiceProvider對象 117

4.5 擴展 119

4.5.1 適配 120

4.5.2 IServiceProviderFactory 120

4.5.3 整合第三方依賴注入框架 121

第5章 文件系統 126

5.1 抽象的文件系統 126

5.1.1 樹形層次結構 126

5.1.2 讀取文件內容 128

5.1.3 監控文件的變化 130

5.2 設計詳解 131

5.2.1 IChangeToken 132

5.2.2 IFileProvider 133

5.2.3 PhysicalFileProvider 135

5.2.4 EmbeddedFileProvider 139

5.2.5 兩個特殊的IFileProvider實現 144

5.3 遠程文件系統 147

5.3.1 HttpFileInfo與HttpDirectoryContents 147

5.3.2 HttpFileProvider 150

5.3.3 FileProviderMiddleware 151

5.3.4 遠程文件系統的應用 153

第6章 配置選項(上篇) 155

6.1 讀取配置信息 155

6.1.1 配置編程模型三要素 155

6.1.2 以鍵值對的形式讀取配置 156

6.1.3 讀取結構化的配置 157

6.1.4 將結構化配置直接綁定為對象 160

6.1.5 將配置定義在文件中 161

6.2 配置模型 165

6.2.1 數據結構及其轉換 166

6.2.2 IConfiguration 167

6.2.3 IConfigurationProvider 169

6.2.4 IConfigurationSource 171

6.2.5 IConfigurationBuilder 171

6.3 配置綁定 172

6.3.1 綁定配置項的值 173

6.3.2 綁定複合數據類型 175

6.3.3 綁定集合對象 177

6.3.4 綁定字典 180

6.4 配置的同步 181

6.4.1 配置數據流 181

6.4.2 ConfigurationReloadToken 182

6.4.3 ConfigurationRoot 183

6.4.4 ConfigurationSection 185

6.5 多樣性的配置源 186

6.5.1 MemoryConfigurationSource 187

6.5.2 EnvironmentVariablesConfigurationSource 188

6.5.3 CommandLineConfigurationSource 191

6.5.4 FileConfigurationSource 194

6.5.5 StreamConfigurationSource 207

6.5.6 ChainedConfigurationSource 208

6.5.7 自定義ConfigurationSource(S616) 210

第7章 配置選項(下篇) 215

7.1 Options模式 215

7.1.1 將配置綁定為Options對象 215

7.1.2 提供具名的Options 217

7.1.3 配置源的同步 219

7.1.4 直接初始化Options對象 221

7.1.5 根據依賴服務的Options設置 223

7.1.6 驗證Options的有效性 225

7.2 Options模型 226

7.2.1 OptionsManager 226

7.2.2 IOptionsFactory 228

7.2.3 IOptionsMonitorCache 237

7.2.4 IOptionsMonitor 238

7.3 依賴注入 240

7.3.1 服務註冊 240

7.3.2 IOptions與IOptionsSnapshot 246

7.3.3 擴展與定制 248

7.3.4 集成配置系統 256

第8章 診斷日誌(上篇) 258

8.1 各種診斷日誌形式 258

8.1.1 調試日誌 258

8.1.2 跟踪日誌 259

8.1.3 事件日誌 262

8.1.4 診斷日誌 265

8.2 Debugger調試日誌 268

8.2.1 Debugger 268

8.2.2 Debug 270

8.3 TraceSource跟踪日誌 271

8.3.1 跟踪日誌模型三要素 271

8.3.2 預定義TraceListener 280

8.3.3 Trace 284

8.4 EventSource事件日誌 287

8.4.1 EventSource 287

8.4.2 EventListener 294

8.4.3 荷載對象序列化 298

8.4.4 活動跟踪 302

8.4.5 性能計數 306

8.5 DiagnosticSource診斷日誌 308

8.5.1 標準的觀察者模式 308

8.5.2 AnonymousObserver 310

8.5.3 強類型的事件訂閱 313

8.5.4 針對活動的跟踪 315

第9章 診斷日誌(下篇) 317

9.1 統一日誌編程模式 317

9.1.1 將日誌輸出到不同的渠道 317

9.1.2 日誌過濾 323

9.1.3 日誌範圍 329

9.1.4 LoggerMessage 331

9.2 日誌模型詳解 334

9.2.1 日誌模型三要素 334

9.2.2 ILogger 335

9.2.3 日誌範圍 339

9.2.4 ILoggerProvider 342

9.2.5 ILoggerFactory 342

9.2.6 LoggerMessage 347

9.3 依賴注入 348

9.3.1 服務註冊 349

9.3.2 設置日誌過濾規則 351

9.4 日誌輸出渠道 353

9.4.1 控制台 353

9.4.2 調試器 357

9.4.3 TraceSource日誌 359

9.4.4 EventSource日誌 362

第10章 承載系統 377

10.1 服務承載 377

10.1.1 承載長時間運行服務 377

10.1.2 依賴注入 379

10.1.3 配置選項 382

10.1.4 承載環境 385

10.1.5 日誌 388

10.2 承載模型 391

10.2.1 IHostedService 392

10.2.2 IHost 392

10.2.3 IHostBuilder 397

10.3 實現原理 402

10.3.1 服務宿主 403

10.3.2 針對配置系統的設置 406

10.3.3 針對依賴注入框架的設置 407

10.3.4 創建宿主 412

10.3.5 靜態類型Host 418

第11章 管道(上篇) 421

11.1 管道式的請求處理 421

11.1.1 兩個承載體系 421

11.1.2 請求處理管道 423

11.1.3 中間件​​ 424

11.1.4 定義強類型中間件 427

11.1.5 按照約定定義中間件 428

11.2 依賴注入 430

11.2.1 服務註冊 430

11.2.2 服務的消費 433

11.2.3 生命週期 437

11.2.4 集成第三方依賴注入框架 443

11.3 配置 444

11.3.1 初始化配置 444

11.3.2 以鍵值對形式讀取和修改配置 446

11.3.3 合併配置 448

11.3.4 註冊IConfigurationSource 449

11.4 承載環境 450

11.4.1 IWebHostEnvironment 450

11.4.2 通過配置定制承載環境 452

11.4.3 針對環境的編程 454

11.5 初始化 459

11.5.1 Startup 459

11.5.2 IHostingStartup 461

11.5.3 IStartupFilter 464

第12章 管道(中篇) 467

12.1 中間件委託鏈 467

12.1.1 HttpContext 467

12.1.2 中間件 468

12.1.3 中間件​​管道的構建 469

12.2 服務器 470

12.2.1 IServer 471

12.2.2 針對服務器的適配 471

12.2.3 HttpListenerServer 473

12.3 承載服務 476

12.3.1 WebHostedService 476

12.3.2 WebHostBuilder 476

12.3.3 應用構建 478

第13章 管道(下篇) 480

13.1 請求上下文 480

13.1.1 HttpContext 480

13.1.2 服務器適配 483

13.1.3 獲取上下文 487

13.1.4 上下文的創建與釋放 488

13.1.5 RequestServices 489

13.2 IServer IHttpApplication 491

13.2.1 IServer 491

13.2.2 HostingApplication 492

13.2.3 診斷日誌 495

13.3 中間件​​委託鏈 501

13.3.1 IApplicationBuilder 501

13.3.2 弱類型中間件 504

13.3.3 強類型中間件 507

13.3.4 註冊中間件 509

13.4 應用的承載 510

13.4.1 GenericWebHostServiceOptions 510

13.4.2 GenericWebHostService 512

13.4.3 GenericWebHostBuilder 515

13.4.4 ConfigureWebHostDefaults 530

附錄A 實例演示1 533

第14章 靜態文件 537

14.1 搭建文件服務器 537

14.1.1 發布物理文件 537

14.1.2 呈現目錄結構 540

14.1.3 顯示默認頁面 541

14.1.4 映射媒體類型 544

14.2 處理文件請求 545

14.2.1 條件請求 545

14.2.2 區間請求 549

14.2.3 StaticFileMiddleware 552

14.3 處理目錄請求 563

14.3.1 DirectoryBrowserMiddleware 563

14.3.2 DefaultFilesMiddleware 567

第15章 路由 571

15.1 路由映射 571

15.1.1 路由註冊 571

15.1.2 設置內聯約束 574

15.1.3 默認路由參數 576

15.1.4 特殊的路由參數 578

15.2 終結點的解析與執行 580

15.2.1 路由模式 580

15.2.2 終結點 586

15.2.3 中間件​​ 593

15.3 路由約束 599

15.3.1 預定義的IRouteConstraint 600

15.3.2 InlineConstraintResolver 602

15.3.3 自定義約束 603

第16章 異常處理 607

16.1 呈現錯誤信息 607

16.1.1 顯示開發者異常頁面 607

16.1.2 顯示定制異常頁面 610

16.1.3 針對響應狀態碼定制錯誤頁面 612

16.2 開發者異常頁面 615

16.2.1 IDeveloperPageExceptionFilter 616

16.2.2 顯示編譯異常信息 617

16.2.3 DeveloperExceptionPageMiddleware 622

16.3 異常處理器 624

16.3.1 ExceptionHandlerMiddleware 624

16.3.2 異常的傳遞與請求路徑的恢復 626

16.3.3 清除緩存 629

16.4 響應狀態碼頁面 631

16.4.1 StatusCodePagesMiddleware 632

16.4.2 阻止處理異常 632

16.4.3 註冊StatusCodePagesMiddleware中間件 635

第17章 緩存 642

17.1 將數據緩存起來 642

17.1.1 將數據緩存在內存中 642

17.1.2 對數據進行分佈式緩存 644

17.1.3 緩存整個HTTP響應 648

17.2 本地內存緩存 651

17.2.1 ICacheEntry 651

17.2.2 MemoryCacheEntryOptions 654

17.2.3 IMemoryCache 655

17.3 分佈式緩存 663

17.3.1 IDistributedCache 664

17.3.2 基於Redis的分佈式緩存 665

17.3.3 基於SQL Server的分佈式緩存 668

17.4 響應緩存 670

17.4.1 HTTP/1.1 Caching 670

17.4.2 ResponseCachingMiddleware中間件 673

17.4.3 註冊中間件 680

第18章 會話 681

18.1 利用會話保留“語境” 681

18.1.1 設置和提取會話狀態 681

18.1.2 查看存儲的會話狀態 683

18.1.3 查看Cookie 685

18.2 會話狀態的讀寫 686

18.2.1 ISession 686

18.2.2 DistributedSession 687

18.2.3 ISessionStore 688

18.3 SessionMiddleware中間件 689

18.3.1 SessionOptions 689

18.3.2 ISessionFeature 690

18.3.3 SessionMiddleware 691

第19章 認證 694

19.1 認證、登錄與註銷 694

19.1.1 認證票據 694

19.1.2 基於Cookie的認證 695

19.1.3 應用主頁 696

19.1.4 登錄與註銷 698

19.2 身份與用戶 700

19.2.1 IIdentity 700

19.2.2 IPrincipal 707

19.3 認證模型 710

19.3.1 認證票據 710

19.3.2 認證處理器 713

19.3.3 認證服務 720

19.3.4 服務註冊 724

19.3.5 AuthenticationMiddleware 727

19.4 Cookie認證方案 729

19.4.1 AuthenticationHandler 729

19.4.2 CookieAuthenticationHandler 735

19.4.3 註冊CookieAuthenticationHandler 744

第20章 授權 747

20.1 基於角色的權限控制 747

20.1.1 用戶與角色的映射 747

20.1.2 根據角色授權 750

20.1.3 預定義授權策略 754

20.2 基於“要求”的授權 756

20.2.1 IAuthorizationRequirement 756

20.2.2 預定義的IAuthorizationRequirement實現類型 758

20.2.3 授權檢驗 762

20.3 基於“策略”的授權 767

20.3.1 授權策略的構建 768

20.3.2 授權策略的註冊 769

20.3.3 授權檢驗 770

第21章 跨域資源共享 773

21.1 處理跨域資源 773

21.1.1 跨域調用API 773

21.1.2 資源提供者顯式授權 777

21.1.3 基於策略的資源授權 779

21.2 CORS規範 780

21.2.1 同源策略 781

21.2.2 針對資源的授權 781

21.2.3 獲取授權的方式 782

21.2.4 用戶憑證 785

21.3 CORS模型 785

21.3.1 CORS策略 786

21.3.2 解析並應用授權結果 788

21.3.3 CorsMiddleware中間件 790

第22章 本地化 793

22.1 提供本地化消息文本 793

22.1.1 提供對應語種的文本 793

22.1.2 自動設置語言文化 795

22.1.3 將本地化文本分而治之 798

22.1.4 直接注入IStringLocalizer 800

22.2 文本本地化 801

22.2.1 字符串本地化模型 801

22.2.2 基於JSON文件的本地化 804

22.2.3 基於資源文件的本地化 810

22.3 當前語言文化的設置 814

22.3.1 Culture與UICulture 814

22.3.2 IRequestCultureProvider 815

22.3.3 RequestLocalizationOptions 820

22.3.4 RequestLocalizationMiddleware 821

第23章 健康檢查 822

23.1 檢查應用的健康狀況 822

23.1.1 確定當前應用是否可用 822

23.1.2 定制健康檢查邏輯 823

23.1.3 改變響應狀態碼 825

23.1.4 細粒度的健康檢查 826

23.1.5 定制響應內容 828

23.1.6 過濾IHealthCheck對象 830

23.2 設計與實現 832

23.2.1 IHealthCheck 832

23.2.2 HealthCheckService 838

23.2.3 HealthCheckMiddleware 842

23.2.4 針對Entity Framework Core的健康檢查 846

23.3 發布健康報告 850

23.3.1 定期發布健康報告 850

23.3.2 IHealthCheckPublisher 851

23.3.3 HealthCheckPublisherHostedService 852

第24章 補遺 856

24.1 過濾主機名 856

24.1.1 實例演示 856

24.1.2 配置選項 857

24.1.3 HostFilteringMiddleware中間件 858

24.2 HTTP重寫 859

24.2.1 實例演示 859

24.2.2 HttpMethodOverrideMiddleware中間件 863

24.2.3 ForwardedHeadersMiddleware中間件 864

24.3 基礎路徑 872

24.3.1 實例演示 873

24.3.2 UsePathBaseMiddleware 874

24.4 路由 876

24.4.1 實例演示 876

24.4.2 MapMiddleware 878

24.4.3 MapWhenMiddleware 880

附錄B 實例演示2 882

您曾經瀏覽過的商品

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 1039
海外經銷商無庫存,到貨日平均30天至45天

暢銷榜

客服中心

收藏

會員專區