注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當前位置: 首頁出版圖書科學技術(shù)計算機/網(wǎng)絡(luò)軟件與程序設(shè)計C/C++及其相關(guān)C#高級編程(第12版)

C#高級編程(第12版)

C#高級編程(第12版)

定 價:¥198.00

作 者: [奧]克里斯琴·內(nèi)格爾(Chrisitian Nagel) 著,李銘 譯
出版社: 清華大學出版社
叢編項:
標 簽: 暫缺

ISBN: 9787302618775 出版時間: 2022-10-01 包裝: 平裝-膠訂
開本: 128開 頁數(shù): 字數(shù):  

內(nèi)容簡介


 ??? 為需要新的庫和工具的高級開發(fā)人員介紹了C#和.NET的眾多新特性? 揭示了使用.NET庫的最新技巧和實用提示,包括通道、異步流和新的JSON序列化器等? 論述了使用ASP.NET Core、gRPC、SignalR、Azure Functions和Docker開發(fā)微服務(wù)的創(chuàng)新方式? 為開發(fā)Web應用程序提供了逐步指導,包括ASP.NET Core Razor、ASP.NET Core Blazor Server和Blazor WebAssembly? 討論了如何使用新的WinUI 3庫開發(fā)Windows桌面應用程序

作者簡介

  Christian Nagel是Visual Studio和開發(fā)技術(shù)方向的Microsoft MVP,也是一名軟件架構(gòu)師和經(jīng)驗豐富的開發(fā)人員。他從2000年開始使用.NET技術(shù)構(gòu)建解決方案。他撰寫了許多備受稱贊的.NET圖書,并在國際會議,如Microsoft Ignite(原來的TechEd)和TechDays上發(fā)言。他是.NET用戶組的支持者,微軟認證培訓師,也是WinUI和.NET MAUI應用程序、ASP.NET Core和Microsoft Azure的專業(yè)開發(fā)人員。

圖書目錄

 
 
第 I 部分  C#語言
第1章  .NET應用程序和工具 3
1.1  從.NET Framework到.NET Core,
再到.NET 3
1.2  .NET術(shù)語 4
1.2.1  .NET SDK 4
1.2.2  .NET運行庫 5
1.2.3  公共語言運行庫 5
1.2.4  .NET編譯平臺 6
1.2.5  .NET Framework 6
1.2.6  .NET Core 6
1.2.7  .NET 7
1.2.8  .NET Standard 7
1.2.9  NuGet包 7
1.2.10  名稱空間 8
1.3  .NET支持周期 9
1.4  應用程序類型和技術(shù) 9
1.4.1  數(shù)據(jù)訪問 9
1.4.2  Windows應用程序 10
1.4.3  Web應用程序 10
1.4.4  服務(wù) 11
1.4.5  SignalR 11
1.4.6  Microsoft Azure 11
1.5  開發(fā)工具 13
1.5.1  .NET CLI 13
1.5.2  Visual Studio Code 13
1.5.3  Visual Studio Community 13
1.5.4  Visual Studio Professional 13
1.5.5  Visual Studio Enterprise 13
1.5.6  Visual Studio for Mac 14
1.5.7  Windows終端 14
1.5.8  WSL 2 14
1.5.9  Docker Desktop 14
1.6  使用.NET CLI 15
1.6.1  創(chuàng)建應用程序 15
1.6.2  頂級語句 16
1.6.3  選擇框架和語言版本 16
1.6.4  構(gòu)建應用程序 17
1.6.5  運行應用程序 18
1.6.6  創(chuàng)建Web應用程序 18
1.6.7  發(fā)布應用程序 19
1.6.8  自包含部署 19
1.6.9  創(chuàng)建單個可執(zhí)行文件 20
1.6.10  readytorun 20
1.6.11  剪裁 21
1.7  小結(jié) 21
第2章  核心C# 23
2.1  C#基礎(chǔ) 24
2.1.1  頂級語句 24
2.1.2  變量 25
2.1.3  命令行實參 25
2.1.4  變量的作用域 26
2.1.5  常量 27
2.1.6  在頂級語句中使用方法和類型 28
2.2  可空類型 28
2.2.1  可空值類型 29
2.2.2  可空引用類型 29
2.3  使用預定義數(shù)據(jù)類型 31
2.3.1  整型 31
2.3.2  BigInteger 32
2.3.3  本機整數(shù)類型 32
2.3.4  數(shù)字分隔符 32
2.3.5  二進制值 32
2.3.6  浮點類型 33
2.3.7  bool類型 33
2.3.8  字符類型 34
2.3.9  數(shù)字的字面值 34
2.3.10  object類型 34
2.4  程序流控制 35
2.4.1  if語句 35
2.4.2  is運算符的模式匹配 36
2.4.3  switch語句 36
2.4.4  switch語句的模式匹配 37
2.4.5  switch表達式 38
2.4.6  for循環(huán) 39
2.4.7  while循環(huán) 41
2.4.8  do…while循環(huán) 41
2.4.9  foreach循環(huán) 41
2.4.10  退出循環(huán) 42
2.5  名稱空間 42
2.5.1  using語句 43
2.5.2  名稱空間的別名 43
2.6  使用字符串 43
2.6.1  使用StringBuilder 43
2.6.2  字符串插值 44
2.6.3  FormattableString 44
2.6.4  字符串格式 45
2.6.5  verbatim字符串 45
2.6.6  字符串的范圍 46
2.7  注釋 46
2.7.1  源文件中的內(nèi)部注釋 46
2.7.2  XML文檔 47
2.8  C#預處理器指令 48
2.8.1  #define和#undef 48
2.8.2  #if、#elif、#else和#endif 49
2.8.3  #warning和#error 50
2.8.4  #region和#endregion 50
2.8.5  #line 50
2.8.6  #pragma 51
2.8.7  #nullable 51
2.9  C#編程準則 51
2.9.1  關(guān)于標識符的規(guī)則 51
2.9.2  用法約定 52
2.9.3  命名約定 52
2.9.4  屬性和方法的使用 54
2.9.5  字段的使用 54
2.10  小結(jié) 55
第3章  類、記錄、結(jié)構(gòu)和元組 56
3.1  創(chuàng)建及使用類型 57
3.2  按值傳遞和按引用傳遞 57
3.3  類 59
3.3.1  字段 60
3.3.2  只讀字段 60
3.3.3  屬性 61
3.3.4  方法 64
3.3.5  構(gòu)造函數(shù) 68
3.3.6  局部函數(shù) 70
3.3.7  泛型方法 71
3.3.8  擴展方法 71
3.3.9  匿名類型 72
3.4  記錄 73
3.4.1  不可變類型 73
3.4.2  名義記錄 73
3.4.3  位置記錄 73
3.4.4  記錄的相等性比較 74
3.4.5  with表達式 74
3.5  結(jié)構(gòu) 75
3.6  枚舉類型 76
3.7  ref、in和out 78
3.7.1  ref參數(shù) 78
3.7.2  in參數(shù) 79
3.7.3  ref return 80
3.7.4  out參數(shù) 81
3.8  元組 81
3.8.1  聲明和初始化元組 82
3.8.2  元組解構(gòu) 83
3.8.3  元組的返回 83
3.9  ValueTuple 83
3.10  解構(gòu) 84
3.11  模式匹配 85
3.11.1  使用元組進行模式匹配 85
3.11.2  屬性模式 86
3.12  分部類型 87
3.13  小結(jié) 89
第4章  C#面向?qū)ο缶幊?90
4.1  面向?qū)ο?90
4.2  類的繼承 91
4.2.1  虛方法 91
4.2.2  隱藏方法 94
4.2.3  調(diào)用方法的基類版本 95
4.2.4  抽象類和抽象方法 96
4.2.5  密封類和密封方法 96
4.2.6  派生類的構(gòu)造函數(shù) 97
4.3  修飾符 99
4.3.1  訪問修飾符 99
4.3.2  其他修飾符 100
4.4  記錄的繼承 100
4.5  使用接口 101
4.5.1  預定義接口 102
4.5.2  使用接口進行依賴注入 104
4.5.3  顯式和隱式實現(xiàn)的接口 105
4.5.4  對比接口和類 106
4.5.5  默認接口方法 106
4.6  泛型 109
4.7  小結(jié) 112
第5章  運算符和類型強制轉(zhuǎn)換 113
5.1  運算符 113
5.1.1  復合賦值運算符 114
5.1.2  條件運算符 115
5.1.3  checked和unchecked運算符 115
5.1.4  is和as運算符 116
5.1.5  sizeof運算符 117
5.1.6  typeof運算符 118
5.1.7  nameof 運算符 118
5.1.8  索引器 118
5.1.9  空合并運算符和空合并賦值
運算符 119
5.1.10  空值條件運算符 119
5.2  使用二進制運算符 121
5.2.1  位的移動 122
5.2.2  有符號數(shù)和無符號數(shù) 123
5.3  類型的安全性 125
5.3.1  類型轉(zhuǎn)換 125
5.3.2  裝箱和拆箱 128
5.4  運算符重載 128
5.4.1  運算符的工作方式 129
5.4.2  Vector類型的運算符重載 130
5.5  比較對象的相等性 132
5.6  實現(xiàn)自定義的索引器 134
5.7  用戶定義的轉(zhuǎn)換 136
5.7.1  實現(xiàn)用戶定義的類型強制轉(zhuǎn)換 136
5.7.2  多重類型強制轉(zhuǎn)換 142
5.8  小結(jié) 145
第6章  數(shù)組 147
6.1  相同類型的多個對象 147
6.2  簡單數(shù)組 148
6.2.1  數(shù)組的聲明和初始化 148
6.2.2  訪問數(shù)組元素 149
6.2.3  使用引用類型 149
6.3  多維數(shù)組 150
6.4  鋸齒數(shù)組 151
6.5  Array類 152
6.5.1  創(chuàng)建數(shù)組 152
6.5.2  復制數(shù)組 153
6.5.3  排序 154
6.6  數(shù)組作為參數(shù) 156
6.7  枚舉器 157
6.7.1  IEnumerator接口 157
6.7.2  foreach語句 158
6.7.3  yield語句 158
6.8  對數(shù)組使用Span 160
6.8.1  創(chuàng)建切片 160
6.8.2  使用Span改變值 161
6.8.3  只讀的Span 162
6.9  索引和范圍 163
6.9.1  索引和hat運算符 163
6.9.2  范圍 163
6.9.3  高效地修改數(shù)組內(nèi)容 164
6.9.4  自定義集合的索引和范圍 165
6.10  數(shù)組池 165
6.10.1  創(chuàng)建數(shù)組池 165
6.10.2  從池中租用內(nèi)存 166
6.10.3  將內(nèi)存返回給池 166
6.11  BitArray 167
6.12  小結(jié) 169
第7章  委托、lambda表達式和事件 171
7.1  引用方法 171
7.2  委托 172
7.2.1  聲明委托 172
7.2.2  使用委托 173
7.2.3  將委托傳遞給方法 175
7.2.4  Action和Func委托 176
7.2.5  多播委托 177
7.2.6  匿名方法 179
7.3  lambda表達式 180
7.3.1  參數(shù) 181
7.3.2  多行代碼 181
7.3.3  閉包 181
7.4  事件 182
7.4.1  事件發(fā)布程序 183
7.4.2  事件偵聽器 184
7.5  小結(jié) 185
第8章  集合 187
8.1  概述 187
8.2  集合接口和類型 188
8.3  列表 188
8.3.1  創(chuàng)建列表 189
8.3.2  集合初始化器 190
8.3.3  添加元素 190
8.3.4  插入元素 191
8.3.5  訪問元素 191
8.3.6  刪除元素 192
8.3.7  搜索 192
8.3.8  排序 194
8.3.9  只讀集合 195
8.3.10  隊列 195
8.4  棧 199
8.5  鏈表 200
8.6  有序列表 202
8.7  字典 203
8.7.1  字典初始化器 204
8.7.2  鍵的類型 204
8.7.3  字典示例 206
8.7.4  Lookup類 209
8.7.5  有序字典 209
8.8  集 210
8.9  性能 212
8.10  不變的集合 213
8.10.1  使用構(gòu)建器和不變的集合 215
8.10.2  不變集合類型和接口 215
8.10.3  使用LINQ和不變的數(shù)組 216
8.11  小結(jié) 216
第9章  LINQ 217
9.1  LINQ概述 217
9.1.1  列表和實體 218
9.1.2  LINQ查詢 220
9.1.3  擴展方法 220
9.1.4  推遲查詢的執(zhí)行 221
9.2  標準的查詢操作符 223
9.2.1  篩選 224
9.2.2  用索引篩選 225
9.2.3  類型篩選 226
9.2.4  復合的from子句 226
9.2.5  排序 227
9.2.6  分組 229
9.2.7  LINQ 查詢中的變量 230
9.2.8  對嵌套的對象分組 231
9.2.9  內(nèi)連接 232
9.2.10  左外連接 235
9.2.11  組連接 236
9.2.12  集操作 239
9.2.13  合并 240
9.2.14  分區(qū) 241
9.2.15  聚合操作符 242
9.2.16  轉(zhuǎn)換操作符 243
9.2.17  生成操作符 245
9.3  并行LINQ 246
9.3.1  并行查詢 246
9.3.2  取消 247
9.4  表達式樹 248
9.5  LINQ提供程序 250
9.6  小結(jié) 251
第10章  錯誤和異常 253
10.1  處理錯誤 253
10.2  預定義的異常類 254
10.3  捕獲異常 255
10.3.1  異常和性能 257
10.3.2  實現(xiàn)多個catch塊 258
10.3.3  捕獲其他代碼中的異常 260
10.3.4  System.Exception屬性 261
10.3.5  異常過濾器 261
10.3.6  重新拋出異常 262
10.3.7  沒有處理異常時發(fā)生的情況 266
10.4  用戶定義的異常類 266
10.4.1  捕獲用戶定義的異常 267
10.4.2  拋出用戶定義的異常 269
10.4.3  定義用戶定義的異常類 272
10.5  調(diào)用者信息 273
10.6  小結(jié) 275
第11章  任務(wù)和異步編程 277
11.1  異步編程的重要性 277
11.2  基于任務(wù)的異步模式 278
11.3  任務(wù) 280
11.3.1  創(chuàng)建任務(wù) 280
11.3.2  調(diào)用異步方法 281
11.3.3  使用Awaiter 282
11.3.4  延續(xù)任務(wù) 282
11.3.5  同步上下文 283
11.3.6  使用多個異步方法 283
11.3.7  使用ValueTasks 284
11.4  錯誤處理 285
11.4.1  異步方法的異常處理 286
15.4.2  多個異步方法的異常處理 286
11.4.3  使用AggregateException
信息 287
11.5  取消異步方法 288
11.6  異步流 289
11.7  異步與Windows應用程序 290
11.7.1  配置await 291
11.7.2  切換到UI線程 292
11.7.3  使用IAsyncOperation 293
11.7.4  避免阻塞情況 293
11.8  小結(jié) 294
第12章  反射、元數(shù)據(jù)和源代碼生成器 295
12.1  在運行期間檢查代碼和動態(tài)
編程 295
12.2  自定義特性 296
12.2.1  編寫自定義特性 296
12.2.2  自定義特性示例:
WhatsNewAttributes 299
12.3  使用反射 301
12.3.1  System.Type類 301
12.3.2  TypeView示例 303
12.3.3  Assembly類 305
12.3.4  完成WhatsNewAttributes
示例 306
12.4  為反射使用動態(tài)語言擴展 309
12.4.1  創(chuàng)建Calculator庫 309
12.4.2  動態(tài)實例化類型 310
12.4.3  用Reflection API調(diào)用成員 310
12.4.4  使用動態(tài)類型調(diào)用成員 311
12.5  ExpandoObject 312
12.6  源代碼生成器 314
12.6.1  Hello, World源代碼生成器 314
12.6.2  使用分部方法的源代碼
生成器 316
12.7  小結(jié) 320
第13章  托管和非托管內(nèi)存 321
13.1  內(nèi)存 321
13.2  后臺內(nèi)存管理 322
13.2.1  值數(shù)據(jù)類型 322
13.2.2  引用數(shù)據(jù)類型 324
13.2.3  垃圾收集 326
13.3  強引用和弱引用 328
13.4  處理非托管的資源 329
13.4.1  析構(gòu)函數(shù)或終結(jié)器 329
13.4.2  IDisposable和IAsyncDisposable
接口 330
13.4.3  using語句和using聲明 331
13.4.4  實現(xiàn)IDisposable接口和析構(gòu)
函數(shù) 332
13.4.5  IDisposable和終結(jié)器的規(guī)則 333
13.5  不安全的代碼 333
13.5.1  用指針直接訪問內(nèi)存 334
13.5.2  用unsafe關(guān)鍵字編寫不安全
的代碼 334
13.5.3  指針的語法 335
13.5.4  將指針強制轉(zhuǎn)換為整數(shù)類型 337
13.5.5  指針類型之間的強制轉(zhuǎn)換 337
13.5.6  void指針 337
13.5.7  指針算術(shù)的運算 338
13.5.8  sizeof運算符 339
13.5.9  結(jié)構(gòu)指針:指針成員訪問
運算符 339
13.5.10  類成員的指針 340
13.5.11  指針示例:PointerPlayground 341
13.5.12  函數(shù)指針 344
13.5.13  使用指針優(yōu)化性能 345
13.6  Span 348
13.6.1  Span引用托管堆 349
13.6.2  Span引用棧 349
13.6.3  Span引用本機堆 350
13.6.4  Span擴展方法 351
13.7  平臺調(diào)用 351
13.7.1  調(diào)用本機Windows API 352
13.7.2  調(diào)用Linux本機API 354
13.7.3  使用庫調(diào)用本機API 356
13.8  小結(jié) 356 第 II 部分  庫
第14章  庫、程序集、包和NuGet 359
14.1  庫的地獄 359
14.2  程序集 361
14.3  創(chuàng)建和使用庫 362
14.3.1  .NET 標準 363
14.3.2  創(chuàng)建.NET標準庫 363
14.3.3  解決方案文件 364
14.3.4  引用項目 364
14.3.5  引用NuGet包 365
14.3.6  NuGet的來源 366
14.4  創(chuàng)建NuGet包 367
14.4.1  NuGet包和命令行 367
14.4.2  支持多個平臺 368
14.4.3  NuGet包與Visual Studio 370
14.5  模塊初始化器 371
14.6  小結(jié) 372
第15章  依賴注入和配置 373
15.1  依賴注入的概念 373
15.2  使用.NET DI容器 374
15.3  使用Host類 376
15.4  服務(wù)的生存期 376
15.4.1  使用單例和臨時服務(wù) 378
15.4.2  使用Scoped服務(wù) 380
15.4.3  使用自定義工廠 383
15.5  使用選項初始化服務(wù) 384
15.6  使用配置文件 385
15.7  .NET應用程序的配置 387
15.7.1  使用IConfiguration 387
15.7.2  讀取強類型的值 388
15.7.3  配置源 388
15.7.4  生產(chǎn)和開發(fā)設(shè)置 389
15.7.5  用戶秘密 390
15.8  Azure App Configuration 391
15.8.1  創(chuàng)建Azure App Configuration 391
15.8.2  在開發(fā)環(huán)境中使用
Azure App Configuration 392
15.8.3  動態(tài)配置 394
15.8.4  使用Azure App Configuration
的生產(chǎn)和準備設(shè)置 395
15.8.5  特性標志 395
15.8.6  使用Azure Key Vault 397
15.9  小結(jié) 398
第16章  診斷和指標 399
16.1  診斷概述 399
16.2  日志 401
16.2.1  配置提供程序 403
16.2.2  過濾 405
16.2.3  配置日志記錄 406
16.2.4  使用OpenTelemetry進行
日志記錄和跟蹤 406
16.2.5  更多日志提供程序 408
16.3  指標 408
16.3.1  EventSource類 409
16.3.2  指標計數(shù)器 409
16.3.3  使用MetricsSampleSource 411
16.3.4  使用.NET CLI監(jiān)控指標 412
16.4  使用Visual Studio App Center
進行分析 413
16.5  Application Insights 416
16.6  小結(jié) 417
第17章  并行編程 419
17.1  概述 420
17.2  Parallel類 421
17.2.1  使用Parallel.For()方法循環(huán) 421
17.2.2  提前中斷Parallel.For() 423
17.2.3  Parallel.For()方法的初始化 424
17.2.4  使用Parallel.ForEach()方法
循環(huán) 425
17.2.5  通過Parallel.Invoke()方法調(diào)用
多個方法 425
17.3  任務(wù) 426
17.3.1  啟動任務(wù) 426
17.3.2  任務(wù)的結(jié)果 429
17.3.3  連續(xù)的任務(wù) 429
17.3.4  任務(wù)層次結(jié)構(gòu) 430
17.3.5  從方法中返回任務(wù) 431
17.3.6  等待任務(wù) 431
17.3.7  ValueTask 431
17.4  取消架構(gòu) 433
17.4.1  Parallel.For()方法的取消 433
17.4.2  任務(wù)的取消 434
17.5  通道 436
17.5.1  創(chuàng)建有界和無界通道 436
17.5.2  寫入通道 437
17.5.3  從通道讀取數(shù)據(jù) 438
17.5.4  通道的異步流 438
17.6  Timer類 439
17.6.1  使用Timer類 439
17.6.2  WinUI DispatcherTimer 439
17.7  線程問題 441
17.7.1  爭用條件 441
17.7.2  死鎖 444
17.8  Interlocked類 445
17.9  Monitor類 446
17.10  SpinLock結(jié)構(gòu) 447
17.11  WaitHandle類 447
17.12  Mutex類 447
17.13  Semaphore類 448
17.14  Events類 450
17.15  Barrier類 453
17.16  ReaderWriterLockSlim類 456
17.17  lock和await 458
17.18  小結(jié) 461
第18章  文件和流 463
18.1  概述 464
18.2  管理文件系統(tǒng) 464
18.2.1  檢查驅(qū)動器信息 464
18.2.2  使用Path類 465
18.2.3  創(chuàng)建文件和文件夾 466
18.2.4  訪問和修改文件屬性 467
18.2.5  使用File執(zhí)行讀寫操作 469
18.3  枚舉文件 470
18.4  使用流 471
18.4.1  使用文件流 472
18.4.2  讀取流 475
18.4.3  寫入流 476
18.4.4  復制流 476
18.4.5  隨機訪問流 477
18.4.6  使用緩存的流 479
18.5  使用讀取器和寫入器 479
18.5.1  StreamReader類 480
18.5.2  StreamWriter類 481
18.5.3  讀寫二進制文件 481
18.6  壓縮文件 482
18.6.1  使用壓縮流 482
18.6.2  使用Brotli 483
18.6.3  壓縮文件 484
18.7  觀察文件的更改 484
18.8  JSON序列化 485
18.8.1  JSON序列化 486
18.8.2  JSON反序列化 488
18.8.3  使用JsonDocument 489
18.8.4  JSON讀取器 490
18.8.5  JSON寫入器 490
18.9  通過Windows運行庫使用
文件和流 491
18.9.1  Windows App編輯器 492
18.9.2  把Windows Runtime類型
映射為.NET類型 494
18.10  小結(jié) 496
第19章  網(wǎng)絡(luò) 497
19.1  概述 497
19.2  使用實用工具類 498
19.2.1  URI 498
19.2.2  IPAddress 499
19.2.3  IPHostEntry 501
19.2.4  DNS 501
19.2.5  配置套接字 502
19.3  使用套接字 503
19.3.1  使用套接字的TCP Echo示例 503
19.3.2  創(chuàng)建偵聽器 505
19.3.3  使用管道進行通信 506
19.3.4  實現(xiàn)接收器 508
19.4  使用TCP類 509
19.4.1  創(chuàng)建TCP偵聽器 510
19.4.2  創(chuàng)建TCP客戶端 512
19.5  使用UDP 513
19.5.1  建立UDP接收器 513
19.5.2  創(chuàng)建UDP發(fā)送器 515
19.5.3  使用多播 517
19.6  使用Web服務(wù)器 518
19.6.1  配置Kestrel 519
19.6.2  Startup 520
19.6.3  HTTP頭 521
19.7  HttpClient類 523
19.7.1  發(fā)出異步的Get請求 524
19.7.2  拋出異常 525
19.7.3  創(chuàng)建HttpRequestMessage 526
19.7.4  傳遞頭 526
19.7.5  訪問內(nèi)容 528
19.7.6  用HttpMessageHandler
自定義請求 528
19.8  HttpClient工廠 530
19.8.1  類型化的客戶端 530
19.8.2  命名的客戶端 530
19.8.3  彈性HTTP請求 531
19.9  小結(jié) 532
第20章  安全性 535
20.1  安全性的重要方面 535
20.2  驗證用戶信息 536
20.2.1  使用Microsoft標識平臺 536
20.2.2  使用Microsoft.Identity.Client 536
20.2.3  在Web應用程序中使用身份
驗證和授權(quán) 540
20.3  加密數(shù)據(jù) 542
20.3.1  獲得X.509證書 545
20.3.2  創(chuàng)建和驗證簽名 547
20.3.3  實現(xiàn)安全的數(shù)據(jù)交換 549
20.4  確保Web安全 552
20.4.1  編碼 552
20.4.2  防范SQL注入 554
20.4.3  防范跨站點請求偽造 555
20.5  小結(jié) 557
第21章  Entity Framework Core 559
21.1  Entity Framework簡介 560
21.1.1  數(shù)據(jù)庫提供程序 560
21.1.2  創(chuàng)建Azure SQL數(shù)據(jù)庫 560
21.1.3  創(chuàng)建模型 561
21.1.4  創(chuàng)建上下文 562
21.1.5  約定、注釋和流式API 563
21.1.6  使用DI提供程序配置上下文 563
21.1.7  創(chuàng)建數(shù)據(jù)庫 564
21.1.8  刪除數(shù)據(jù)庫 565
21.1.9  寫入數(shù)據(jù)庫 565
21.1.10  讀取數(shù)據(jù)庫 566
21.1.11  更新類 567
21.1.12  更新記錄 567
21.1.13  刪除記錄 568
21.1.14  日志和指標 568
21.2  創(chuàng)建模型 569
21.2.1  創(chuàng)建關(guān)系 569
21.2.2  使用流式API來映射定義 570
21.2.3  使用自包含類型的配置 571
21.2.4  映射到字段 573
21.2.5  使用影子屬性 574
21.3  在數(shù)據(jù)庫中搭建模型 576
21.4  遷移 577
21.4.1  實現(xiàn)
IDesignTimeDbContextFactory 577
21.4.2  創(chuàng)建遷移 578
21.4.3  以編程方式應用遷移 580
21.4.4  應用遷移的其他方法 581
21.5  使用查詢 581
21.5.1  基本查詢 582
21.5.2  異步流 584
21.5.3  原始SQL查詢 584
21.5.4  已編譯查詢 584
21.5.5  全局查詢過濾器 586
21.5.6  EF.Functions 586
21.6  加載相關(guān)數(shù)據(jù) 587
21.6.1  預先加載相關(guān)數(shù)據(jù) 587
21.6.2  使用帶過濾條件的Include()的
預先加載 588
21.6.3  顯式加載相關(guān)數(shù)據(jù) 588
21.6.4  延遲加載 590
21.7  使用關(guān)系 591
21.7.1  多對多關(guān)系 591
21.7.2  表的拆分 594
21.7.3  擁有的實體 595
21.7.4  每個層次結(jié)構(gòu)一張表 597
21.8  保存數(shù)據(jù) 599
21.8.1  用關(guān)系添加對象 600
21.8.2  對象的跟蹤 601
21.8.3  更新對象 602
21.8.4  更新未跟蹤的對象 603
21.9  沖突的處理 604
21.9.1  最后一個更改獲勝 604
21.9.2  第一個更改獲勝 606
21.10  使用事務(wù) 608
21.10.1  使用隱式的事務(wù) 608
21.10.2  創(chuàng)建顯式的事務(wù) 609
21.10.3  使用環(huán)境事務(wù) 610
21.11  使用Azure Cosmos DB 611
21.12  小結(jié) 616
第22章  本地化 617
22.1  全球市場 617
22.2  System.Globalization名稱空間 618
22.2.1  Unicode問題 618
22.2.2  區(qū)域性和區(qū)域 619
22.2.3  使用區(qū)域性 622
22.2.4  排序 627
22.3  資源 629
22.3.1  資源讀取器和寫入器 629
22.3.2  通過ResourceManager使用
資源文件 630
22.4  使用ASP.NET Core本地化 631
22.4.1  注冊本地化服務(wù) 631
22.4.2  配置中間件 631
22.4.3  ASP.NET Core區(qū)域性提供
程序 632
22.4.4  在ASP.NET Core中使用
區(qū)域性 633
22.4.5  在ASP.NET Core中使用
資源 634
22.4.6  使用數(shù)據(jù)注釋進行本地化 635
22.5  本地化WinUI 636
22.5.1  使用MRT ResourceLoader 637
22.5.2  使用MRT ResourceManager 637
22.5.3  使用ResourceContext修改
資源 638
22.6  小結(jié) 639
第23章  測試 641
23.1  概述 641
23.2  單元測試 642
23.2.1  創(chuàng)建單元測試 642
23.2.2  運行單元測試 643
23.2.3  實現(xiàn)復雜的方法 644
23.2.4  預期異常 645
23.2.5  測試全部代碼路徑 645
23.2.6  代碼覆蓋率 646
23.2.7  外部依賴 647
23.3  使用模擬庫 650
23.4  ASP.NET Core集成測試 654
23.5  小結(jié) 655
第 III 部分  Web應用程序和服務(wù)
第24章  ASP.NET Core 659
24.1  Web技術(shù) 659
24.1.1  HTML 660
24.1.2  CSS 660
24.1.3  JavaScript和TypeScript 660
24.1.4  腳本庫 661
24.1.5  WebAssembly 661
24.2  創(chuàng)建ASP.NET Core Web項目 661
24.2.1  宿主服務(wù)器 663
24.2.2  啟動 663
24.2.3  示例應用程序 665
24.3  添加客戶端內(nèi)容 666
24.4  創(chuàng)建自定義中間件 668
24.5  端點路由 670
24.5.1  定義路由 670
24.5.2  路由約束 671
24.6  請求和響應 672
24.6.1  請求頭 673
24.6.2  查詢參數(shù) 675
24.6.3  表單數(shù)據(jù) 675
24.6.4  cookie 676
24.6.5  發(fā)送JSON 677
24.7  會話狀態(tài) 677
24.8  健康檢查 679
24.9  部署 682
24.10  小結(jié) 683
第25章  服務(wù) 685
25.1  理解今天的服務(wù) 685
25.2  使用ASP.NET Core創(chuàng)建REST
服務(wù) 686
25.2.1  定義模型 687
25.2.2  創(chuàng)建服務(wù) 687
25.2.3  創(chuàng)建控制器 690
25.2.4  測試REST API 693
25.2.5  REST結(jié)果和狀態(tài)碼 694
25.3  創(chuàng)建.NET客戶端 694
25.3.1  發(fā)送GET請求 696
25.3.2  發(fā)送POST請求 698
25.3.3  發(fā)送PUT請求 698
25.3.4  發(fā)送DELETE請求 699
25.4  使用EF Core和服務(wù) 700
25.5  使用Azure AD B2C進行身份
驗證和授權(quán) 703
25.5.1  創(chuàng)建和配置服務(wù) 706
25.5.2  在客戶端應用程序中添加
身份驗證 707
25.6  通過gRPC實現(xiàn)和使用服務(wù) 709
25.6.1  創(chuàng)建一個gRPC項目 709
25.6.2  使用Protobuf定義契約 710
25.6.3  實現(xiàn)一個gRPC服務(wù) 712
25.6.4  實現(xiàn)一個gRPC客戶端 713
25.6.5  gRPC的流傳輸 715
25.7  使用Azure Functions 717
25.7.1  創(chuàng)建一個Azure Functions
項目 717
25.7.2  添加HTTP Trigger函數(shù) 719
25.8  更多Azure服務(wù) 720
25.9  小結(jié) 720
第26章  Razor頁面和MVC 723
26.1  為Razor頁面和MVC建立
服務(wù) 723
26.1.1  創(chuàng)建Razor頁面項目 724
26.1.2  理解Razor語法 725
26.2  Razor頁面 726
26.2.1  布局 727
26.2.2  在視圖間傳遞數(shù)據(jù) 728
26.2.3  渲染節(jié) 728
26.2.4  帶參數(shù)的路由 729
26.2.5  Razor庫和區(qū)域 731
26.2.6  注入服務(wù) 732
26.2.7  返回結(jié)果 732
26.2.8  模型綁定 733
26.2.9  使用HTML Helper 733
26.2.10  使用Tag Helper 735
26.2.11  驗證用戶輸入 736
26.2.12  創(chuàng)建自定義Tag Helper 736
26.2.13  用Tag Helper創(chuàng)建元素 738
26.2.14  視圖組件 741
26.3  ASP.NET Core MVC 744
26.3.1  啟動MVC 744
26.3.2  MVC路由 745
26.3.3  控制器 745
26.3.4  Razor視圖 746
26.3.5  標識UI 748
26.4  小結(jié) 749
第27章  Blazor 751
27.1  Blazor Server和
Blazor Assembly 751
27.1.1  Blazor Server 752
27.1.2  WebAssembly 752
27.1.3  BlazorWebAssembly 753
27.2  創(chuàng)建Blazor Server Web
應用程序 753
27.2.1  啟動Blazor Server 754
27.2.2  Blazor布局 755
27.2.3  導航 756
27.2.4  Counter組件 757
27.2.5  FetchData組件 758
27.3  BlazorWebAssembly 759
27.3.1  啟動BlazorWebAssembly 760
27.3.2  在BlazorWebAssembly中
注入HttpClient 761
27.3.3  使用漸進式Web應用程序 762
27.4  Razor組件 763
27.4.1  理解組件的參數(shù) 763
27.4.2  注入服務(wù) 764
27.4.3  使用事件回調(diào) 765
27.4.4  通過代碼更新UI 767
27.4.5  雙向綁定 767
27.4.6  級聯(lián)參數(shù) 768
27.4.7  使用模板化組件 769
27.4.8  使用內(nèi)置組件 770
27.5  小結(jié) 771
第28章  SignalR 773
28.1  概述 773
28.2  使用SignalR創(chuàng)建一個簡單的
聊天 774
28.2.1  創(chuàng)建中心 774
28.2.2  使用HTML和JavaScript創(chuàng)建
客戶端 776
28.2.3  創(chuàng)建SignalR .NET客戶端 778
28.3  連接分組 781
28.3.1  使用組擴展中心 781
28.3.2  使用組擴展Windows客戶端
應用程序 783
28.4  使用SignalR進行流傳輸 785
28.5  小結(jié) 787
第 IV 部分  應用程序
第29章  Windows應用程序 791
29.1  Windows應用程序簡介 791
29.1.1  Windows運行庫 793
29.1.2  Hello, Windows 793
29.1.3  應用程序清單文件 794
29.1.4  應用程序啟動 795
29.1.5  主窗口 796
29.2  XAML 797
29.2.1  將元素映射到類 798
29.2.2  通過XAML使用自定義的
.NET類 799
29.2.3  將屬性用作特性 800
29.2.4  將屬性用作元素 800
29.2.5  依賴屬性 801
29.2.6  創(chuàng)建依賴屬性 802
29.2.7  值變更回調(diào)和事件 802
29.2.8  路由事件 803
29.2.9  附加屬性 804
29.2.10  標記擴展 807
29.2.11  自定義標記擴展 807
29.3  使用控件 808
29.3.1  派生自FrameworkElement的
UI元素 809
29.3.2  Control派生的控件 811
29.3.3  范圍控件 817
29.3.4  內(nèi)容控件 818
29.3.5  按鈕 819
29.3.6  項控件 821
29.3.7  Flyout控件 821
29.4  使用數(shù)據(jù)綁定 821
29.4.1  用INotifyPropertyChanged
更改通知 822
29.4.2  創(chuàng)建圖書列表 824
29.4.3  列表綁定 824
29.4.4  把事件綁定到方法 825
29.4.5  使用數(shù)據(jù)模板和數(shù)據(jù)模板
選擇器 826
29.4.6  顯示列表和詳細信息 827
29.4.7  綁定簡單對象 828
29.4.8  值的轉(zhuǎn)換 829
29.5  實現(xiàn)導航 830
29.5.1  Hub 831
29.5.2  TabView 832
29.5.3  NavigationView 833
29.6  實現(xiàn)布局面板 835
29.6.1  StackPanel 836
29.6.2  Grid 836
29.6.3  VariableSizedWrapGrid 837
29.6.4  RelativePanel 839
29.6.5  自適應觸發(fā)器 840
29.6.6  延遲加載 842
29.7  小結(jié) 843
第30章  模式和XAML應用程序 845
30.1  使用 MVVM的原因 845
30.2  定義MVVM模式 846
30.3  示例解決方案 847
30.4  模型 848
30.5  服務(wù) 850
30.6  視圖模型 852
30.6.1  IEditableObject 854
30.6.2  視圖模型的具體實現(xiàn) 855
30.6.3  命令 857
30.6.4  服務(wù)、ViewModel和依賴
注入 858
30.7  視圖 859
30.7.1  從視圖模型中打開對話框 861
30.7.2  頁面之間的導航 862
30.8  使用事件傳遞消息 865
30.9  小結(jié) 866
第31章  樣式化Windows應用程序 867
31.1  樣式設(shè)置 867
31.2  形狀 868
31.3  幾何圖形 870
31.3.1  使用段的幾何圖形 870
31.3.2  使用路徑標記的幾何圖形 871
31.4  變換 872
31.4.1  縮放 872
31.4.2  平移 872
31.4.3  旋轉(zhuǎn) 873
31.4.4  傾斜 873
31.4.5  組合變換和復合變換 873
31.4.6  使用矩陣的變換 873
31.5  筆刷 874
31.5.1  SolidColorBrush 874
31.5.2  漸變筆刷 875
31.5.3  ImageBrush 875
31.5.4  AcrylicBrush 876
31.6  樣式和資源 876
31.6.1  樣式 877
31.6.2  資源層次結(jié)構(gòu) 878
31.6.3  主題資源 879
31.7  模板 881
31.7.1  控件模板 881
31.7.2  樣式化ListView 883
31.7.3  項容器的樣式 885
31.7.4  項面板 886
31.8  動畫 887
31.8.1  時間軸 887
31.8.2  緩動函數(shù) 888
31.8.3  關(guān)鍵幀動畫 893
31.8.4  過渡 894
31.9  可視化狀態(tài)管理器 896
31.9.1  用控件模板預定義狀態(tài) 897
31.9.2  定義自定義狀態(tài) 898
31.9.3  設(shè)置自定義的狀態(tài) 899
31.10  小結(jié) 899
 
 
 

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號