C# 11和.NET 7入門與跨平臺開發(第7版)
[美] 馬克·J. 普萊斯(Mark J. Price) 著 葉偉民 譯
- 出版商: 清華大學
- 出版日期: 2024-02-01
- 定價: $948
- 售價: 8.5 折 $806
- 語言: 簡體中文
- ISBN: 7302653283
- ISBN-13: 9787302653288
-
相關分類:
.NET、C#
- 此書翻譯自: C# 11 and .NET 7 – Modern Cross-Platform Development Fundamentals: Start building websites and services with ASP.NET Core 7, Blazor, and EF Core 7 (Paperback)
立即出貨
買這商品的人也買了...
-
$580$452 -
$354$336 -
$720$562 -
$768$730 -
$834$792 -
$620$490 -
$620$490 -
$620$490 -
$400$360 -
$1,034C# 高級編程, 12/e
-
$1,134$1,077 -
$653Azure、DevOps 和微服務軟件架構實戰, 2/e
-
$980$774 -
$560$420 -
$599$569 -
$800$632 -
$790$624 -
$880$695 -
$594$564 -
$850$663 -
$790$624 -
$880$695 -
$1,188$1,129 -
$599$569 -
$179$161
相關主題
商品描述
《C# 11和.NET 7入門與跨平臺開發(第7版)》將為你學習C# 11和.NET 7奠定堅實的基礎,使你能夠自信地構建應用程序和服務。學習完本書,你將能夠創建豐富的Web應用,並能牢牢掌握面向對象編程技術,進而能在此基礎上進行項目開發。 ● 使用Blazor、Razor Pages、MVC模式和 ASP.NET Core的其他特性構建豐富的Web應用 ● 利用面向對象編程構建自己的類型 ● 編寫、測試和調試函數 ● 使用LINQ查詢和操作數據 ● 使用Entity Framework Core模型在應用程序中集成和更新數據庫 ● 使用**的技術,包括Web API和最小API,構建和消費強大的服務
目錄大綱
第1 章 C#與.NET 入門 1
1.1 設置開發環境 2
1.1.1 選擇適合學習的工具和應用程序類型 3
1.1.2 跨平臺部署 5
1.1.3 下載並安裝Visual Studio 2022 for Windows 5
1.1.4 下載並安裝Visual Studio Code 6
1.2 理解.NET 8
1.2.1 理解.NET Framework 8
1.2.2 理解Mono、Xamarin 和Unity項目 9
1.2.3 理解.NET Core 9
1.2.4 瞭解走向.NET 的過程 9
1.2.5 瞭解.NET 支持 10
1.2.6 現代.NET 的區別 12
1.2.7 瞭解.NET Standard 13
1.2.8 本書使用的.NET 平臺和工具 14
1.2.9 Apps and Services with NET 7 中涵蓋的主題 15
1.2.10 理解中間語言 15
1.2.11 比較.NET 技術 15
1.3 使用Visual Studio 2022 構建控制台應用程序 16
1.3.1 使用Visual Studio 2022 管理多個項目 16
1.3.2 使用Visual Studio 2022編寫代碼 16
1.3.3 使用Visual Studio 編譯和運行代碼 17
1.3.4 理解頂級程序 19
1.3.5 使用Visual Studio 2022 添加第二個項目 21
1.4 使用Visual Studio Code 構建控制台應用程序 22
1.4.1 使用Visual Studio Code 管理多個項目 22
1.4.2 使用Visual Studio Code編寫代碼 22
1.4.3 使用dotnet CLI 編譯和運行代碼 25
1.4.4 使用Visual Studio Code 添加第二個項目 26
1.5 使用.NET Interactive Notebook探索代碼 27
1.6 檢查項目的文件夾和文件 28
1.6.1 瞭解常見的文件夾和文件 28
1.6.2 理解GitHub 中的解決方案代碼 28
1.7 充分利用本書的GitHub 存儲庫 29
1.7.1 對本書提出問題 29
1.7.2 反饋 29
1.7.3 從GitHub 存儲庫下載解決方案代碼 30
1.7.4 在Visual Studio Code 和命令行中使用Git 30
1.8 尋求幫助 31
1.8.1 閱讀微軟文檔 31
1.8.2 獲取關於dotnet 工具的幫助 31
1.8.3 獲取類型及其成員的定義 32
1.8.4 在Stack Overflow 上尋找答案 34
1.8.5 使用谷歌搜索答案 34
1.8.6 訂閱官方的.NET 博客 35
1.8.7 觀看Scott Hanselman 的視頻 35
1.8.8 本書的配套圖書 35
1.9 實踐和探索 35
1.9.1 練習1.1:測試你掌握的知識 36
1.9.2 練習1.2:使用瀏覽器在任何地方練習C# 36
1.9.3 練習1.3:探索主題 36
1.9.4 練習1.4:探索現代.NET 的主題 37
1.10 本章小結 37
第2 章 C#編程基礎 38
2.1 介紹C# 38
2.1.1 理解語言版本和特性 38
2.1.2 瞭解C#標準 42
2.1.3 瞭解C#編譯器版本 43
2.2 理解C#語法和詞匯 45
2.2.1 顯示編譯器版本 45
2.2.2 瞭解C#語法 46
2.2.3 語句 46
2.2.4 註釋 47
2.2.5 塊 47
2.2.6 語句和塊的示例 48
2.2.7 瞭解C#詞匯表 48
2.2.8 將編程語言與人類語言進行比較 48
2.2.9 改變C#語法的配色方案 49
2.2.10 如何編寫正確的代碼 49
2.2.11 導入名稱空間 50
2.2.12 動詞表示方法 53
2.2.13 名詞表示類型、變量、字段和屬性 54
2.2.14 揭示C#詞匯表的範圍 54
2.3 使用變量 56
2.3.1 命名和賦值 57
2.3.2 字面值 57
2.3.3 存儲文本 57
2.3.4 存儲數字 60
2.3.5 存儲實數 61
2.3.6 存儲布爾值 64
2.3.7 存儲任何類型的對象 64
2.3.8 動態存儲類型 65
2.3.9 聲明局部變量 66
2.3.10 獲取和設置類型的默認值 68
2.4 深入研究控制台應用程序 69
2.4.1 向用戶顯示輸出 69
2.4.2 從用戶那裡獲取文本輸入 72
2.4.3 簡化控制台的使用 73
2.4.4 獲取用戶的重要輸入 74
2.4.5 向控制台應用程序傳遞參數 74
2.4.6 使用參數設置選項 76
2.4.7 處理不支持API 的平臺 78
2.5 理解async 和await 79
2.6 實踐和探索 80
2.6.1 練習2.1:測試你掌握的知識 81
2.6.2 練習2.2:測試你對數字類型的瞭解 81
2.6.3 練習2.3:練習數字大小和範圍 81
2.6.4 練習2.4:探索主題 82
2.7 本章小結 82
第3 章 控製程序流程、轉換類型和處理異常 83
3.1 操作變量 83
3.1.1 一元算術運算符 84
3.1.2 二元算術運算符 85
3.1.3 賦值運算符 86
3.1.4 邏輯運算符 86
3.1.5 條件邏輯運算符 87
3.1.6 按位和二元移位運算符 88
3.1.7 其他運算符 90
3.2 理解選擇語句 90
3.2.1 使用if 語句進行分支 90
3.2.2 模式匹配與if 語句 91
3.2.3 使用switch 語句進行分支 92
3.2.4 模式匹配與switch 語句 94
3.2.5 使用switch 表達式簡化
switch 語句 95
3.3 理解迭代語句 96
3.3.1 while 循環語句 96
3.3.2 do 循環語句 97
3.3.3 for 循環語句 97
3.3.4 foreach 循環語句 98
3.3.5 在數組中存儲多個值 99
3.4 類型轉換 105
3.4.1 隱式和顯式地轉換數字 105
3.4.2 使用System.Convert 類型進行轉換 107
3.4.3 圓整數字 107
3.4.4 控制圓整規則 108
3.4.5 從任何類型轉換為字符串 108
3.4.6 從二進制對象轉換為字符串 109
3.4.7 將字符串轉換為數字或日期和時間 110
3.5 處理異常 111
3.6 檢查溢出 115
3.6.1 使用checked 語句拋出溢出異常 115
3.6.2 使用unchecked 語句禁用編譯時溢出檢查 116
3.7 實踐和探索 117
3.7.1 練習3.1:測試你掌握的知識 118
3.7.2 練習3.2:探索循環和溢出 118
3.7.3 練習3.3:實踐循環和運算符 118
3.7.4 練習3.4:實踐異常處理 119
3.7.5 練習3.5:測試你對運算符的認識程度 119
3.7.6 練習3.6:探索主題 119
3.8 本章小結 120
第4 章 編寫、調試和測試函數 121
4.1 編寫函數 121
4.1.1 理解頂級程序和函數 121
4.1.2 乘法表示例 123
4.1.3 簡述實參與形參 125
4.1.4 編寫帶返回值的函數 126
4.1.5 將數字從序數轉換為基數 128
4.1.6 用遞歸計算階乘 129
4.1.7 使用XML 註釋解釋函數 132
4.1.8 在函數實現中使用lambda 133
4.2 在開發過程中進行調試 135
4.2.1 在調試期間使用Visual Studio Code集成終端 135
4.2.2 創建帶有故意錯誤的代碼 136
4.2.3 設置斷點並開始調試 137
4.2.4 使用調試工具欄進行導航 139
4.2.5 調試窗口 140
4.2.6 單步執行代碼 140
4.2.7 自定義斷點 141
4.3 在開發期間進行熱重載 142
4.3.1 使用Visual Studio 2022 進行熱重載 143
4.3.2 使用Visual Studio Code 和命令行進行熱重載 143
4.4 在開發和運行時進行日誌記錄 144
4.4.1 理解日誌記錄選項 144
4.4.2 使用Debug 和Trace 類型 144
4.4.3 配置跟蹤偵聽器 146
4.4.4 切換跟蹤級別 147
4.4.5 記錄有關源代碼的信息 152
4.5 單元測試 153
4.5.1 理解測試類型 153
4.5.2 創建需要測試的類庫 154
4.5.3 編寫單元測試 156
4.6 在函數中拋出和捕獲異常 158
4.6.1 理解使用錯誤和執行錯誤 158
4.6.2 在函數中通常拋出異常 158
4.6.3 理解調用堆棧 159
4.6.4 在哪裡捕獲異常 162
4.6.5 重新拋出異常 162
4.6.6 實現tester-doer 模式 163
4.7 實踐和探索 164
4.7.1 練習4.1:測試你掌握的知識 164
4.7.2 練習4.2:使用調試和單元測試練習函數的編寫 165
4.7.3 練習4.3:探索主題 165
4.8 本章小結 165
第5 章 使用面向對象編程技術構建自己的類型 166
5.1 面向對象編程 166
5.2 構建類庫 167
5.2.1 創建類庫 167
5.2.2 在名稱空間中定義類 168
5.2.3 理解成員 169
5.2.4 實例化類 169
5.2.5 導入名稱空間以使用類型 170
5.2.6 理解對象 172
5.3 在字段中存儲數據 173
5.3.1 定義字段 173
5.3.2 理解訪問修飾符 174
5.3.3 設置和輸出字段值 174
5.3.4 使用enum 類型存儲值 175
5.3.5 使用enum 類型存儲多個值 176
5.4 使用集合存儲多個值 177
5.4.1 理解泛型集合 178
5.4.2 使字段成為靜態字段 178
5.4.3 使字段成為常量 179
5.4.4 使字段只讀 180
5.4.5 使用構造函數初始化字段 181
5.5 編寫和調用方法 182
5.5.1 從方法返回值 182
5.5.2 使用元組組合多個返回值 182
5.5.3 定義參數並將參數傳遞給方法 185
5.5.4 重載方法 186
5.5.5 傳遞可選參數和命名參數 186
5.5.6 控制參數的傳遞方式 188
5.5.7 理解ref 返回 189
5.5.8 使用partial 關鍵字拆分類 189
5.6 使用屬性和索引器控制訪問 190
5.6.1 定義只讀屬性 190
5.6.2 定義可設置的屬性 191
5.6.3 要求在實例化期間設置屬性 193
5.6.4 定義索引器 195
5.7 有關方法的詳細介紹 196
5.7.1 使用方法實現功能 196
5.7.2 使用運算符實現功能 199
5.7.3 使用局部函數實現功能 201
5.8 模式匹配和對象 202
5.8.1 定義飛機乘客 202
5.8.2 C# 9 及後續版本對模式匹配做了增強 203
5.9 使用記錄 204
5.9.1 init-only 屬性 204
5.9.2 理解記錄 205
5.9.3 記錄中的位置數據成員 206
5.10 實踐和探索 206
5.10.1 練習5.1:測試你掌握的知識 207
5.10.2 練習5.2:探索主題 207
5.11 本章小結 207
第6 章 實現接口和繼承類 208
6.1 建立類庫和控制台應用程序 208
6.2 使用泛型安全地重用類型 210
6.2.1 使用非泛型類型 210
6.2.2 使用泛型類型 211
6.3 觸發和處理事件 212
6.3.1 使用委托調用方法 212
6.3.2 定義和處理委托 213
6.3.3 定義和處理事件 215
6.4 實現接口 216
6.4.1 公共接口 216
6.4.2 排序時比較對象 216
6.4.3 使用單獨的類比較對象 220
6.4.4 隱式和顯式的接口實現 221
6.4.5 使用默認實現定義接口 222
6.5 使用引用類型和值類型
管理內存 223
6.5.1 定義引用類型和值類型 223
6.5.2 如何在內存中存儲引用類型和值類型 224
6.5.3 類型的相等性 225
6.5.4 定義struct 類型 226
6.5.5 使用record struct 類型 228
6.5.6 釋放非托管資源 228
6.5.7 確保調用Dispose 方法 229
6.6 使用空值 230
6.6.1 使值類型可為空 230
6.6.2 瞭解與null 相關的縮略詞 232
6.6.3 理解可空引用類型 232
6.6.4 控制可空性警告檢查特性 232
6.6.5 聲明非可空變量和參數 233
6.6.6 檢查null 235
6.7 從類繼承 237
6.7.1 擴展類以添加功能 237
6.7.2 隱藏成員 237
6.7.3 覆蓋成員 238
6.7.4 從抽象類繼承 239
6.7.5 防止繼承和覆蓋 240
6.7.6 理解多態 241
6.8 在繼承層次結構中進行類型轉換 242
6.8.1 隱式類型轉換 242
6.8.2 顯式類型轉換 242
6.8.3 避免類型轉換異常 243
6.9 繼承和擴展.NET 類型 244
6.9.1 繼承異常 244
6.9.2 無法繼承時擴展類型 246
6.10 編寫更好的代碼 248
6.10.1 將警告視為錯誤 248
6.10.2 瞭解警告波 250
6.10.3 使用分析器編寫更好的代碼 251
6.10.4 抑制警告 254
6.10.5 修改代碼 254
6.11 實踐和探索 257
6.11.1 練習6.1:測試你掌握的知識 257
6.11.2 練習6.2:練習創建繼承層次結構 257
6.11.3 練習6.3:探索主題 258
6.12 本章小結 258
第7 章 打包和分發.NET 類型 259
7.1 NET 7 簡介 259
7.1.1 NET Core 1.0 260
7.1.2 NET Core 1.1 260
7.1.3 NET Core 2.0 260
7.1.4 NET Core 2.1 260
7.1.5 NET Core 2.2 261
7.1.6 NET Core 3.0 261
7.1.7 NET Core 3.1 261
7.1.8 NET 5.0 261
7.1.9 NET 6.0 262
7.1.10 NET 7.0 262
7.1.11 使用.NET 5 及後續版本提高性能 262
7.1.12 檢查.NET SDK 以進行更新 262
7.2 瞭解.NET 組件 263
7.2.1 程序集、NuGet 包和名稱空間 263
7.2.2 微軟.NET SDK 平臺 264
7.2.3 理解程序集中的名稱空間和類型 264
7.2.4 NuGet 包 265
7.2.5 理解框架 265
7.2.6 導入名稱空間以使用類型 266
7.2.7 將C#關鍵字與.NET 類型相關聯 266
7.2.8 使用.NET Standard 在舊平臺之間共享代碼 268
7.2.9 理解不同SDK 中類庫的默認設置 269
7.2.10 創建.NET Standard 2.0 類庫 270
7.2.11 控制.NET SDK 270
7.3 發布用於部署的代碼 271
7.3.1 創建要發布的控制台應用程序 271
7.3.2 理解dotnet 命令 273
7.3.3 獲取關於.NET 及其環境的信息 274
7.3.4 管理項目 274
7.3.5 發布自包含的應用程序 275
7.3.6 發布單文件應用 276
7.3.7 使用app trimming 系統減小應用程序的大小 277
7.4 反編譯.NET 程序集 278
7.4.1 使用Visual Studio 2022 的ILSpy
擴展進行反編譯 278
7.4.2 使用Visual Studio 2022 查看源鏈接 283
7.4.3 不能在技術上阻止反編譯 283
7.5 為NuGet 分發打包自己的庫 284
7.5.1 引用NuGet 包 284
7.5.2 為NuGet 打包庫 285
7.5.3 使用工具探索NuGet 包 289
7.5.4 測試類庫包 290
7.6 從.NET Framework 移植到現代.NET 290
7.6.1 能移植嗎 291
7.6.2 應該移植嗎 291
7.6.3 NET Framework 和現代.NET的區別 292
7.6.4 NET 可移植性分析器 292
7.6.5 NET 升級助手 292
7.6.6 使用非.NET Standard 類庫 292
7.7 使用預覽特性 294
7.7.1 需要預覽特性 294
7.7.2 使用預覽特性 294
7.8 實踐和探索 295
7.8.1 練習7.1:測試你掌握的知識 295
7.8.2 練習7.2:探索主題 295
7.8.3 練習7.3:探索PowerShell 295
7.9 本章小結 296
第8 章 使用常見的.NET 類型 297
8.1 處理數字 297
8.1.1 處理大的整數 298
8.1.2 處理復數 298
8.1.3 理解四元數 299
8.1.4 為游戲和類似應用程序生成隨機數 299
8.2 處理文本 300
8.2.1 獲取字符串的長度 300
8.2.2 獲取字符串中的字符 301
8.2.3 拆分字符串 301
8.2.4 獲取字符串的一部分 301
8.2.5 檢查字符串的內容 302
8.2.6 連接、格式化和其他的字符串成員 302
8.2.7 高效地連接字符串 304
8.3 模式匹配與正則表達式 304
8.3.1 檢查作為文本輸入的數字 304
8.3.2 改進正則表達式的性能 305
8.3.3 正則表達式的語法 305
8.3.4 正則表達式示例 306
8.3.5 拆分使用逗號分隔的復雜字符串 307
8.3.6 激活正則表達式語法著色 308
8.3.7 使用源生成器提高正則表達式的性能 311
8.4 在集合中存儲多個對象 312
8.4.1 所有集合的公共特性 313
8.4.2 通過確保集合的容量來提高性能 314
8.4.3 理解集合的選擇 314
8.4.4 使用列表 317
8.4.5 使用字典 319
8.4.6 使用隊列 320
8.4.7 集合的排序 322
8.4.8 使用專門的集合 322
8.4.9 使用不可變集合 323
8.4.10 集合的最佳實踐 323
8.5 使用Span、索引和範圍 324
8.5.1 通過Span 高效地使用內存 324
8.5.2 用索引類型標識位置 324
8.5.3 使用Range 類型標識範圍 325
8.5.4 使用索引、範圍和Span 325
8.6 使用網絡資源 326
8.6.1 使用URI、DNS 和IP 地址 326
8.6.2 ping 服務器 327
8.7 實踐和探索 328
8.7.1 練習8.1:測試你掌握的知識 328
8.7.2 練習8.2:練習正則表達式 329
8.7.3 練習8.3:練習編寫擴展方法 329
8.7.4 練習8.4:探索主題 329
8.8 本章小結 330
第9 章 處理文件、流和序列化 331
9.1 管理文件系統 331
9.1.1 處理跨平臺環境和文件系統 331
9.1.2 管理驅動器 333
9.1.3 管理目錄 334
9.1.4 管理文件 335
9.1.5 管理路徑 336
9.1.6 獲取文件信息 337
9.1.7 控制處理文件的方式 338
9.2 用流來讀寫 338
9.2.1 理解抽象和具體的流 338
9.2.2 寫入文本流 340
9.2.3 寫入XML 流 342
9.2.4 壓縮流 344
9.2.5 使用tar 存盤文件 346
9.2.6 讀寫tar 條目 350
9.3 編碼和解碼文本 350
9.3.1 將字符串編碼為字節數組 351
9.3.2 對文件中的文本進行編碼和解碼 353
9.3.3 使用隨機訪問句柄讀寫文本 353
9.4 序列化對象圖 354
9.4.1 序列化為XML 354
9.4.2 生成緊湊的XML 356
9.4.3 反序列化XML 文件 357
9.4.4 用JSON 序列化 358
9.4.5 高性能的JSON 處理 359
9.5 控制處理JSON 的方式 360
9.5.1 用於處理HTTP 響應的新的
JSON 擴展方法 363
9.5.2 從Newtonsoft 遷移到新的JSON 363
9.6 實踐和探索 363
9.6.1 練習9.1:測試你掌握的知識 363
9.6.2 練習9.2:練習序列化為XML 364
9.6.3 練習9.3:探索主題 364
9.7 本章小結 365
第10 章 使用Entity Framework Core處理數據 366
10.1 理解現代數據庫 366
10.1.1 理解舊的實體框架 367
10.1.2 理解Entity Framework Core 367
10.1.3 理解數據庫優先和代碼優先 368
10.1.4 EF Core 7 的性能改進 368
10.1.5 使用EF Core 創建控制台
應用程序 368
10.1.6 使用示例關系數據庫 368
10.1.7 使用SQLite 369
10.1.8 為SQLite 創建Northwind示例數據庫 370
10.1.9 使用SQLiteStudio 管理Northwind 示例數據庫 371
10.1.10 為SQLite 使用輕量級的ADO.NET 提供程序 373
10.1.11 為Windows 使用SQL Server 373
10.2 設置EF Core 373
10.2.1 選擇EF Core 數據庫提供程序 373
10.2.2 連接到數據庫 374
10.2.3 定義Northwind 數據庫上下文類 374
10.3 定義EF Core 模型 375
10.3.1 使用EF Core 約定定義模型 375
10.3.2 使用EF Core 註解特性定義模型 376
10.3.3 使用EF Core Fluent API 定義模型 377
10.3.4 為Northwind 表構建EF Core模型 377
10.3.5 向Northwind 數據庫上下文類添加表 380
10.3.6 安裝dotnet-ef 工具 380
10.3.7 使用現有數據庫搭建模型 381
10.3.8 自定義逆向工程模板 384
10.3.9 配置約定前模型 384
10.4 查詢EF Core 模型 385
10.4.1 過濾結果中返回的實體 387
10.4.2 過濾和排序產品 389
10.4.3 獲取生成的SQL 390
10.4.4 記錄EF Core 391
10.4.5 使用Like 進行模式匹配 393
10.4.6 在查詢中生成隨機數 394
10.4.7 定義全局過濾器 395
10.5 使用EF Core 加載模式 396
10.5.1 使用Include 擴展方法立即加載實體 396
10.5.2 啟用延遲加載 396
10.5.3 使用Load 方法顯式加載實體 397
10.6 使用EF Core 修改數據 399
10.6.1 插入實體 399
10.6.2 更新實體 402
10.6.3 刪除實體 403
10.6.4 更高效的更新和刪除 404
10.6.5 池化數據庫環境 407
10.7 使用事務 407
10.7.1 使用隔離級別控制事務 408
10.7.2 定義顯式事務 408
10.8 定義Code First EF Core 模型 409
10.9 實踐和探索 409
10.9.1 練習10.1:測試你掌握的知識 409
10.9.2 練習10.2:練習使用不同的序列化格式導出數據 410
10.9.3 練習10.3:探索主題 410
10.9.4 練習10.4:探索NoSQL數據庫 410
10.10 本章小結 410
第11 章 使用LINQ 查詢和操作數據 411
11.1 為什麽使用LINQ 411
11.2 編寫LINQ 表達式 412
11.2.1 LINQ 的組成 412
11.2.2 使用Enumerable 類構建LINQ表達式 412
11.2.3 理解延遲執行 414
11.2.4 使用Where 擴展方法過濾實體 415
11.2.5 以命名方法為目標 417
11.2.6 通過刪除委托的顯式實例化來簡化代碼 417
11.2.7 以lambda 表達式為目標 418
11.2.8 實體的排序 418
11.2.9 按項自身排序 419
11.2.10 使用var 或指定類型聲明查詢 419
11.2.11 根據類型進行過濾 420
11.2.12 使用LINQ 處理集合和bag 421
11.3 使用LINQ 與EF Core 422
11.3.1 構建EF Core 模型 423
11.3.2 序列的過濾和排序 425
11.3.3 將序列投影到新的類型中 427
11.3.4 連接和分組序列 429
11.3.5 聚合序列 431
11.3.6 小心使用Count 433
11.3.7 使用LINQ 分頁 435
11.4 使用語法糖美化LINQ 語法 438
11.5 使用帶有並行LINQ 的多個線程 439
11.6 創建自己的LINQ 擴展方法 439
11.7 使用LINQ to XML 442
11.7.1 使用LINQ to XML生成XML 442
11.7.2 使用LINQ to XML讀取XML 443
11.8 實踐和探索 444
11.8.1 練習11.1:測試你掌握的知識 444
11.8.2 練習11.2:練習使用LINQ進行查詢 445
11.8.3 練習11.3:探索主題 445
11.9 本章小結 446
第12 章 使用ASP.NET Core 進行Web 開發 447
12.1 理解ASP.NET Core 447
12.1.1 經典ASP.NET 與現代ASP.NET Core 的對比 448
12.1.2 使用ASP.NET Core 構建網站 449
12.1.3 構建Web 服務和其他服務 450
12.2 ASP.NET Core 的新特性 450
12.2.1 ASP.NET Core 1.0 451
12.2.2 ASP.NET Core 1.1 451
12.2.3 ASP.NET Core 2.0 451
12.2.4 ASP.NET Core 2.1 451
12.2.5 ASP.NET Core 2.2 451
12.2.6 ASP.NET Core 3.0 452
12.2.7 ASP.NET Core 3.1 452
12.2.8 Blazor WebAssembly 3.2 452
12.2.9 ASP.NET Core 5.0 452
12.2.10 ASP.NET Core 6.0 453
12.2.11 ASP.NET Core 7.0 453
12.3 結構化項目 453
12.4 建立實體數據模型供本書剩餘部分章節使用 454
12.4.1 使用SQLite 創建實體模型類庫 455
12.4.2 使用SQL Server 創建實體模型類庫 462
12.4.3 測試類庫 465
12.5 瞭解Web 開發 466
12.5.1 HTTP 466
12.5.2 使用Google Chrome 瀏覽器發出HTTP 請求 468
12.5.3 瞭解客戶端Web 開發技術 470
12.6 實踐和探索 470
12.6.1 練習12.1:測試你掌握的知識 470
12.6.2 練習12.2:瞭解Web 開發中
常用的縮寫 471
12.6.3 練習12.3:探索主題 471
12.7 本章小結 471
第13 章 使用ASP.NET Core Razor Pages
構建網站 472
13.1 瞭解ASP.NET Core 472
13.1.1 創建空的ASP.NET Core項目 472
13.1.2 測試和保護網站 474
13.1.3 控制托管環境 478
13.1.4 使網站能夠提供靜態內容 479
13.2 瞭解ASP.NET Core Razor Pages 481
13.2.1 啟用Razor Pages 481
13.2.2 給Razor Pages 添加代碼 482
13.2.3 通過Razor Pages 使用共享佈局 483
13.2.4 使用後台代碼文件與Razor Pages 485
13.3 使用Entity Framework Core 與ASP.NET Core 487
13.3.1 將Entity Framework Core配置為服務 487
13.3.2 使用Razor Pages 操作數據 489
13.3.3 將依賴服務註入Razor Pages 中 490
13.4 使用Razor 類庫 491
13.4.1 禁用Visual Studio Code 的Compact Folders 功能 491
13.4.2 創建Razor 類庫 492
13.4.3 實現分部視圖以顯示單個員工 494
13.4.4 使用和測試Razor 類庫 495
13.5 配置服務和HTTP 請求管道 496
13.5.1 瞭解端點路由 496
13.5.2 配置端點路由 496
13.5.3 查看項目中的端點路由配置 496
13.5.4 配置HTTP 管道 498
13.5.5 總結關鍵的中間件擴展方法 499
13.5.6 可視化HTTP 管道 499
13.5.7 實現匿名內聯委托作為中間件 500
13.5.8 啟用對請求解壓縮的支持 501
13.6 啟用HTTP/3 支持 502
13.7 實踐和探索 504
13.7.1 練習13.1:測試你掌握的知識 504
13.7.2 練習13.2:練習建立數據驅動的網頁 504
13.7.3 練習13.3:練習為控制台應用程序構建Web 頁面 504
13.7.4 練習13.4:探索主題 505
13.8 本章小結 505
第14 章 使用MVC 模式構建網站 506
14.1 設置ASP.NET Core MVC網站 506
14.1.1 創建ASP.NET Core MVC網站 506
14.1.2 為SQL Server LocalDB 創建認證數據庫 507
14.1.3 探索默認的ASP.NET Core MVC網站 509
14.1.4 啟動MVC 網站項目 510
14.1.5 瞭解訪問者註冊 511
14.1.6 查看MVC 網站項目結構 511
14.1.7 回顧ASP.NET Core Identity數據庫 513
14.2 探索ASP.NET Core MVC網站 514
14.2.1 ASP.NET Core MVC 的初始化 514
14.2.2 MVC 的默認路由 516
14.2.3 理解控制器和操作 517
14.2.4 理解視圖搜索路徑約定 520
14.2.5 使用依賴服務進行記錄 520
14.2.6 實體和視圖模型 521
14.2.7 視圖 523
14.2.8 理解如何使用標記助手避開緩存 525
14.3 自定義ASP.NET Core MVC網站 526
14.3.1 自定義樣式 526
14.3.2 設置類別圖像 526
14.3.3 Razor 語法和表達式 526
14.3.4 定義類型化視圖 527
14.3.5 使用路由值傳遞參數 530
14.3.6 模型綁定程序 532
14.3.7 驗證模型 535
14.3.8 使用HTML 輔助方法定義視圖 537
14.3.9 使用標記助手定義視圖 538
14.3.10 跨功能過濾器 538
14.3.11 使用輸出緩存 543
14.4 查詢數據庫和使用顯示模板 547
14.5 使用異步任務提高可伸縮性 550
14.6 實踐與探索 551
14.6.1 練習14.1:測試你掌握的知識 551
14.6.2 練習14.2:通過實現類別詳細信息頁面練習實現MVC 552
14.6.3 練習14.3:理解和實現異步操作方法以提高可伸縮性 552
14.6.4 練習14.4:對MVC 控制器進行單元測試 552
14.6.5 練習14.5:探索主題 552
14.7 本章小結 552
第15 章 構建和消費Web 服務 554
15.1 使用ASP.NET Core Web API構建Web 服務 554
15.1.1 理解Web 服務縮寫詞 554
15.1.2 理解Web API 的HTTP 請求和響應 555
15.1.3 創建ASP.NET Core Web API項目 556
15.1.4 檢查Web 服務的功能 559
15.1.5 為Northwind 示例數據庫創建Web 服務 560
15.1.6 為實體創建數據存儲庫 562
15.1.7 實現Web API 控制器 565
15.1.8 配置客戶存儲庫和Web API控制器 566
15.1.9 指定問題的細節 570
15.1.10 控制XML 序列化 570
15.2 解釋和測試Web 服務 571
15.2.1 使用瀏覽器測試GET 請求 571
15.2.2 使用REST Client 擴展測試HTTP 請求 572
15.2.3 理解Swagger 575
15.2.4 使用Swagger UI 測試請求 575
15.2.5 啟用HTTP 日誌記錄 578
15.2.6 W3CLogger 支持記錄額外的請求頭 580
15.3 使用HTTP 客戶端消費Web 服務 580
15.3.1 瞭解HttpClient 類 580
15.3.2 使用HttpClientFactory 配置HTTP 客戶端 581
15.3.3 在控制器中以JSON 格式獲取客戶 581
15.3.4 啟動多個項目 583
15.3.5 啟動Web 服務和MVC 客戶端項目 585
15.4 為Web 服務實現高級功能 586
15.5 使用最小API 構建Web 服務 586
15.5.1 測試最小天氣服務 588
15.5.2 向Northwind 網站主頁添加天氣預報 588
15.6 實踐和探索 591
15.6.1 練習15.1:測試你掌握的知識 591
15.6.2 練習15.2:練習使用HttpClient創建和刪除客戶 591
15.6.3 練習15.3:探索主題 591
15.7 本章小結 591
第16 章 使用Blazor 構建用戶界面 592
16.1 理解Blazor 592
16.1.1 JavaScript 592
16.1.2 Silverlight——使用插件的C#和.NET 593
16.1.3 WebAssembly——Blazor 的目標 593
16.1.4 理解Blazor 托管模型 593
16.1.5 理解Blazor 組件 594
16.1.6 比較Blazor 和Razor 594
16.2 比較Blazor 項目模板 595
16.2.1 Blazor 服務器項目模板 595
16.2.2 理解到頁面組件的Blazor路由 600
16.2.3 運行Blazor 服務器項目模板 603
16.2.4 查看Blazor WebAssembly項目模板 604
16.3 使用Blazor 服務器構建組件 608
16.3.1 定義和測試簡單的Blazor服務器組件 608
16.3.2 將組件轉換成可路由的頁面組件 609
16.3.3 將實體放入組件 610
16.3.4 為Blazor 組件抽象服務 613
16.3.5 使用EditForm 組件定義表單 615
16.3.6 構建共享的客戶詳細信息組件 615
16.3.7 構建創建、編輯和刪除客戶的組件 617
16.3.8 測試客戶組件 619
16.4 使用Blazor WebAssembly 構建組件 619
16.4.1 為Blazor WebAssembly 配置服務器 620
16.4.2 為Blazor WebAssembly 配置客戶端 622
16.4.3 測試Blazor WebAssembly 組件和服務 624
16.5 改進Blazor WebAssembly應用程序 626
16.6 實踐和探索 626
16.6.1 練習16.1:測試你掌握的知識 626
16.6.2 練習16.2:通過創建乘法表組件進行練習 627
16.6.3 練習16.3:通過創建國家導航項進行練習 627
16.6.4 練習16.4:探索主題 628
16.7 本章小結 628
第17 章 結語 629