C# 8.0 和 .NET Core 3.0 高級編程 C# 8.0 and .NET Core 3.0 - Modern Cross-Platform Development , 4/e

Mark J. Price 王莉莉 譯

  • C# 8.0 和 .NET Core 3.0 高級編程-preview-1
  • C# 8.0 和 .NET Core 3.0 高級編程-preview-2
C# 8.0 和 .NET Core 3.0 高級編程-preview-1

買這商品的人也買了...

商品描述

《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開發移動應用程序

作者簡介

Mark J.Price

是微軟專家,他使用C#進行編程並構建微軟Azure解決方案,擁有20多年的教育和編程經驗。
自1993年以來,Mark已經通過了80多項微軟編程考試,他特別擅長幫助其他人順利通過這些考試。
他的學生既有幾十年經驗的專業人士,也有16歲的學徒。
他通過結合教育技能以及親自為世界範圍內的企業提供諮詢和開發系統的實際經驗,成功指導了所有這些學生。

目錄大綱

第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