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

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

《ASP.NET Core 3框架揭秘》不拘泥於某種Web編程模型,而是直接從HTTP請求處理流程的視角對ASP.NET Core底層框架進行剖析,讓你真正了解最本質和核心的原理。

基本介紹

  • 書名ASP.NET Core 3 框架揭秘(上下冊)
  • 作者:蔣金楠
  • 類別:計算機
  • 出版社:電子工業出版社
  • 出版時間:2020年5月
  • 頁數:916 頁
  • 定價:199 元
  • 開本:16 開
  • ISBN:9787121384622
內容簡介,圖書目錄,

內容簡介

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

圖書目錄

第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<TContainerBuilder> 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<TOptions> 226
7.2.2 IOptionsFactory<TOptions> 228
7.2.3 IOptionsMonitorCache<TOptions> 237
7.2.4 IOptionsMonitor<TOptions> 238
7.3 依賴注入 240
7.3.1 服務註冊 240
7.3.2 IOptions<TOptions>與IOptionsSnapshot<TOptions> 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<T> 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<TOptions> 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<T> 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

相關詞條

熱門詞條

聯絡我們