ASP.NET Core 技術內幕與項目實戰

ASP.NET Core 技術內幕與項目實戰

作者: 楊中科
出版社: 人民郵電
出版在: 2022-06-01
ISBN-13: 9787115586575
ISBN-10: 7115586578
總頁數: 396 頁





內容描述


本書講解.NET平臺下的異步編程、LINQ、依賴註入、配置系統、日誌等相關技術的原理與應用;深入且系統地介紹Entity Framework Core在項目中的應用場景,剖析Entity Framework Core的實現原理。本書在講解使用ASP.NET Core進行Web API開發的同時,結合作者的實踐經驗介紹REST、前後端分離等編程理念在ASP.NET Core中的實現。此外,本書還會介紹領域驅動設計(DDD)的理念,並且通過來自項目開發一線的案例講解DDD理念在項目中的技術落地方案。最後,本書通過真實的英語學習網站的項目案例講解ASP.NET Core技術在項目中的應用。總體而言,本書不僅介紹技術的使用,而且講解技術的底層原理;不僅介紹作者在項目開發一線的實踐經驗,而且講解綜合項目案例的具體實現。
本書可供具有一定編程基礎的開發人員學習ASP.NET Core的使用方法,也可供具有一定經驗的.NET開發人員瞭解.NET的內部原理和學習相關項目實戰經驗,還可作為大中專院校學生的ASP.NET Core教材。


目錄大綱


【章名目錄】
第 1章 .NET Core入門 1
第 2章 .NET Core重難點知識 14
第3章 .NET Core核心基礎組件 53
第4章 Entity Framework Core基礎 75
第5章 EF Core高級技術 116
第6章 ASP.NET Core Web API基礎 155
第7章 ASP.NET Core基礎組件 183
第8章 ASP.NET Core高級組件 243
第9章 DDD實戰 298
第 10章 項目案例:英語學習網站 359
 
 
【詳細目錄】
 
第 1章 .NET Core入門 1
1.1 .NET Core概述 1
1.1.1 .NET平臺的昨天 1
1.1.2 為什麽要跨平臺 2
1.1.3 .NET Core 是.NET Framework的升級版嗎 2
1.1.4 .NET Framework中哪些技術不被支持 4
1.1.5 .NET Standard是什麽 6
1.1.6 項目應該使用.NET Core開發嗎 10
1.2 .NET Core 開發環境的搭建 10
1.2.1 用什麽開發工具開發.NET Core 11
1.2.2 .NET Core項目結構的創新 11
1.3 本章小結 13
 
第 2章 .NET Core重難點知識 14
2.1 C#的新語法 14
2.1.1 頂級語句 14
2.1.2 全局using指令 15
2.1.3 using聲明 16
2.1.4 文件範圍的命名空間聲明 17
2.1.5 可為空的引用類型 18
2.1.6 記錄類型 20
2.2 異步編程 23
2.2.1 為什麽要用異步編程 24
2.2.2 輕松上手await、async 25
2.2.3 如何編寫異步方法 27
2.2.4 async、await原理揭秘 28
2.2.5 async背後的線程切換 33
2.2.6 異步方法不等於多線程 34
2.2.7 為什麽有的異步方法沒有async 36
2.2.8 異步編程的幾個重要問題 39
2.3 LINQ 40
2.3.1 Lambda表達式 41
2.3.2 常用集合類的擴展方法 43
2.3.3 LINQ的另一種寫法 51
2.4 本章小結 52
 
第3章 .NET Core核心基礎組件 53
3.1 依賴註入 53
3.1.1 什麽是控制反轉、服務定位器和依賴註入 53
3.1.2 .NET Core依賴註入的基本使用 55
3.1.3 依賴註入魅力所在 57
3.2 配置系統 60
3.2.1 配置系統的基本使用 60
3.2.2 使用選項方式讀取配置 61
3.2.3 從命令行讀取配置 65
3.2.4 從環境變量讀取配置 66
3.2.5 其他配置提供程序 66
3.2.6 案例:開發自己的配置提供程序 67
3.2.7 多配置源問題 69
3.3 日誌 70
3.3.1 .NET Core日誌基本使用 71
3.3.2 文件日誌提供程序NLog 72
3.3.3 集中式日誌 73
3.4 本章小結 74
 
第4章 Entity Framework Core基礎 75
4.1 EF Core概述 75
4.1.1 什麽是ORM 75
4.1.2 EF Core性能怎麽樣 76
4.2 EF Core入門 76
4.2.1 該選擇什麽數據庫 76
4.2.2 EF Core環境搭建 77
4.2.3 插入數據 81
4.2.4 查詢數據 82
4.2.5 修改和刪除數據 83
4.3 EF Core的實體類配置 84
4.3.1 約定大於配置 84
4.3.2 Data Annotation 85
4.3.3 Fluent API 85
4.3.4 Fluent API基本配置 86
4.3.5 Fluent API究竟流暢在哪裡 88
4.3.6 主鍵類型的選擇並不簡單 89
4.4 數據庫遷移 92
4.4.1 數據庫遷移原理 92
4.4.2 其他數據庫遷移命令 95
4.4.3 反向工程(慎用) 95
4.5 查看EF Core生成的SQL語句 96
4.5.1 使用簡單日誌查看SQL語句 96
4.5.2 探秘EF Core生成SQL語句的不同 97
4.6 關系配置 100
4.6.1 一對多 100
4.6.2 關聯數據的獲取 103
4.6.3 實體類對象的關聯追蹤 104
4.6.4 關系的外鍵屬性的設置 105
4.6.5 單向導航屬性 106
4.6.6 關系配置在哪個實體類中 108
4.6.7 一對一 109
4.6.8 多對多 111
4.6.9 基於關系的復雜查詢 114
4.7 本章小結 115
 
第5章 EF Core高級技術 116
5.1 EF Core原理揭秘 116
5.1.1 EF Core有哪些做不到的事情 116
5.1.2 既生IEnumerable,何生IQueryable 117
5.1.3 IQueryable的延遲執行 119
5.1.4 IQueryable的復用 122
5.1.5 EF Core分頁查詢 122
5.1.6 IQueryable的底層運行 124
5.1.7 EF Core中的異步方法 126
5.1.8 如何執行原生SQL語句 127
5.1.9 怎麽知道實體類變化了 129
5.2 EF Core的性能優化利器 131
5.2.1 EF Core優化之AsNoTracking 131
5.2.2 實體類狀態跟蹤的妙用 132
5.2.3 Find和FindAsync方法 134
5.2.4 EF Core中高效地刪除、更新數據 134
5.2.5 全局查詢篩選器 135
5.2.6 悲觀並發控制 136
5.2.7 樂觀並發控制 138
5.3 表達式樹 142
5.3.1 什麽是表達式樹 142
5.3.2 Expression和Func的區別 142
5.3.3 可視化查看表達式樹 143
5.3.4 通過代碼查看表達式樹 145
5.3.5 通過代碼動態構建表達式樹 146
5.3.6 讓動態構建表達式樹更簡單 148
5.3.7 讓構建“動態”起來 149
5.3.8 不用Emit實現Select的動態化 152
5.3.9 避免動態構建表達式樹 153
5.4 本章小結 154
 
第6章 ASP.NET Core Web API基礎 155
6.1 ASP.NET Core MVC項目 155
6.1.1 ASP.NET Core MVC項目的搭建 155
6.1.2 編寫第 一個MVC程序 157
6.1.3 .NET Core的新工具:熱重載 158
6.2 使用ASP.NET Core開發Web API 159
6.2.1 Web API項目的搭建 159
6.2.2 Post、Put等操作方法 161
6.3 Restful:想說愛你不容易 163
6.3.1 什麽是Restful 163
6.3.2 Restful的優缺點 165
6.3.3 Restful中如何傳遞參數 167
6.3.4 返回錯誤碼:200派與4xx派的“對決” 167
6.3.5 Restful實現指南 170
6.4 ASP.NET Core Web API各種技術及選擇 171
6.4.1 控制器父類用哪個 171
6.4.2 操作方法的異步、返回值、狀態碼 171
6.4.3 操作方法的參數從哪裡來 173
6.5 ASP.NET Core Web API案例 176
6.5.1 開發Web API 176
6.5.2 什麽是前後端分離 177
6.5.3 搭建前端開發環境 178
6.5.4 如何實現前後端分離開發 179
6.6 本章小結 182
 
第7章 ASP.NET Core基礎組件 183
7.1 ASP.NET Core中的依賴註入 183
7.1.1 對象註入的代碼寫到哪裡 183
7.1.2 低使用頻率服務的另類註入方式 185
7.1.3 案例:開發模塊化的服務註冊框架 185
7.2 配置系統與ASP.NET Core的集成 188
7.2.1 默認添加的配置提供者 188
7.2.2 ASP.NET Core的多環境設置 188
7.2.3 用“用戶機密”來避免機密信息的泄露 190
7.2.4 案例:配置系統綜合 191
7.3 EF Core與ASP.NET Core的集成 193
7.3.1 分層項目中EF Core的用法 193
7.3.2 使用“上下文池”時要謹慎 197
7.3.3 案例:批量註冊上下文 197
7.4 性能優化“萬金油”:緩存 198
7.4.1 什麽是緩存 198
7.4.2 客戶端響應緩存 200
7.4.3 服務器端響應緩存 202
7.4.4 內存緩存 204
7.4.5 緩存穿透問題的規避 211
7.4.6 緩存雪崩問題的規避 212
7.4.7 緩存數據混亂的規避 213
7.4.8 案例:封裝內存緩存操作的幫助類 213
7.4.9 分佈式緩存 215
7.4.10 案例:封裝分佈式緩存操作 的幫助類 219
7.4.11 緩存方式的選擇 221
7.5 篩選器 221
7.5.1 異常篩選器 222
7.5.2 操作篩選器基礎 224
7.5.3 案例:自動啟用事務的操作篩選器 226
7.5.4 案例:開發請求限流器 228
7.6 中間件 229
7.6.1 什麽是中間件 229
7.6.2 中間件的3個概念 230
7.6.3 簡單演示中間件 231
7.6.4 案例:自己動手模仿Web API框架 235
7.6.5 調整內置中間件的順序,結果大不同 237
7.6.6 案例:Markdown轉換器中間件 238
7.6.7 篩選器與中間件的區別 241
7.7 本章小結 242
 
第8章 ASP.NET Core高級組件 243
8.1 Authentication與Authorization 243
8.1.1 標識框架 244
8.1.2 實現密碼的重置 250
8.1.3 代替Session(會話)的JWT 251
8.1.4 JWT的基本使用 253
8.1.5 ASP.NET Core對於JWT的封裝 257
8.1.6 [Authorize]的註意事項 259
8.1.7 讓Swagger中調試帶驗證的請求更簡單 260
8.1.8 解決JWT無法提前撤回的難題 261
8.1.9 總結 265
8.2 利用托管服務執行後台代碼 265
8.2.1 托管服務的基本使用 265
8.2.2 托管服務中使用依賴註入的陷阱 267
8.2.3 案例:數據的定時導出 267
8.3 請求數據的校驗 269
8.3.1 .NET Core內置數據校驗的不足 269
8.3.2 FluentValidation的基本使用 270
8.3.3 FluentValidation中註入服務 271
8.4 SignalR服務器端消息推送 272
8.4.1 SignalR基本使用 273
8.4.2 協議協商 276
8.4.3 SignalR分佈式部署 279
8.4.4 SignalR身份認證 280
8.4.5 針對部分客戶端的消息推送 283
8.4.6 在外部向集線器推送消息 286
8.4.7 案例:導入英漢詞典到數據庫並顯示進度 288
8.4.8 SignalR實踐指南 291
8.5 ASP.NET Core系統的部署 291
8.5.1 ASP.NET Core網站的發布 292
8.5.2 網站部署需要註意的幾個問題 293
8.5.3 如何構建一個安全的系統 296
8.6 本章小結 297
 
第9章 DDD實戰 298
9.1 架構設計的術與道 298
9.1.1 架構設計之怪現狀 298
9.1.2 架構是進化而來的 299
9.2 DDD的基本概念 300
9.2.1 什麽是微服務 300
9.2.2 微服務架構的誤區 301
9.2.3 DDD為什麽難學 302
9.2.4 領域與領域模型 304
9.2.5 通用語言與界限上下文 305
9.2.6 實體類與值對象 306
9.2.7 聚合與聚合根 307
9.2.8 領域服務與應用服務 308
9.2.9 領域事件與集成事件 308
9.3 DDD的技術落地 311
9.3.1 貧血模型與充血模型 311
9.3.2 EF Core對實體類屬性操作的秘密 315
9.3.3 EF Core中實現充血模型 317
9.3.4 EF Core中實現值對象 321
9.3.5 案例:構建表達式樹,簡化值對象的比較 325
9.3.6 千萬不要面向數據庫建模 326
9.3.7 聚合在.NET中的實現 326
9.3.8 用MediatR實現領域事件 327
9.3.9 EF Core中發布領域事件的合適時機 329
9.3.10 RabbitMQ的基本使用 335
9.3.11 案例:簡化集成事件的框架 338
9.3.12 案例:Zack.EventBus源代碼 講解 342
9.3.13 整潔架構(洋蔥架構) 343
9.4 DDD案例實戰:用戶管理及登錄 344
9.4.1 實現整潔架構項目分層 344
9.4.2 領域模型的實現 346
9.4.3 領域服務的實現 349
9.4.4 基礎設施的實現 352
9.4.5 工作單元的實現 354
9.4.6 應用服務層的實現 356
9.5 本章小結 358
 
第 10章 項目案例:英語學習網站 359
10.1 需求說明及項目演示 359
10.1.1 網站需求說明 359
10.1.2 網站結構說明 360
10.1.3 項目結構說明 361
10.1.4 項目運行環境搭建 362
10.1.5 主要功能演示 364
10.2 文件服務的開發 367
10.2.1 開發文件服務的領域層 367
10.2.2 開發文件服務的基礎 設施層 369
10.3 認證服務的開發 371
10.3.1 開發認證服務的領域層 371
10.3.2 開發認證服務的基礎 設施層 373
10.3.3 開發認證服務的應用服務層 373
10.4 英語聽力服務的開發 375
10.4.1 開發英語聽力服務的領域層 375
10.4.2 開發英語聽力服務的後台 應用服務層 381
10.4.3 開發英語聽力服務的前臺 應用服務層 385
10.5 轉碼服務的開發 387
10.5.1 開發轉碼服務的領域層 387
10.5.2 開發轉碼服務的基礎設施層 389
10.5.3 開發轉碼服務的應用服務層 390
10.6 搜索服務的實現 392
10.7 性能優化的原則 394
10.8 項目總結 395
10.9 本章小結 396


作者介紹


杨中科:
.NET方向微软MVP,拥有约30万粉丝以及近18年的IT行业软件开发工作经验,擅长软件架构设计与底层框架研究,具有应用.NET、Java、Python、C等的丰富经验,编写的技术文章和录制的视频教程深入浅出、通俗易懂、备受好评;同时,出版了多部专业的软件开发技术图书。




相關書籍

Java Programming, 9/e (IE-Paperback)

作者 Joyce Farrell

2022-06-01

Advanced Computer Architecture: Parallelism, Scalability, Programmability (Paperback)

作者 Kai Hwang

2022-06-01

Java 2實用教程(第6版)實驗指導與習題解答

作者 耿祥義 張躍平

2022-06-01