作為《ASP.NET Core 3框架揭秘》的升級版,《ASP.NET Core 6框架揭秘》提供了很多新的章節,同時對現有的內容進行大量的修改。雖然本書旨在對ASP.NET Core框架的架構設計和實現原理進行剖析,但是其中提供的258個實例演示卻可以作為入門材料,這個系列會將這些演示實例單獨提取出來並進行匯總。對於想學習ASP.NET Core的同學,如果你覺得本書過於深入,讀起來稍顯吃力,可以看看。
第01章 編程體驗
[101]利用命令行創建.NET程序(源代碼)
[102]采用Minimal API構建ASP.NET Core程序(源代碼)
[103]一步創建WebApplication對象(源代碼)
[104]使用原始形態的中間件(源代碼)
[105]使用中間件委托變體(1)(源代碼)
[106]使用中間件委托變體(2)(源代碼)
[107]定義強類型中間件類型(源代碼)
[108]定義基於約定的中間件類型(構造函數注入)(源代碼)
[109]定義基於約定的中間件類型(方法注入)(源代碼)
[110]配置的應用(源代碼)
[111]Options的應用(源代碼)
[112]日志的應用(源代碼)
[113]路由的應用(源代碼)
[114]開發MVC API(源代碼)
[115]開發MVC APP(源代碼)
[116]開發gRPC API(源代碼)
[117]Dapr-服務調用 (源代碼)
[118]Dapr-狀態管理(源代碼)
[119]Dapr-發布訂閱(源代碼)
[120]Dapr-Actor模型(源代碼)
第02章 依賴注入(上篇)
[201]模擬容器Cat-普通服務的注冊和提取(源代碼)
[202]模擬容器Cat-針對泛型服務類型的支持(源代碼)
[203]模擬容器Cat-為同一類型提供多個服務注冊(源代碼)
[204]模擬容器Cat-服務實例的生命周期(源代碼)
第03章 依賴注入(下篇)
[301]普通服務的注冊和提取(源代碼)
[302]針對泛型服務類型的支持(源代碼)
[303]為同一類型提供多個服務注冊(源代碼)
[304]服務實例的生命周期(源代碼)
[305]服務實例的釋放回收(源代碼)
[306]服務范圍的驗證(源代碼)
[307]服務注冊有效性的驗證(源代碼)
[308]構造函數的選擇(成功)(源代碼)
[309]構造函數的選擇(失敗)(源代碼)
[310]IDisposable和IAsyncDisposable接口的差異(錯誤編程)(源代碼)
[311]IDisposable和IAsyncDisposable接口的差異(正確編程)(源代碼)
[312]利用ActivatorUtilities提供服務實例(源代碼)
[313]ActivatorUtilities針對構造函數的“評分”(源代碼)
[314]ActivatorUtilities針對構造函數的選擇(源代碼)
[315]ActivatorUtilitiesConstructorAttribute特性的應用(源代碼)
[316]與第三方依賴注入框架Cat的整合(源代碼)
第04章 文件系統
[S401] 輸出文件系統目錄結構(源代碼)
[S402]讀取物理文件內容(源代碼)
[S403]讀取內嵌文件內容(源代碼)
[S404]監控文件的變更(源代碼)
第05章 配置選項(上篇)
[501]以鍵值對形式讀取配置(源代碼)
[502]讀取結構化配置(源代碼)
[503]將結構化配置綁定為對象(源代碼)
[504]將配置定義在JSON文件中(源代碼)
[505]根據環境動態加載配置文件(源代碼)
[506]配置內容的實時同步(源代碼)
[507]綁定配置項的值(源代碼)
[508]類型轉換器在配置綁定中的應用(源代碼)
[509]復合對象的配置綁定(源代碼)
[510]集合的配置綁定(源代碼)
[511]集合和數組的配置綁定的差異(源代碼)
[512]字典的配置綁定(源代碼)
第06章 配置選項(下篇)
[601]將配置綁定為Options對象(源代碼)
[602]具名Options的注冊和提取(源代碼)
[603]Options與配置源的實時同步(匿名Options)(源代碼)
[604]Options與配置源的實時同步(具名Options)(源代碼)
[605]用代碼方式初始化Options(匿名Options)(源代碼)
[606]用代碼方式初始化Options(具名Options)(源代碼)
[607]針對依賴服務的Options設置(源代碼)
[608]驗證Options的有效性(源代碼)
第07章 診斷日志(上篇)
[S701]TraceSource跟蹤日志(源代碼)
[S702]基於等級的日志過濾(源代碼)
[S703]自定義面向控制台的TraceListener(源代碼)
[S704]EventSource事件日志(源代碼)
[S705]自定義EventListener監聽事件(源代碼)
[S706]DiagnosticListener診斷日志(源代碼)
[S707]為DiagnosticListener注冊強類型訂閱者(源代碼)
[S708]DefaultTraceListener針對文件的日志輸出(源代碼)
[S709]利用DelimitedListTraceListener將日志輸出到CSV文件(源代碼)
[S710]更加完整的EventListener類型定義(源代碼)
[S711]利用EventSource的事件日志輸出調用鏈(源代碼)
[S712]AnonymousObserver<T>的應用(源代碼)
[S713]強類型診斷事件訂閱(源代碼)
第08章 診斷日志(中篇)
[S801]將日志輸出到控制台和調試窗口(源代碼)
[S802]利用ILoggerFactory工廠創建Ilogger<T>對象(源代碼)
[S803]注入Ilogger<T>對象(源代碼)
[S804]TraceSource和EventSource的日志輸出(源代碼)
[S805]針對等級的日志過濾(源代碼)
[S806]針對等級和類別的日志過濾(源代碼)
[S807]針對等級、類別和ILoggerProvider類型的日志過濾(源代碼)
[S808]利用配置定義日志過濾規則(源代碼)
[S809]利用日志范圍輸出調用鏈(源代碼)
[S810]LoggerMessage的應用(源代碼)
[S812]基於Activity的日志范圍(源代碼)
第09章 診斷日志(下篇)
[S901]SimpleConsoleFormatter格式化器(源代碼)
[S902]SystemdConsoleFormatter格式化器(源代碼)
[S903]JsonConsoleFormatter格式化器(源代碼)
[S904]改變ConsoleLogger的標准輸出和錯誤輸出(源代碼)
[S905]自定義控制台日志的格式化器(源代碼)
第10章 對象池
[S1001]對象池基本使用方式
[S1002]利用注入的ObjectPoolProvider提供對象池
[S1003]自定義對象池化策略
[S1004]對象池的容量與並發的關系(容量不小於並發量)
[S1005]對象池的容量與並發的關系(容量小於並發量)
[S1006]池化對象的釋放
[S1007]池化集合對象
[S1008]池化StringBuilder
[S1009]ArrayPool<T>的應用
[S1010]MemoryPool<T>的應用
第11章 緩存
[S1101]基於內存的本地緩存(源代碼)
[S1102]基於Redis的分布式緩存(源代碼)
[S1103]基於SQL Server的分布式緩存(源代碼)
第12章 HTTP調用
[S1201]頻繁創建HttpClient對象調用API(源代碼)
[S1202]以單例方式使用HttpClient(源代碼)
[S1203]利用IHttpClientFactory工廠創建HttpClient對象(源代碼)
[S1204]直接注入HttpClient對象(源代碼)
[S1205]定制HttpClient對象(源代碼)
[S1206]強類型客戶端(源代碼)
[S1207]基於Polly的失敗重試(源代碼)
[S1208]HttpClient的默認管道結構(源代碼)
[S1209]定制HttpClient管道(源代碼)
[S1210]針對HTTP調用的日志輸出(>=Information)(源代碼)
[S1211]針對HTTP調用的日志輸出(>=Trace)(源代碼)
第13章 數據保護
[S1301]數據的加解密(源代碼)
[S1302]Purpose字符串一致性(源代碼)
[S1303]設置加密內容的有效期(源代碼)
[S1304]撤銷加密密鑰(單個密鑰)(源代碼)
[S1305]撤銷加密密鑰(所有密鑰)(源代碼)
[S1306]瞬時加解密(源代碼)
[S1307]密鑰哈希(源代碼)
[S1308]基於本地文件系統的密鑰管理(密鑰創建)(源代碼)
[S1309]基於本地文件系統的密鑰管理(密鑰撤銷)(源代碼)
第14章 服務承載
[S1401]利用承載服務收集性能指標(源代碼)
[S1402]依賴注入的應用(源代碼)
[S1403]配置選項的應用(源代碼)
[S1404]提供針對環境的配置(源代碼)
[S1405]日志的應用(源代碼)
[S1406]在配置中定義日志過濾規則(源代碼)
[S1407]利用IHostApplicationLifetime對象關閉應用(源代碼)
[S1408]與第三方依賴注入框架的整合(源代碼)
[S1409]利用配置初始化承載環境(源代碼)
第15章 應用承載(上篇)
[S1501]基於IWebHost/IWebHostBuilder的應用承載方式(源代碼)
[S1502]將初始化設置定義在Startup類型中(源代碼)
[S1503]基於IHost/IHostBuilder的應用承載方式(源代碼)
[S1504]Minimal API(源代碼)
第16章 應用承載(中篇)
[S1601]一個“迷你版”的ASP.NET Core框架(源代碼)
第17章 應用承載(下篇)
[S1701]ASP.NET針對請求的診斷日志(源代碼)
[S1702]收集DiagnosticSource輸出的日志(源代碼)
[S1703]收集EventSource輸出的日志(源代碼)
[S1704]模擬Minimal API的實現(源代碼)
第18章 服務器
[S1801]自定義服務器(源代碼)
[S1802]兩種終結點的選擇(源代碼)
[S1803]直接創建連接接收請求和回復響應(源代碼)
[S1804]模擬KestrelServer的實現(源代碼)
[S1805]使用IIS部署ASP.NET Core應用(In-Process模式)(源代碼)
[S1806]使用IIS部署ASP.NET Core應用(Out-Of-Process模式)(源代碼)
第19章 靜態文件
[1901]以Web形式發布文件(圖片)
[1902]以Web形式發布文件(PDF)
[1903]顯式文件目錄結構
[1904]顯示目錄的默認頁面
[1905]定制目錄的默認頁面
[1906]設置默認的媒體類型
[1907]映射文件擴展名的媒體類型
第20章 路由
[S2001]注冊路由終結點
[S2002]以內聯方式設置路由參數的約束
[S2003]定義可缺省的路由參數
[S2004]為路由參數指定默認值
[S2005]一個路徑分段定義多個路由參數
[S2006]一個路由參數跨越多個路徑分段
[S2007]主機名綁定
[S2008]將終結點處理定義為任意類型的委托
[S2009]IResult 的應用
第21章 異常處理
[2101]開發者異常頁面的呈現
[2102]定制異常頁面的呈現
[2103]利用注冊的中間件處理異常
[2104]針對異常頁面的重定向
[2105]基於響應狀態碼錯誤頁面的呈現(設置響應內容模板)
[2106]基於響應狀態碼錯誤頁面的呈現(提供異常處理器)
[2107]基於響應狀態碼錯誤頁面的呈現(利用中間件創建異常處理器)
[S2108]利用IDeveloperPageExceptionFilter定制開發者異常頁面
[S2109]針對編譯異常的處理(默認)
[S2110]針對編譯異常的處理(定義源代碼輸出行數)
[S2111]利用IExceptionHandlerFeature特性提供錯誤信息
[S2112]清除緩存響應報頭
[S2113]針對404響應的處理
[S2114]利用I[Statu[SCodePage[SFeature特性忽略異常處理
第22章 響應緩存
[S2201]基於路徑的響應緩存
[S2202]基於指定的查詢字符串緩存響應
[S2203]基於指定的請求報頭緩存響應
[S2204]緩存屏蔽
第23章 會話
[S2301]設置和提取會話狀態
[S2302]查看存儲的會話狀態
[S2303] 查看Cookie
第24章 HTTPS策略
[S2401]構建HTTPS站點
[S2402]HTTPS終結點重定向
[S2403]注冊HstsMiddleware中間件
[S2404]設置HSTS配置選項
第25章 重定向
[S2501]客戶端重定向
[S2502]服務端重定向
[S2503]采用IIS重寫規則實現重定向
[S2504]采用Apache重寫規則實現重定向
[S2505]基於HTTPS終結點的重定向
第26章 限流
[S2601]設置並發和等待請求閾值
[S2602]基於隊列的限流策略
[S2603]基於棧的限流策略
[S2604]處理被拒絕的請求
第27章 認證
[S2701]使用最簡潔的代碼實現登錄、認證和注銷
第28章 授權
[S2801]基於“要求”的授權
[S2802]基於“策略”的授權
[S2803]將“角色”綁定到路由終結點
[S2804]將“授權策略”綁定到路由終結點
第29章 跨域資源共享
[S2901]跨域調用API
[S2902]顯式指定授權Origin列表
[S2903]手工檢驗指定Origin是否的權限
[S2904]基於策略的資源授權(匿名策略)
[S2905]基於策略的資源授權(具名策略)
[S2906]將CORS規則應用到路由終結點上(代碼編程形式)
[S2907]將CORS規則應用到路由終結點上(特性標注形式)
第30章 健康檢查
[S3001]確定應用可用狀態
[S3002]定制健康檢查邏輯
[S3003]改變健康狀態對應的響應狀態碼
[S3004]提供細粒度的健康檢查
[S3005]定制健康報告響應內容
[S3006]IHealthCheck對象的過濾
[S3007]定期發布健康報告