C# 8.0和.NET Core 3.0高級編程
內容描述
《C#8.0和.NET Core 3.0高級編程》包含C#編程的所有主題,
可分為三大部分,第一大部分介紹C#基礎知識,
包括面向對象編程以及新的C#8.0特性,比如可空引用類型、
簡化的switch模式匹配以及默認的接口方法。
第二大部分介紹.NETStandard APl,包括管理和查詢數據、
監視和改進性能以及使用文件系統、異步流、序列化和加密等。
第三大部分介紹如何構建和部署跨平臺的應用程序,
例如使用ASP.NET Core構建Web應用程序和使用Xamarin.Forms構建移動應用程序。
《C#8.0和.NET Core 3.0高級編程》還介紹了構建Windows桌面應用程序的三種技術——Windows Forms.WPF(WindowsPresentation Foundation)和UWP(UniversalWindows Platform)。
主要特色
●為Windows.macOS、Linux、iOS和Android 構建跨平臺應用程序
●使用C# 8.0和.NET Core 3.0的應用程序開發
●探索ASP.NET Core 3.0,創建專業的Web應用程序
●學習面向對象編程和C#多任務處理
●使用LINQ查詢和操作數據
●使用Entity Framework Core和關系數據庫
●使用UWP和XAML的Windows應用程序開發
●使用Xamarin.Forms為iOS和Android開發移動應用程序
目錄大綱
第1章 C#與.NET入門 1
1.1 設置開發環境 1
1.1.1 使用Visual Studio Code進行跨平臺開發 1
1.1.2 使用Visual Studio 2019進行Windows應用程序開發 2
1.1.3 使用Visual Studio for Mac 進行移動應用程序開發 2
1.1.4 各章的推薦工具 2
1.1.5 跨平臺部署 3
1.1.6 理解Visual Studio Code 版本 3
1.1.7 下載並安裝 Visual Studio Code 4
1.1.8 其他擴展 5
1.2 理解.NET 5
1.2.1 理解.NET Framework 5
1.2.2 理解Mono 和Xamarin 項目 6
1.2.3 理解.NET Core 6
1.2.4 瞭解.NET的未來版本 6
1.2.5 瞭解.NET Core支持 7
1.2.6 .NET Core有什麽不同 7
1.2.7 瞭解.NET Standard 8
1.2.8 本書使用的.NET平臺和工具 9
1.2.9 理解中間語言 9
1.2.10 瞭解.NET Native 9
1.2.11 比較.NET技術 10
1.3 使用Visual Studio Code構建控制台應用程序 10
1.3.1 使用Visual Studio Code編寫代碼 10
1.3.2 使用dotnet CLI編譯和運行代碼 12
1.4 從GitHub存儲庫下載解決方案代碼 12
1.4.1 使用Git和Visual Studio Code 12
1.4.2 拷貝圖書解決方案代碼存儲庫 12
1.5 尋求幫助 13
1.5.1 閱讀微軟文檔 13
1.5.2 獲取關於dotnet工具的幫助 13
1.5.3 獲取類型和成員的定義 14
1.5.4 在Stack Overflow上尋找答案 15
1.5.5 使用谷歌搜索答案 16
1.5.6 訂閱官方的.NET博客 16
1.6 實踐和探索 16
1.6.1 練習1.1:測試你掌握的知識 16
1.6.2 練習1.2:在任何地方練習C# 17
1.6.3 練習1.3:探索主題 17
1.7 本章小結 17
第2章 C#編程基礎 19
2.1 介紹C# 19
2.1.1 理解語言版本和特性 19
2.1.2 發現C#編譯器版本 22
2.1.3 啟用特定的語言版本編譯器 23
2.2 瞭解C#基本知識 24
2.2.1 瞭解C#語法 24
2.2.2 瞭解C#詞匯表 25
2.3 使用變量 28
2.3.1 命名和賦值 29
2.3.2 存儲文本 29
2.3.3 存儲數字 30
2.3.4 存儲布爾值 34
2.3.5 使用Visual Studio Code工作區 34
2.3.6 存儲任何類型的對象 35
2.3.7 動態存儲類型 36
2.3.8 聲明局部變量 36
2.3.9 獲取類型的默認值 37
2.3.10 存儲多個值 37
2.4 處理空值 38
2.4.1 使值類型為null 38
2.4.2 啟用可空引用類型和不可空引用類型 39
2.4.3 聲明不可為空的變量和參數 40
2.4.4 檢查null 41
2.5 深入研究控制台應用程序 42
2.5.1 向用戶顯示輸出 42
2.5.2 理解格式字符串 43
2.5.3 從用戶那裡獲取文本輸入 44
2.5.4 導入名稱空間 44
2.5.5 簡化控制台的使用 44
2.5.6 獲取用戶的重要輸入 45
2.5.7 獲取參數 45
2.5.8 使用參數設置選項 47
2.5.9 處理不支持API的平臺 47
2.6 實踐和探索 48
2.6.1 練習2.1:測試你掌握的知識 48
2.6.2 練習2.2:練習數字的大小和範圍 49
2.6.3 練習2.3:探索主題 49
2.7 本章小結 50
第3章 控製程序流程和轉換類型 51
3.1 操作變量 51
3.1.1 一元運算符 51
3.1.2 二元算術運算符 52
3.1.3 賦值運算符 53
3.1.4 邏輯運算符 53
3.1.5 條件邏輯運算符 54
3.1.6 按位和二元移位運算符 55
3.1.7 其他運算符 56
3.2 理解選擇語句 56
3.2.1 使用if語句進行分支 56
3.2.2 if語句為什麽應總是使用花括號 57
3.2.3 模式匹配與if語句 58
3.2.4 使用switch語句進行分支 58
3.2.5 模式匹配與switch語句 59
3.2.6 使用switch表達式簡化switch語句 60
3.3 理解迭代語句 61
3.3.1 while循環語句 61
3.3.2 do循環語句 61
3.3.3 for循環語句 62
3.3.4 foreach循環語句 62
3.4 類型轉換 63
3.4.1 隱式和顯式地轉換數字 63
3.4.2 使用System.Convert類型進行轉換 64
3.4.3 圓整數字 65
3.4.4 從任何類型轉換為字符串 66
3.4.5 從二進制對象轉換為字符串 67
3.4.6 將字符串轉換為數字或日期和時間 67
3.4.7 在轉換類型時處理異常 69
3.4.8 檢查溢出 71
3.5 實踐和探索 73
3.5.1 練習3.1:測試你掌握的知識 73
3.5.2 練習3.2:探索循環和溢出 74
3.5.3 練習3.3:實踐循環和運算符 74
3.5.4 練習 3.4:實踐異常處理 74
3.5.5 練習3.5:測試你對運算符的認識程度 75
3.5.6 練習3.6:探索主題 75
3.6 本章小結 75
第4章 編寫、調試和測試函數 77
4.1 編寫函數 77
4.1.1 編寫乘法表函數 77
4.1.2 編寫帶返回值的函數 79
4.1.3 編寫數學函數 80
4.1.4 使用XML註釋解釋函數 83
4.2 在開發過程中進行調試 84
4.2.1 創建帶有故意錯誤的代碼 84
4.2.2 設置斷點 85
4.2.3 使用調試工具欄進行導航 86
4.2.4 DEBUG窗格 86
4.2.5 單步執行代碼 87
4.2.6 自定義斷點 88
4.3 在開發和運行時進行日誌記錄 90
4.3.1 使用Debug和Trace類型進行插裝 91
4.3.2 寫入默認的跟蹤偵聽器 91
4.3.3 配置跟蹤偵聽器 92
4.3.4 切換跟蹤級別 93
4.4 單元測試函數 95
4.4.1 創建需要測試的類庫 96
4.4.2 編寫單元測試 97
4.4.3 運行單元測試 98
4.5 實踐和探索 98
4.5.1 練習4.1:測試你掌握的知識 98
4.5.2 練習4.2:使用調試和單元測試練習函數的編寫 99
4.5.3 練習4.3:探索主題 99
4.6 本章小結 99
第5章 使用面向對象編程技術構建自己的類型 101
5.1 面向對象編程 101
5.2 構建類庫 102
5.2.1 創建類庫 102
5.2.2 實例化類 103
5.2.3 管理多個文件 104
5.2.4 對象 104
5.3 在字段中存儲數據 105
5.3.1 定義字段 105
5.3.2 理解訪問修飾符 106
5.3.3 設置和輸出字段值 106
5.3.4 使用enum類型存儲值 107
5.3.5 使用enum類型存儲多個值 108
5.3.6 使用集合存儲多個值 109
5.3.7 使字段成為靜態字段 109
5.3.8 使字段成為常量 110
5.3.9 使字段只讀 111
5.3.10 使用構造函數初始化字段 112
5.3.11 使用默認字面量設置字段 112
5.4 寫入和調用方法 113
5.4.1 從方法返回值 114
5.4.2 使用元組組合多個返回值 114
5.4.3 定義參數並將參數傳遞給方法 116
5.4.4 重載方法 117
5.4.5 傳遞可選參數和命名參數 117
5.4.6 控制參數的傳遞方式 119
5.4.7 使用partial關鍵字分割類 120
5.5 使用屬性和索引器控制訪問 120
5.5.1 定義只讀屬性 120
5.5.2 定義可設置的屬性 121
5.5.3 定義索引器 122
5.6 實踐和探索 123
5.6.1 練習5.1:測試你掌握的知識 123
5.6.2 練習5.2:探索主題 124
5.7 本章小結 124
第6章 實現接口和繼承類 125
6.1 建立類庫和控制台應用程序 125
6.2 簡化方法 126
6.2.1 使用方法實現功能 127
6.2.2 使用運算符實現功能 128
6.2.3 使用局部函數實現功能 129
6.3 觸發和處理事件 130
6.3.1 使用委托調用方法 130
6.3.2 定義和處理委托 131
6.3.3 定義和處理事件 132
6.4 實現接口 133
6.4.1 公共接口 133
6.4.2 排序時比較對象 133
6.4.3 使用單獨的類比較對象 134
6.4.4 使用默認實現定義接口 136
6.5 使類型可以安全地與泛型一起重用 137
6.5.1 使用泛型類型 138
6.5.2 使用泛型方法 139
6.6 使用引用類型和值類型管理內存 140
6.6.1 處理struct類型 141
6.6.2 釋放非托管資源 142
6.6.3 確保調用Dispose方法 143
6.7 從類繼承 143
6.7.1 擴展類 144
6.7.2 隱藏成員 144
6.7.3 覆蓋成員 145
6.7.4 防止繼承和覆蓋 146
6.7.5 理解多態 146
6.8 在繼承層次結構中進行類型轉換 147
6.8.1 隱式類型轉換 147
6.8.2 顯式類型轉換 147
6.8.3 避免類型轉換異常 148
6.9 繼承和擴展.NET類型 149
6.9.1 繼承異常 149
6.9.2 無法繼承時擴展類型 150
6.10 實踐和探索 151
6.10.1 練習6.1:測試你掌握的知識 152
6.10.2 練習6.2:練習創建繼承層次結構 152
6.10.3 練習6.3:探索主題 152
6.11 本章小結 153
第7章 理解和打包.NET類型 155
7.1 .NET Core 3.0簡介 155
7.1.1 .NET Core 1.0 156
7.1.2 .NET Core 1.1 156
7.1.3 .NET Core 2.0 156
7.1.4 .NET Core 2.1 156
7.1.5 .NET Core 2.2 157
7.1.6 .NET Core 3.0 157
7.2 瞭解.NET Core組件 157
7.2.1 程序集、包和名稱空間 158
7.2.2 導入名稱空間以使用類型 160
7.2.3 將C#關鍵字與.NET類型相關聯 161
7.2.4 與.NET Standard類庫共享跨平臺代碼 162
7.3 發布用於部署的應用程序 163
7.3.1 創建要發布的控制台應用程序 164
7.3.2 dotnet命令 164
7.3.3 發布自包含的應用程序 165
7.4 反編譯程序集 166
7.5 為NuGet分發打包自己的庫 168
7.5.1 引用NuGet包 169
7.5.2 為NuGet打包庫 169
7.5.3 測試包 171
7.6 從.NET Framework移植到.NET Core 172
7.6.1 能移植嗎 172
7.6.2 應該移植嗎 173
7.6.3 .NET Framework和.NET Core之間的區別 173
7.6.4 .NET可移植性分析器 173
7.6.5 使用非.NET標準庫 174
7.7 實踐和探索 175
7.7.1 練習7.1:測試你掌握的知識 175
7.7.2 練習7.2:探索主題 175
7.8 本章小結 176
第8章 使用常見的.NET類型 177
8.1 處理數字 177
8.1.1 處理大的整數 177
8.1.2 處理復數 178
8.2 處理文本 178
8.2.1 獲取字符串的長度 179
8.2.2 獲取字符串中的字符 179
8.2.3 拆分字符串 179
8.2.4 獲取字符串的一部分 180
8.2.5 檢查字符串的內容 180
8.2.6 連接、格式化和其他的字符串成員方法 180
8.2.7 高效地構建字符串 181
8.3 模式匹配與正則表達式 182
8.3.1 檢查作為文本輸入的數字 182
8.3.2 正則表達式的語法 183
8.3.3 正則表達式的例子 183
8.3.4 分割使用逗號分隔的復雜字符串 184
8.4 在集合中存儲多個對象 185
8.4.1 所有集合的公共特性 186
8.4.2 理解集合的選擇 187
8.4.3 使用列表 188
8.4.4 使用字典 189
8.4.5 集合的排序 189
8.4.6 使用專門的集合 190
8.4.7 使用不可變集合 190
8.5 使用span、索引和範圍 191
8.5.1 高效地使用內存 191
8.5.2 用索引類型標識位置 191
8.5.3 使用Range值類型標識範圍 191
8.5.4 使用索引和範圍 192
8.6 使用網絡資源 193
8.6.1 使用URI、DNS和IP地址 193
8.6.2 ping服務器 194
8.7 處理類型和屬性 195
8.7.1 程序集的版本控制 195
8.7.2 閱讀程序集元數據 196
8.7.3 創建自定義特性 197
8.7.4 更多地使用反射 199
8.8 國際化代碼 199
8.9 實踐和探索 201
8.9.1 練習8.1:測試你掌握的知識 201
8.9.2 練習8.2:練習正則表達式 202
8.9.3 練習8.3:練習編寫擴展方法 202
8.9.4 練習8.4:探索主題 202
8.10 本章小結 203
第9章 處理文件、流和序列化 205
9.1 管理文件系統 205
9.1.1 處理跨平臺環境和文件系統 205
9.1.2 管理驅動器 206
9.1.3 管理目錄 207
9.1.4 管理文件 209
9.1.5 管理路徑 210
9.1.6 獲取文件信息 211
9.1.7 控制如何處理文件 212
9.2 用流來讀寫 212
9.2.1 寫入文本流 214
9.2.2 寫入XML流 215
9.2.3 文件資源的釋放 216
9.2.4 壓縮流 217
9.2.5 使用Brotli算法進行壓縮 219
9.2.6 使用管道的高性能流 220
9.2.7 異步流 220
9.3 編碼和解碼文本 221
9.3.1 將字符串編碼為字節數組 221
9.3.2 對文件中的文本進行編碼和解碼 223
9.4 序列化對象圖 223
9.4.1 序列化為XML 223
9.4.2 生成緊湊的XML 225
9.4.3 反序列化XML文件 226
9.4.4 用JSON序列化格式 227
9.4.5 高性能的JSON處理 228
9.5 實踐和探索 229
9.5.1 練習9.1:測試你掌握的知識 229
9.5.2 練習9.2:練習序列化為XML 229
9.5.3 練習9.3:探索主題 230
9.6 本章小結 230
第10章 保護數據和應用程序 231
10.1 理解數據保護術語 231
10.1.1 密鑰和密鑰的大小 231
10.1.2 IV和塊大小 232
10.1.3 salt 232
10.1.4 生成密鑰和IV 233
10.2 加密和解密數據 233
10.3 哈希數據 236
10.4 簽名數據 239
10.5 生成隨機數 242
10.5.1 為游戲生成隨機數 242
10.5.2 為密碼生成隨機數 243
10.6 密碼學有什麽新內容 244
10.7 用戶的身份驗證和授權 244
10.7.1 實現身份驗證和授權 246
10.7.2 保護應用程序功能 248
10.8 實踐和探索 249
10.8.1 練習10.1:測試你掌握的知識 249
10.8.2 練習10.2:練習使用加密和哈希方法保護數據 249
10.8.3 練習10.3:練習使用解密保護數據 249
10.8.4 練習10.4:探索主題 250
10.9 本章小結 250
第11章 使用Entity Framework Core 處理數據庫 251
11.1 理解現代數據庫 251
11.1.1 理解實體框架 251
11.1.2 使用示例數據庫 252
11.1.3 為SQLite創建Northwind示例數據庫 253
11.1.4 使用SQLiteStudio管理Northwind示例數據庫 254
11.2 設置EF Core 254
11.2.1 選擇EF Core數據提供程序 255
11.2.2 連接到數據庫 255
11.3 定義EF Core模型 256
11.3.1 EF Core約定 256
11.3.2 EF Core註解特性 256
11.3.3 EF Core Fluent API 257
11.3.4 理解數據播種 257
11.3.5 構建EF Core模型 257
11.4 查詢EF Core模型 260
11.4.1 過濾和排序產品 261
11.4.2 記錄EF Core 262
11.4.3 使用查詢標記進行日誌記錄 265
11.4.4 模式匹配與Like 265
11.4.5 定義全局過濾器 266
11.5 使用EF Core加載模式 267
11.5.1 立即加載實體 267
11.5.2 啟用延遲加載 267
11.5.3 顯式加載實體 268
11.6 使用EF Core操作數據 270
11.6.1 插入實體 270
11.6.2 更新實體 271
11.6.3 刪除實體 271
11.6.4 池化數據庫環境 272
11.6.5 事務 272
11.6.6 定義顯式事務 273
11.7 實踐和探索 274
11.7.1 練習11.1:測試你掌握的知識 274
11.7.2 練習11.2:練習使用不同的序列化格式導出數據 274
11.7.3 練習11.3:研究EF Core文檔 274
11.8 本章小結 274
第12章 使用LINQ查詢和操作數據 275
12.1 編寫LINQ查詢 275
12.1.1 使用Enumerable類擴展序列 275
12.1.2 使用Where擴展方法過濾實體 276
12.1.3 實體的排序 279
12.1.4 根據類型進行過濾 280
12.2 使用LINQ處理集合 281
12.3 使用LINQ與EF Core 282
12.3.1 構建EF Core模型 283
12.3.2 序列的篩選和排序 284
12.3.3 將序列投影到新的類型中 285
12.3.4 連接和分組序列 286
12.3.5 聚合序列 288
12.4 使用語法糖美化LINQ語法 289
12.5 使用帶有並行LINQ的多個線程 290
12.6 創建自己的LINQ擴展方法 293
12.7 使用LINQ to XML 295
12.7.1 使用LINQ to XML生成XML 295
12.7.2 使用LINQ to XML讀取XML 296
12.8 實踐和探索 296
12.8.1 練習12.1:測試你掌握的知識 296
12.8.2 練習12.2:練習使用LINQ進行查詢 297
12.8.3 練習12.3:探索主題 297
12.9 本章小結 298
第13章 使用多任務提高性能和可伸縮性 299
13.1 理解進程、線程和任務 299
13.2 監控性能和資源使用情況 300
13.2.1 評估類型的效率 300
13.2.2 監控性能和內存使用情況 301
13.2.3 實現Recorder類 301
13.3 異步運行任務 304
13.3.1 同步執行多個操作 304
13.3.2 使用任務異步執行多個操作 306
13.3.3 等待任務 307
13.3.4 繼續執行另一項任務 308
13.3.5 嵌套任務和子任務 309
13.4 同步訪問共享資源 310
13.4.1 從多個線程訪問資源 310
13.4.2 對資源應用互斥鎖 311
13.4.3 理解lock語句並避免死鎖 312
13.4.4 使CPU操作原子化 313
13.4.5 應用其他類型的同步 314
13.5 理解async和await 314
13.5.1 提高控制台應用程序的響應
能力 314
13.5.2 改進GUI應用程序的響應能力 315
13.5.3 改進Web應用程序和Web服務的可伸縮性 315
13.5.4 支持多任務處理的常見類型 315
13.5.5 在catch塊中使用await關鍵字 316
13.5.6 使用async流 316
13.6 實踐和探索 317
13.6.1 練習13.1:測試你掌握的知識 317
13.6.2 練習13.2:探索主題 317
13.7 本章小結 317
第14章 C#和.NET的實際應用 319
14.1 理解C#和.NET的應用模型 319
14.1.1 使用ASP.NET Core構建網站 319
14.1.2 使用Web內容管理系統構建網站 320
14.1.3 理解Web應用程序 320
14.1.4 構建和使用Web服務 321
14.1.5 構建智能應用 321
14.2 ASP.NET Core的新特性 321
14.2.1 ASP.NET Core 1.0 321
14.2.2 ASP.NET Core 1.1 321
14.2.3 ASP.NET Core 2.0 321
14.2.4 ASP.NET Core 2.1 322
14.2.5 ASP.NET Core 2.2 322
14.2.6 ASP.NET Core 3.0 323
14.3 理解SignalR 323
14.4 理解Blazor 324
14.4.1 JavaScript存在的問題 324
14.4.2 Silverlight 325
14.4.3 WebAssembly 325
14.4.4 服務器端或客戶端Blazor 325
14.5 構建Windows桌面應用程序和跨平臺的移動應用程序 325
14.5.1 構建Windows桌面應用程序 326
14.5.2 構建跨平臺的移動應用程序 326
14.6 為Northwind數據庫構建實體數據模型 326
14.6.1 為Northwind實體模型創建類庫 327
14.6.2 為Northwind數據庫上下文創建類庫 330
14.7 本章小結 332
第15章 使用ASP.NET Core Razor Pages構建網站 335
15.1 瞭解Web開發 335
15.1.1 HTTP 335
15.1.2 客戶端Web開發 338
15.2 瞭解ASP.NET Core 338
15.2.1 傳統的ASP.NET與現代的ASP.NET Core 339
15.2.2 創建ASP.NET Core項目 339
15.2.3 測試和保護網站 341
15.2.4 啟用靜態文件和默認文件 343
15.3 瞭解Razor Pages 345
15.3.1 啟用Razor Pages 345
15.3.2 定義Razor頁面 346
15.3.3 通過Razor頁面使用共享佈局 347
15.3.4 使用後台代碼文件與Razor頁面 349
15.4 使用Entity Framework Core與ASP.NET Core 350
15.4.1 將Entity Framework Core配置為服務 350
15.4.2 使用Razor頁面操作數據 352
15.5 使用Razor類庫 353
15.6 實踐和探索 356
15.6.1 練習15.1:測試你掌握的知識 357
15.6.2 練習15.2:練習建立數據驅動的網頁 357
15.6.3 練習15.3:探索主題 357
15.7 本章小結 357
第16章 使用MVC模式構建網站 359
16.1 設置ASP.NET Core MVC網站 359
16.1.1 創建和探索ASP.NET Core MVC網站 359
16.1.2 審查ASP.NET Core MVC網站 361
16.1.3 回顧ASP.NET Core Identity數據庫 363
16.2 探索ASP.NET Core MVC網站 363
16.2.1 瞭解ASP.NET Core MVC的啟動 363
16.2.2 理解MVC使用的默認路由 365
16.2.3 理解控制器和操作 366
16.2.4 過濾器 367
16.2.5 實體和視圖模型 369
16.2.6 視圖 370
16.3 自定義ASP.NET Core MVC網站 372
16.3.1 自定義樣式 373
16.3.2 設置類別圖像 373
16.3.3 Razor語法 373
16.3.4 定義類型化視圖 374
16.3.5 測試自定義的主頁 376
16.3.6 使用路由值傳遞參數 377
16.3.7 模型綁定程序 379
16.3.8 驗證模型 381
16.3.9 視圖輔助方法 384
16.3.10 查詢數據庫和使用顯示模板 384
16.3.11 使用異步任務提高可伸縮性 386
16.4 使用其他項目模板 387
16.5 實踐與探索 389
16.5.1 練習16.1:測試你掌握的知識 390
16.5.2 練習16.2:通過實現類別詳細信息頁面來練習實現MVC 390
16.5.3 練習16.3:理解和實現異步操作方法以提高可伸縮性 390
16.5.4 練習16.4:探索主題 390
16.6 本章小結 391
第17章 使用內容管理系統構建網站 393
17.1 瞭解CMS的優點 393
17.1.1 瞭解CMS的基本特性 393
17.1.2 瞭解企業級CMS的特性 394
17.1.3 瞭解CMS平臺 394
17.2 瞭解Piranha CMS 394
17.2.1 創建和探索Piranha CMS網站 395
17.2.2 編輯站點和頁面內容 398
17.2.3 創建一個新的頂級頁面 400
17.2.4 創建一個新的子頁面 401
17.2.5 回顧博客歸檔 402
17.2.6 探索身份驗證和授權 403
17.2.7 探索配置 405
17.2.8 測試新內容 406
17.2.9 瞭解路由 406
17.2.10 瞭解媒體 408
17.2.11 理解應用程序服務 408
17.2.12 理解內容類型 409
17.2.13 理解標準塊 412
17.2.14 檢查組件類型和標準塊 413
17.3 定義組件、內容類型和模板 414
17.3.1 檢查標準頁面類型 414
17.3.2 查看博客歸檔頁面類型 416
17.3.3 自定義內容和組件類型 417
17.3.4 為內容類型自定義內容模板 421
17.3.5 通過配置啟動和導入數據庫 423
17.4 測試Northwind CMS網站 427
17.4.1 上傳圖像並創建類別根目錄 427
17.4.2 導入類別和產品內容 427
17.4.3 管理類別內容 429
17.4.4 Piranha如何存儲內容 430
17.5 實踐和探索 431
17.5.1 練習17.1:測試你掌握的知識 431
17.5.2 練習17.2:練習定義塊類型,用以呈現YouTube視頻 432
17.5.3 練習17.3:探索主題 432
17.6 本章小結 432
第18章 構建和消費Web服務 433
18.1 使用ASP.NET Core Web API構建Web服務 433
18.1.1 理解Web服務縮寫詞 433
18.1.2 創建ASP.NET Core Web API項目 434
18.1.3 檢查Web服務的功能 436
18.1.4 為Northwind數據庫創建Web服務 437
18.1.5 為實體創建數據存儲庫 438
18.1.6 實現Web API控制器 441
18.1.7 配置存儲庫和Web API控制器 443
18.1.8 指定問題的細節 446
18.2 解釋和測試Web服務 447
18.2.1 使用瀏覽器測試GET請求 447
18.2.2 使用REST Client擴展測試HTTP請求 448
18.2.3 啟用Swagger 451
18.2.4 使用Swagger UI測試HTTP請求 452
18.3 使用HTTP客戶端消費服務 456
18.3.1 瞭解HttpClient類 456
18.3.2 使用HttpClientFactory配置HTTP客戶端 456
18.3.3 支持跨源資源共享 459
18.4 實現高級功能 460
18.4.1 實現健康檢查API 460
18.4.2 實現Open API分析器和約定 461
18.4.3 理解端點路由 461
18.4.4 配置端點路由 462
18.5 瞭解其他通信技術 463
18.5.1 瞭解WCF 463
18.5.2 瞭解gRPC 464
18.6 實踐和探索 464
18.6.1 練習18.1:測試你掌握的知識 464
18.6.2 練習18.2:練習使用HttpClient創建和刪除客戶 465
18.6.3 練習18.3:探索主題 465
18.7 本章小結 465
第19章 使用機器學習構建智能應用程序 467
19.1 瞭解機器學習 467
19.1.1 瞭解機器學習的生命周期 467
19.1.2 瞭解用於訓練和測試的數據集 468
19.1.3 瞭解機器學習任務 469
19.1.4 瞭解Microsoft Azure Machine Learning 469
19.2 理解ML.NET 469
19.2.1 瞭解Infer.NET 470
19.2.2 瞭解ML.NET學習管道 470
19.2.3 瞭解模型訓練的概念 471
19.2.4 瞭解缺失值和鍵類型 471
19.2.5 瞭解特性和標簽 472
19.3 進行產品推薦 472
19.3.1 問題分析 472
19.3.2 數據收集和處理 473
19.3.3 創建NorthwindML網站項目 473
19.3.4 測試產品推薦網站 483
19.4 實踐和探索 485
19.4.1 練習19.1:測試你掌握的知識 485
19.4.2 練習19.2:使用樣本進行練習 485
19.4.3 練習19.3:探索主題 486
19.5 本章小結 486
第20章 構建Windows桌面應用程序 489
20.1 瞭解舊的Windows應用程序平臺 490
20.1.1 瞭解.NET Core 3.0對舊Windows平臺的支持 490
20.1.2 為Windows安裝Visual Studio 2019 490
20.1.3 使用Windows Forms 490
20.1.4 將WPF應用程序遷移到.NET Core 3.0 494
20.1.5 使用Windows兼容性包遷移舊應用程序 495
20.2 瞭解現代Windows平臺 495
20.2.1 瞭解UWP 495
20.2.2 瞭解Fluent Design system 495
20.2.3 瞭解XAML標準 496
20.3 創建現代的Windows應用程序 498
20.3.1 啟用開發人員模式 498
20.3.2 創建UWP項目 498
20.3.3 探索常見的控件和Acylic材質 501
20.3.4 探索Reveal照明 502
20.3.5 安裝更多的控件 504
20.4 使用資源和模板 505
20.4.1 共享資源 505
20.4.2 替換控件模板 507
20.5 使用數據綁定 508
20.5.1 綁定元素 508
20.5.2 創建要綁定到的HTTP服務 510
20.5.3 綁定安全HTTP服務中的數據 513
20.5.4 創建調用HTTP服務的用戶界面 514
20.5.5 將數字轉換成圖像 515
20.5.6 測試HTTP服務數據綁定 521
20.6 實踐和探索 522
20.6.1 練習20.1:測試你掌握的知識 522
20.6.2 練習20.2:探索主題 522
20.7 本章小結 523
第21章 使用Xamarin.Forms構建跨平臺的移動應用程序 525
21.1 瞭解Xamarin和Xamarin. Forms 525
21.1.1 Xamarin.Forms擴展了Xamarin 526
21.1.2 移動先行,雲先行 526
21.1.3 瞭解一些額外的功能 527
21.1.4 瞭解Xamarin.Forms用戶界面組件 528
21.2 使用Xamarin.Forms構建移動應用程序 529
21.2.1 安裝Android SDK 529
21.2.2 創建Xamarin.Forms解決方案 530
21.2.3 創建具有雙向數據綁定的實體模型 531
21.2.4 為撥打電話號碼創建組件 534
21.2.5 為客戶列表和客戶詳細信息創建視圖 536
21.2.6 測試移動應用程序 541
21.3 在移動應用程序中消費Web服務 543
21.3.1 配置Web服務以允許不安全的請求 543
21.3.2 配置iOS應用程序以允許不安全的連接 544
21.3.3 添加用於消費Web服務的NuGet包 544
21.3.4 從Web服務中獲取客戶 545
21.4 實踐和探索 546
21.4.1 練習21.1:測試你掌握的知識 546
21.4.2 練習21.2:探索主題 547
21.5 本章小結 547
作者介紹
Mark J.Price
是微軟專家,他使用C#進行編程並構建微軟Azure解決方案,擁有20多年的教育和編程經驗。
自1993年以來,Mark已經通過了80多項微軟編程考試,他特別擅長幫助其他人順利通過這些考試。
他的學生既有幾十年經驗的專業人士,也有16歲的學徒。
他通過結合教育技能以及親自為世界範圍內的企業提供諮詢和開發系統的實際經驗,成功指導了所有這些學生。