第Ⅰ部分 C# 語 言
第1章 .NET體係結構 2
1.1 C#與.NET的關係 2
1.2 公共語言運行庫 3
1.2.1 平颱無關性 3
1.2.2 提高性能 3
1.2.3 語言的互操作性 4
1.3 中間語言 6
1.3.1 麵嚮對象和接口的支持 6
1.3.2 不同的值類型和引用類型 7
1.3.3 強數據類型化 7
1.3.4 通過異常處理錯誤 12
1.3.5 特性的使用 12
1.4 程序集 12
1.4.1 私有程序集 13
1.4.2 共享程序集 13
1.4.3 反射 14
1.4.4 並行編程 14
1.4.5 異步編程 14
1.5 .NET Framework類 15
1.6 名稱空間 15
1.7 用C#創建.NET應用程序 16
1.7.1 創建ASP.NET應用程序 16
1.7.2 使用WPF 17
1.7.3 Windows Store應用程序 18
1.7.4 Windows服務 18
1.7.5 WCF 18
1.7.6 Windows WF 19
1.8 C#在.NET企業體係結構中的作用 19
1.9 小結 20
第2章 核心C# 22
2.1 C#基礎 23
2.2 第一個C#程序 23
2.2.1 代碼 23
2.2.2 編譯並運行程序 23
2.2.3 詳細介紹 24
2.3 變量 26
2.3.1 變量的初始化 26
2.3.2 類型推斷 27
2.3.3 變量的作用域 28
2.3.4 常量 30
2.4 預定義數據類型 31
2.4.1 值類型和引用類型 31
2.4.2 CTS類型 32
2.4.3 預定義的值類型 32
2.4.4 預定義的引用類型 35
2.5 流控製 37
2.5.1 條件語句 37
2.5.2 循環 40
2.5.3 跳轉語句 43
2.6 枚舉 44
2.7 名稱空間 46
2.7.1 using語句 47
2.7.2 名稱空間的彆名 48
2.8 Main()方法 48
2.8.1 多個Main()方法 49
2.8.2 給Main()方法傳遞參數 50
2.9 有關編譯C#文件的更多內容 50
2.10 控製颱I/O 52
2.11 使用注釋 54
2.11.1 源文件中的內部注釋 54
2.11.2 XML文檔 54
2.12 C#預處理器指令 56
2.12.1 #define和#undef 57
2.12.2 #if、#elif、#else和#endif 57
2.12.3 #warning和# error 58
2.12.4 #region和#endregion 58
2.12.5 #line 59
2.12.6 #pragma 59
2.13 C#編程規則 59
2.13.1 關於標識符的規則 59
2.13.2 用法約定 60
2.14 小結 66
第3章 對象和類型 67
3.1 創建及使用類 67
3.2 類和結構 68
3.3 類 69
3.3.1 數據成員 69
3.3.2 函數成員 69
3.3.3 隻讀字段 81
3.4 匿名類型 82
3.5 結構 82
3.5.1 結構是值類型 84
3.5.2 結構和繼承 84
3.5.3 結構的構造函數 85
3.6 弱引用 85
3.7 部分類 86
3.8 靜態類 87
3.9 Object類 88
3.9.1 System.Object()方法 88
3.9.2 ToString()方法 89
3.10 擴展方法 90
3.11 小結 91
第4章 繼承 92
4.1 繼承 92
4.2 繼承的類型 92
4.2.1 實現繼承和接口繼承 92
4.2.2 多重繼承 93
4.2.3 結構和類 93
4.3 實現繼承 93
4.3.1 虛方法 94
4.3.2 隱藏方法 95
4.3.3 調用函數的基類版本 96
4.3.4 抽象類和抽象函數 97
4.3.5 密封類和密封方法 97
4.3.6 派生類的構造函數 98
4.4 修飾符 102
4.4.1 可見性修飾符 103
4.4.2 其他修飾符 103
4.5 接口 104
4.5.1 定義和實現接口 105
4.5.2 派生的接口 108
4.6 小結 109
第5章 泛型 110
5.1 泛型概述 110
5.1.1 性能 111
5.1.2 類型安全 112
5.1.3 二進製代碼的重用 112
5.1.4 代碼的擴展 113
5.1.5 命名約定 113
5.2 創建泛型類 113
5.3 泛型類的功能 117
5.3.1 默認值 118
5.3.2 約束 118
5.3.3 繼承 120
5.3.4 靜態成員 121
5.4 泛型接口 122
5.4.1 協變和抗變 122
5.4.2 泛型接口的協變 123
5.4.3 泛型接口的抗變 125
5.5 泛型結構 125
5.6 泛型方法 128
5.6.1 泛型方法示例 128
5.6.2 帶約束的泛型方法 129
5.6.3 帶委托的泛型方法 130
5.6.4 泛型方法規範 131
5.7 小結 132
第6章 數組 133
6.1 同一類型和不同類型的多個對象 133
6.2 簡單數組 134
6.2.1 數組的聲明 134
6.2.2 數組的初始化 134
6.2.3 訪問數組元素 135
6.2.4 使用引用類型 136
6.3 多維數組 137
6.4 鋸齒數組 138
6.5 Array類 139
6.5.1 創建數組 139
6.5.2 復製數組 140
6.5.3 排序 141
6.6 數組作為參數 144
6.6.1 數組協變 144
6.6.2 ArraySegment<T> 144
6.7 枚舉 145
6.7.1 IEnumerator接口 146
6.7.2 foreach語句 146
6.7.3 yield語句 147
6.8 元組 152
6.9 結構比較 152
6.10 小結 155
第7章 運算符和類型強製轉換 156
7.1 運算符和類型轉換 156
7.2 運算符 156
7.2.1 運算符的簡化操作 158
7.2.2 運算符的優先級 162
7.3 類型的安全性 163
7.3.1 類型轉換 163
7.3.2 裝箱和拆箱 167
7.4 比較對象的相等性 168
7.4.1 比較引用類型的相等性 168
7.4.2 比較值類型的相等性 169
7.5 運算符重載 169
7.5.1 運算符的工作方式 170
7.5.2 運算符重載的示例:Vector結構 171
7.6 用戶定義的類型強製轉換 178
7.6.1 實現用戶定義的類型強製轉換 179
7.6.2 多重類型強製轉換 185
7.7 小結 188
第8章 委托、lambda錶達式和事件 189
8.1 引用方法 189
8.2 委托 190
8.2.1 聲明委托 190
8.2.2 使用委托 191
8.2.3 簡單的委托示例 194
8.2.4 Action<T>和Func<T>委托 196
8.2.5 BubbleSorter示例 197
8.2.6 多播委托 199
8.2.7 匿名方法 203
8.3 lambda錶達式 204
8.3.1 參數 204
8.3.2 多行代碼 205
8.3.3 閉包 205
8.3.4 使用foreach語句的閉包 206
8.4 事件 207
8.4.1 事件發布程序 207
8.4.2 事件偵聽器 209
8.4.3 弱事件 210
8.5 小結 214
第9章 字符串和正則錶達式 215
9.1 System.String類 216
9.1.1 創建字符串 217
9.1.2 StringBuilder成員 220
9.1.3 格式字符串 221
9.2 正則錶達式 227
9.2.1 正則錶達式概述 227
9.2.2 RegularExpressionsPlayaround示例 228
9.2.3 顯示結果 230
9.2.4 匹配、組閤和捕獲 232
9.3 小結 233
第10章 集閤 234
10.1 概述 235
10.2 集閤接口和類型 235
10.3 列錶 236
10.3.1 創建列錶 238
10.3.2 隻讀集閤 247
10.4 隊列 247
10.5 棧 251
10.6 鏈錶 252
10.7 有序列錶 258
10.8 字典 259
10.8.1 鍵的類型 260
10.8.2 字典示例 261
10.8.3 Lookup類 265
10.8.4 有序字典 265
10.9 集 266
10.10 可觀察的集閤 268
10.11 位數組 269
10.11.1 BitArray類 270
10.11.2 BitVector32結構 272
10.12 不變的集閤 274
10.13 並發集閤 276
10.13.1 創建管道 277
10.13.2 使用BlockingCollection 279
10.13.3 使用ConcurrentDictionary 281
10.13.4 完成管道 282
10.14 性能 284
10.15 小結 285
第11章 LINQ 286
11.1 LINQ概述 286
11.1.1 列錶和實體 287
11.1.2 LINQ查詢 290
11.1.3 擴展方法 291
11.1.4 推遲查詢的執行 292
11.2 標準的查詢操作符 294
11.2.1 篩選 296
11.2.2 用索引篩選 296
11.2.3 類型篩選 297
11.2.4 復閤的from子句 297
11.2.5 排序 298
11.2.6 分組 299
11.2.7 對嵌套的對象分組 300
11.2.8 內連接 301
11.2.9 左外連接 303
11.2.10 組連接 303
11.2.11 集閤操作 306
11.2.12 閤並 308
11.2.13 分區 309
11.2.14 聚閤操作符 310
11.2.15 轉換操作符 311
11.2.16 生成操作符 312
11.3 並行LINQ 313
11.3.1 並行查詢 313
11.3.2 分區器 314
11.3.3 取消 314
11.4 錶達式樹 315
11.5 LINQ提供程序 318
11.6 小結 319
第12章 動態語言擴展 320
12.1 DLR 320
12.2 dynamic類型 321
12.3 包含DLR ScriptRuntime 325
12.4 DynamicObject和ExpandoObject 328
12.4.1 DynamicObject 328
12.4.2 ExpandoObject 330
12.5 小結 331
第13章 異步編程 332
13.1 異步編程的重要性 332
13.2 異步模式 333
13.2.1 同步調用 340
13.2.2 異步模式 341
13.2.3 基於事件的異步模式 342
13.2.4 基於任務的異步模式 343
13.3 異步編程的基礎 345
13.3.1 創建任務 345
13.3.2 調用異步方法 346
13.3.3 延續任務 346
13.3.4 同步上下文 347
13.3.5 使用多個異步方法 347
13.3.6 轉換異步模式 348
13.4 錯誤處理 349
13.4.1 異步方法的異常處理 350
13.4.2 多個異步方法的異常處理 350
13.4.3 使用AggregateException信息 351
13.5 取消 352
13.5.1 開始取消任務 352
13.5.2 使用框架特性取消任務 352
13.5.3 取消自定義任務 353
13.6 小結 353
第14章 內存管理和指針 354
14.1 內存管理 354
14.2 後颱內存管理 354
14.2.1 值數據類型 355
14.2.2 引用數據類型 356
14.2.3 垃圾迴收 358
14.3 釋放非托管的資源 360
14.3.1 析構函數 360
14.3.2 IDisposable接口 361
14.3.3 實現IDisposable接口和析構函數 362
14.4 不安全的代碼 364
14.4.1 用指針直接訪問內存 364
14.4.2 指針示例:PointerPlayground 373
14.4.3 使用指針優化性能 377
14.5 小結 380
第15章 反射 381
15.1 在運行期間處理和檢查代碼 381
15.2 自定義特性 382
15.2.1 編寫自定義特性 382
15.2.2 自定義特性示例:WhatsNewAttributes 386
15.3 反射 388
15.3.1 System.Type類 388
15.3.2 TypeView示例 391
15.3.3 Assembly類 393
15.3.4 完成WhatsNewAttributes示例 394
15.4 小結 397
第16章 錯誤和異常 398
16.1 簡介 398
16.2 異常類 399
16.3 捕獲異常 400
16.3.1 實現多個catch塊 402
16.3.2 在其他代碼中捕獲異常 406
16.3.3 System.Exception屬性 406
16.3.4 沒有處理異常時所發生的情況 406
16.3.5 嵌套的try塊 407
16.4 用戶定義的異常類 409
16.4.1 捕獲用戶定義的異常 410
16.4.2 拋齣用戶定義的異常 411
16.4.3 定義用戶定義的異常類 414
16.5 調用者信息 416
16.6 小結 417
第Ⅱ部分 Visual Studio
第17章 Visual Studio 2013 419
17.1 使用Visual Studio 2013 419
17.1.1 項目文件的改進 421
17.1.2 Visual Studio的版本 422
17.1.3 Visual Studio設置 423
17.2 創建項目 423
17.2.1 麵嚮多個版本的.NET Framework 424
17.2.2 選擇項目類型 426
17.3 瀏覽並編寫項目 429
17.3.1 Solution Explorer 429
17.3.2 使用代碼編輯器 435
17.3.3 學習和理解其他窗口 437
17.3.4 排列窗口 441
17.4 構建項目 441
17.4.1 構建、編譯和生成 441
17.4.2 調試版本和發布版本 442
17.4.3 選擇配置 443
17.4.4 編輯配置 444
17.5 調試代碼 445
17.5.1 設置斷點 445
17.5.2 使用數據提示和調試器可視化工具 446
17.5.3 監視和修改變量 447
17.5.4 異常 448
17.5.5 多綫程 449
17.5.6 IntelliTrace 449
17.6 重構工具 450
17.7 體係結構工具 451
17.7.1 依賴項關係圖 452
17.7.2 層關係圖 453
17.8 分析應用程序 454
17.8.1 代碼地圖 454
17.8.2 序列圖 454
17.8.3 探查器 455
17.8.4 Concurrency Visualizer 457
17.8.5 Code Analysis 458
17.8.6 Code Metrics 459
17.9 單元測試 459
17.9.1 創建單元測試 459
17.9.2 運行單元測試 460
17.9.3 預期異常 462
17.9.4 測試全部代碼路徑 462
17.9.5 外部依賴 463
17.9.6 Fakes Framework 466
17.10 Windows Store應用程序、WCF、WF等 467
17.10.1 使用Visual Studio 生成WCF應用程序 467
17.10.2 使用Visual Studio 生成WF應用程序 468
17.10.3 使用Visual Studio 2013生成Windows Store應用程序 469
17.11 小結 470
第18章 部署 471
18.1 部署是應用程序生命周期的一部分 471
18.2 部署的規劃 472
18.2.1 部署選項 472
18.2.2 部署要求 472
18.2.3 部署.NET運行庫 473
18.3 傳統的部署選項 473
18.3.1 xcopy部署 474
18.3.2 xcopy和Web應用程序 475
18.3.3 Windows Installer 475
18.4 ClickOnce 475
18.4.1 ClickOnce操作 476
18.4.2 發布ClickOnce應用程序 476
18.4.3 ClickOnce設置 477
18.4.4 ClickOnce文件的應用程序緩存 479
18.4.5 應用程序的安裝 479
18.4.6 ClickOnce部署API 480
18.5 Web部署 481
18.5.1 Web應用程序 481
18.5.2 配置文件 482
18.5.3 創建Web Deploy包 482
18.6 Windows Store應用程序 483
18.6.1 創建應用程序包 484
18.6.2 Windows App
Certification Kit 485
18.6.3 旁加載 486
18.6.4 Windows部署API 486
18.7 小結 488
第Ⅲ部分 基 礎
第19章 程序集 490
19.1 程序集的含義 490
19.1.1 程序集的功能 491
19.1.2 程序集的結構 492
19.1.3 程序集清單 492
19.1.4 名稱空間、程序集和組件 493
19.1.5 私有程序集和共享程序集 493
19.1.6 附屬程序集 493
19.1.7 查看程序集 493
19.2 構建程序集 494
19.2.1 創建模塊和程序集 494
19.2.2 程序集的特性 495
19.2.3 創建和動態加載程序集 497
19.3 應用程序域 500
19.4 共享程序集 504
19.4.1 強名 504
19.4.2 使用強名獲得完整性 505
19.4.3 全局程序集緩存 506
19.4.4 創建共享程序集 506
19.4.5 創建強名 507
19.4.6 安裝共享程序集 508
19.4.7 使用共享程序集 508
19.4.8 程序集的延遲簽名 509
19.4.9 引用 510
19.4.10 本機映像生成器 511
19.5 配置.NET應用程序 512
19.5.1 配置類彆 512
19.5.2 綁定程序集 513
19.6 版本問題 514
19.6.1 版本號 515
19.6.2 通過編程方式獲取版本 515
19.6.3 綁定到程序集版本 516
19.6.4 發行者策略文件 517
19.6.5 運行庫的版本 518
19.7 在不同的技術之間共享程序集 519
19.7.1 共享源代碼 519
19.7.2 可移植類庫 520
19.8 小結 521
第20章 診斷 522
20.1 診斷概述 522
20.2 代碼協定 523
20.2.1 前提條件 524
20.2.2 後置條件 525
20.2.3 不變量 526
20.2.4 純粹性 527
20.2.5 接口的協定 527
20.2.6 簡寫 528
20.2.7 協定和遺留代碼 529
20.3 跟蹤 529
20.3.1 跟蹤源 530
20.3.2 跟蹤開關 532
20.3.3 跟蹤偵聽器 532
20.3.4 篩選器 534
20.3.5 相關性 535
20.3.6 使用ETW進行跟蹤 539
20.3.7 使用EventSource 539
20.3.8 使用EventSource進行高級跟蹤 541
20.4 事件日誌 543
20.4.1 事件日誌體係結構 543
20.4.2 事件日誌類 544
20.4.3 創建事件源 546
20.4.4 寫入事件日誌 546
20.4.5 資源文件 547
20.5 性能監視 551
20.5.1 性能監視類 551
20.5.2 性能計數器生成器 551
20.5.3 添加PerformanceCounter組件 554
20.5.4 perfmon.exe 556
20.6 小結 557
第21章 任務、綫程和同步 558
21.1 概述 558
21.2 Parallel類 560
21.2.1 用Parallel.For()方法循環 560
21.2.2 使用Parallel.ForEach()方法循環 563
21.2.3 通過Parallel.Invoke()方法調用多個方法 564
21.3 任務 564
21.3.1 啓動任務 565
21.3.2 Future——任務的結果 567
21.3.3 連續的任務 568
21.3.4 任務層次結構 569
21.4 取消架構 570
21.4.1 Parallel.For()方法的取消 570
21.4.2 任務的取消 571
21.5 綫程池 572
21.6 Thread類 574
21.6.1 給綫程傳遞數據 575
21.6.2 後颱綫程 576
21.6.3 綫程的優先級 577
21.6.4 控製綫程 578
21.7 綫程問題 578
21.7.1 爭用條件 578
21.7.2 死鎖 581
21.8 同步 583
21.8.1 lock語句和綫程安全 583
21.8.2 Interlocked類 588
21.8.3 Monitor類 589
21.8.4 SpinLock結構 590
21.8.5 WaitHandle基類 591
21.8.6 Mutex類 591
21.8.7 Semaphore類 593
21.8.8 Events類 595
21.8.9 Barrier類 598
21.8.10 ReaderWriterLockSlim類 600
21.9 Timer類 602
21.10 數據流 604
21.10.1 使用動作塊 604
21.10.2 源和目標數據塊 605
21.10.3 連接塊 606
21.11 小結 608
第22章 安全性 609
22.1 概述 609
22.2 身份驗證和授權 610
22.2.1 標識和Principal 610
22.2.2 角色 611
22.2.3 聲明基於角色的安全性 612
22.2.4 聲稱 613
22.2.5 客戶端應用程序服務 614
22.3 加密 619
22.3.1 簽名 621
22.3.2 交換密鑰和安全傳輸 622
22.4 資源的訪問控製 625
22.5 代碼訪問安全性 628
22.5.1 第2級安全透明性 628
22.5.2 權限 629
22.6 使用證書發布代碼 634
22.7 小結 635
第23章 互操作 636
23.1 .NET和COM技術 636
23.1.1 元數據 637
23.1.2 釋放內存 638
23.1.3 接口 638
23.1.4 方法綁定 639
23.1.5 數據類型 640
23.1.6 注冊 640
23.1.7 綫程 640
23.1.8 錯誤處理 641
23.1.9 事件 642
23.1.10 封送 642
23.2 在.NET客戶端中使用COM組件 643
23.2.1 創建COM組件 643
23.2.2 創建運行庫可調用包裝 649
23.2.3 使用RCW 650
23.2.4 通過動態語言擴展使用COM服務 651
23.2.5 綫程問題 652
23.2.6 添加連接點 652
23.3 在COM客戶端中使用.NET組件 654
23.3.1 COM可調用包裝 655
23.3.2 創建.NET組件 655
23.3.3 創建類型庫 656
23.3.4 COM互操作特性 658
23.3.5 COM注冊 660
23.3.6 創建COM客戶端應用程序 661
23.3.7 添加連接點 662
23.3.8 使用sink對象創建客戶端 663
23.4 平颱調用 665
23.5 小結 669
第24章 文件和注冊錶操作 670
24.1 文件和注冊錶 670
24.2 管理文件係統 671
24.2.1 錶示文件和文件夾的.NET類 672
24.2.2 Path類 674
24.2.3 FileProperties示例 674
24.3 移動、復製和刪除文件 679
24.3.1 FilePropertiesAndMovement示例 679
24.3.2 FilePropertiesAndMovement示例的代碼 680
24.4 讀寫文件 682
24.4.1 讀取文件 683
24.4.2 寫入文件 684
24.4.3 流 685
24.4.4 緩存的流 687
24.4.5 使用FileStream類讀寫二進製文件 687
24.4.6 讀寫文本文件 692
24.5 映射內存的文件 698
24.6 讀取驅動器信息 699
24.7 文件的安全性 701
24.7.1 從文件中讀取ACL 701
24.7.2 從目錄中讀取ACL 702
24.7.3 添加和刪除文件中的ACL項 704
24.8 讀寫注冊錶 705
24.8.1 注冊錶 706
24.8.2 .NET注冊錶類 708
24.9 讀寫獨立存儲器 710
24.10 小結 714
第25章 事務處理 715
25.1 簡介 715
25.2 概述 716
25.2.1 事務處理階段 716
25.2.2 ACID屬性 717
25.3 數據庫和實體類 717
25.4 傳統的事務 719
25.4.1 ADO.NET事務 719
25.4.2 System.EnterpriseServices 721
25.5 System.Transactions 722
25.5.1 可提交的事務 723
25.5.2 事務處理的升級 725
25.5.3 依賴事務 727
25.5.4 環境事務 729
25.6 隔離級彆 736
25.7 自定義資源管理器 737
25.8 文件係統事務 743
25.9 小結 747
第26章 網絡 748
26.1 網絡 748
26.2 HttpClient類 749
26.2.1 異步調用Web服務 749
26.2.2 標題 750
26.2.3 HttpContent 752
26.2.4 HttpMessageHandler 752
26.3 把輸齣結果顯示為HTML頁麵 753
26.3.1 從應用程序中進行簡單的Web瀏覽 754
26.3.2 啓動Internet Explorer實例 755
26.3.3 給應用程序提供更多IE類型的功能 756
26.3.4 使用WebBrowser控件打印 761
26.3.5 顯示所請求頁麵的代碼 761
26.3.6 WebRequest類和WebResponse類的層次結構 763
26.4 實用工具類 763
26.4.1 URI 763
26.4.2 IP地址和DNS名稱 764
26.5 較低層的協議 766
26.5.1 使用SmtpClient 767
26.5.2 使用TCP類 769
26.5.3 TcpSend和TcpReceive示例 769
26.5.4 TCP和UDP 771
26.5.5 UDP類 771
26.5.6 Socket類 772
26.5.7 WebSocket 776
26.6 小結 779
第27章 Windows服務 780
27.1 Windows服務 780
27.2 Windows服務的體係結構 781
27.2.1 服務程序 782
27.2.2 服務控製程序 783
27.2.3 服務配置程序 783
27.2.4 Windows服務的類 783
27.3 創建Windows服務程序 784
27.3.1 創建服務的核心功能 784
27.3.2 QuoteClient示例 787
27.3.3 Windows服務程序 791
27.3.4 綫程化和服務 795
27.3.5 服務的安裝 795
27.3.6 安裝程序 796
27.4 Windows服務的監控和控製 800
27.4.1 MMC管理單元 800
27.4.2 net.exe實用程序 801
27.4.3 sc.exe實用程序 801
27.4.4 Visual Studio Server Explorer 801
27.4.5 編寫自定義ServiceController類 802
27.5 故障排除和事件日誌 809
27.6 小結 810
第28章 本地化 811
28.1 全球市場 811
28.2 System.Globalization名稱空間 812
28.2.1 Unicode問題 812
28.2.2 區域性和區域 813
28.2.3 使用區域性 817
28.2.4 排序 823
28.3 資源 824
28.3.1 創建資源文件 824
28.3.2 資源文件生成器 824
28.3.3 ResourceWriter 825
28.3.4 使用資源文件 826
28.3.5 System.Resources名稱空間 830
28.4 使用Visual Studio的Windows Forms本地化 830
28.4.1 通過編程方式修改區域性 835
28.4.2 使用自定義資源消息 836
28.4.3 資源的自動迴退 837
28.4.4 外包翻譯 837
28.5 ASP.NET Web Forms的本地化 838
28.6 用WPF本地化 839
28.6.1 用於WPF的.NET資源 840
28.6.2 XAML資源字典 841
28.7 自定義資源讀取器 845
28.7.1 創建DatabaseResourceReader類 845
28.7.2 創建DatabaseResourceSet類 847
28.7.3 創建DatabaseResourceManager類 847
28.7.4 DatabaseResourceReader的客戶端應用程序 848
28.8 創建自定義區域性 848
28.9 用Windows Store應用程序進行本地化 850
28.9.1 使用資源 851
28.9.2 使用多語言應用程序工具集進行本地化 851
28.10 小結 852
第29章 核心XAML 853
29.1 XAML的作用 853
29.2 XAML概述 854
29.2.1 元素如何映射到.NET對象上 854
29.2.2 使用自定義.NET類 856
29.2.3 把屬性用作特性 857
29.2.4 把屬性用作元素 857
29.2.5 基本的.NET類型 858
29.2.6 使用集閤和XAML 858
29.2.7 用XAML代碼調用構造函數 859
29.3 依賴屬性 859
29.3.1 創建依賴屬性 860
29.3.2 強製值迴調 861
29.3.3 值變更迴調和事件 862
29.3.4 事件的冒泡和隧道 863
29.4 附加屬性 866
29.5 標記擴展 868
29.6 創建自定義標記擴展 869
29.7 XAML定義的標記擴展 870
29.8 讀寫XAML 871
29.9 小結 872
第30章 Managed Extensibility Framework 873
30.1 概述 873
30.2 MEF的體係結構 874
30.2.1 使用屬性的MEF 875
30.2.2 基於約定的部件注冊 880
30.3 定義協定 882
30.4 導齣部件 883
30.4.1 創建部件 883
30.4.2 導齣屬性和方法 888
30.4.3 導齣元數據 890
30.4.4 使用元數據進行惰性加載 892
30.5 導入部件 893
30.5.1 導入連接 895
30.5.2 部件的惰性加載 897
30.5.3 用惰性實例化的部件讀取元數據 898
30.6 容器和齣口提供程序 900
30.7 類彆 902
30.8 小結 904
第31章 Windows運行庫 905
31.1 概述 905
31.1.1 .NET與Windows運行庫的比較 906
31.1.2 名稱空間 906
31.1.3 元數據 908
31.1.4 語言投射 909
31.1.5 Windows運行庫中的類型 911
31.2 Windows運行庫組件 912
31.2.1 集閤 912
31.2.2 流 913
31.2.3 委托與事件 914
31.2.4 異步操作 914
31.3 Windows Store應用程序 915
31.4 應用程序的生命周期 917
31.4.1 應用程序的執行狀態 918
31.4.2 Suspension Manager 919
31.4.3 導航狀態 921
31.4.4 測試暫停 922
31.4.5 頁麵狀態 922
31.5 應用程序的設置 924
31.6 小結 927
第Ⅳ部分 數 據
第32章 核心ADO.NET 929
32.1 ADO.NET概述 929
32.1.1 名稱空間 930
32.1.2 共享類 931
32.1.3 數據庫專用類 931
32.2 使用數據庫連接 932
32.2.1 管理連接字符串 933
32.2.2 高效地使用連接 934
32.2.3 事務 936
32.3 命令 938
32.3.1 執行命令 938
32.3.2 調用存儲過程 941
32.4 快速數據訪問:數據讀取器 944
32.5 異步數據訪問:使用Task和await 946
32.6 管理數據和關係:DataSet類 948
32.6.1 數據錶 949
32.6.2 數據列 950
32.6.3 數據關係 955
32.6.4 數據約束 956
32.7 XML架構:用XSD生成代碼 958
32.8 填充DataSet類 965
32.8.1 用數據適配器填充DataSet 965
32.8.2 從XML中填充DataSet類 966
32.9 持久化DataSet類的修改 966
32.9.1 通過數據適配器進行更新 966
32.9.2 寫入XML輸齣結果 969
32.10 使用ADO.NET 970
32.10.1 分層開發 970
32.10.2 生成SQL Server的鍵 972
32.10.3 命名約定 974
32.11 小結 975
第33章 ADO.NET Entity Framework 976
33.1 用Entity Framework編程 976
33.2 Entity Framework映射 978
33.2.1 邏輯層 978
33.2.2 概念層 980
33.2.3 映射層 982
33.2.4 連接字符串 983
33.3 實體 983
33.4 對象上下文 984
33.5 關係 986
33.5.1 一個層次結構一個錶 986
33.5.2 一種類型一個錶 988
33.5.3 懶惰加載、延遲加載和預先加載 989
33.6 查詢數據 991
33.6.1 Entity SQL 991
33.6.2 使用DbSqlQuery 992
33.6.3 LINQ to Entities 993
33.7 把數據寫入數據庫 994
33.7.1 對象跟蹤 994
33.7.2 改變信息 995
33.7.3 附加和分離實體 996
33.7.4 使用最後一個更改操作
寫入實體的更改 997
33.7.5 使用第一個更改操作寫入實體的更改 997
33.7.6 寫入實體的更改並處理衝突 998
33.8 使用Code First編程模型 999
33.8.1 定義實體類型 999
33.8.2 創建數據上下文 1000
33.8.3 創建數據庫,存儲實體 1000
33.8.4 數據庫 1001
33.8.5 查詢數據 1001
33.8.6 定製數據庫的生成 1002
33.8.7 數據庫的自動填充 1003
33.8.8 連接的彈性 1004
33.8.9 架構的遷移 1005
33.9 小結 1007
第34章 處理XML 1008
34.1 XML 1008
34.2 .NET支持的XML標準 1009
34.3 System.Xml名稱空間 1009
34.4 使用System.Xml類 1010
34.5 讀寫流格式的XML 1011
34.5.1 使用XmlReader類 1011
34.5.2 使用XmlReader類進行驗證 1015
34.5.3 使用XmlWriter類 1017
34.6 在.NET中使用DOM 1018
34.7 使用XPathNavigator類 1023
34.7.1 System.Xml.XPath名稱空間 1023
34.7.2 System.Xml.Xsl名稱空間 1028
34.7.3 調試XSLT 1032
34.8 XML和ADO.NET 1034
34.8.1 將ADO.NET數據轉換為XML文檔 1034
34.8.2 把XML文檔轉換為
ADO.NET數據 1040
34.9 在XML中序列化對象 1041
34.10 LINQ to XML和.NET 1051
34.11 使用不同的XML對象 1051
34.11.1 XDocument對象 1051
34.11.2 XElement對象 1052
34.11.3 XNamespace對象 1053
34.11.4 XComment對象 1055
34.11.5 XAttribute對象 1056
34.12 使用LINQ查詢XML文檔 1057
34.12.1 查詢靜態的XML文檔 1057
34.12.2 查詢動態的XML文檔 1058
34.13 XML文檔的更多查詢技術 1060
34.13.1 讀取XML文檔 1060
34.13.2 寫入XML文檔 1061
34.14 小結 1063
第Ⅴ部分 顯 示
第35章 核心WPF 1065
35.1 理解WPF 1066
35.1.1 名稱空間 1066
35.1.2 類層次結構 1067
35.2 形狀 1069
35.3 幾何圖形 1070
35.4 變換 1072
35.5 畫筆 1073
35.5.1 SolidColorBrush 1073
35.5.2 LinearGradientBrush 1074
35.5.3 RadialGradientBrush 1074
35.5.4 DrawingBrush 1075
35.5.5 ImageBrush 1076
35.5.6 VisualBrush 1076
35.6 控件 1077
35.6.1 簡單控件 1077
35.6.2 內容控件 1078
35.6.3 帶標題的內容控件 1079
35.6.4 項控件 1081
35.6.5 帶標題的項控件 1081
35.6.6 修飾 1081
35.7 布局 1082
35.7.1 StackPanel 1082
35.7.2 WrapPanel 1083
35.7.3 Canvas 1084
35.7.4 DockPanel 1084
35.7.5 Grid 1085
35.8 樣式和資源 1086
35.8.1 樣式 1087
35.8.2 資源 1088
35.8.3 係統資源 1090
35.8.4 從代碼中訪問資源 1090
35.8.5 動態資源 1090
35.8.6 資源字典 1091
35.9 觸發器 1092
35.9.1 屬性觸發器 1093
35.9.2 多觸發器 1094
35.9.3 數據觸發器 1095
35.10 模闆 1096
35.10.1 控件模闆 1097
35.10.2 數據模闆 1099
35.10.3 樣式化列錶框 1101
35.10.4 ItemTemplate 1102
35.10.5 列錶框元素的控件模闆 1103
35.11 動畫 1105
35.11.1 時間軸 1105
35.11.2 非綫性動畫 1108
35.11.3 事件觸發器 1109
35.11.4 關鍵幀動畫 1111
35.12 可見狀態管理器 1112
35.12.1 可見的狀態 1113
35.12.2 變換 1115
35.13 3-D 1116
35.13.1 模型 1116
35.13.2 照相機 1118
35.13.3 光綫 1118
35.13.4 鏇轉 1118
35.14 小結 1119
第36章 用WPF編寫業務應用程序 1120
36.1 概述 1120
36.2 菜單和功能區控件 1121
36.2.1 菜單控件 1121
36.2.2 功能區控件 1122
36.3 Commanding 1124
36.3.1 定義命令 1125
36.3.2 定義命令源 1126
36.3.3 命令綁定 1126
36.4 數據綁定 1127
36.4.1 BooksDemo應用程序內容 1128
36.4.2 用XAML綁定 1129
36.4.3 簡單對象的綁定 1131
36.4.4 更改通知 1134
36.4.5 對象數據提供程序 1136
36.4.6 列錶綁定 1138
36.4.7 主從綁定 1141
36.4.8 多綁定 1142
36.4.9 優先綁定 1144
36.4.10 值的轉換 1145
36.4.11 動態添加列錶項 1147
36.4.12 動態添加選項卡中的項 1148
36.4.13 數據模闆選擇器 1149
36.4.14 綁定到XML上 1151
36.4.15 綁定的驗證和錯誤處理 1153
36.5 TreeView 1161
36.6 DataGrid 1165
36.6.1 自定義列 1167
36.6.2 行的細節 1168
36.6.3 用DataGrid進行分組 1168
36.6.4 實時成型 1171
36.7 小結 1177
第37章 用WPF創建文檔 1178
37.1 簡介 1178
37.2 文本元素 1179
37.2.1 字體 1179
37.2.2 TextEffect 1180
37.2.3 內聯 1181
37.2.4 塊 1183
37.2.5 列錶 1185
37.2.6 錶 1185
37.2.7 塊的錨定 1186
37.3 流文檔 1188
37.4 固定文檔 1192
37.5 XPS文檔 1196
37.6 打印 1197
37.6.1 用PrintDialog打印 1198
37.6.2 打印可見元素 1198
37.7 小結 1200
第38章 Windows Store應用程序:用戶界麵 1201
38.1 概述 1201
38.2 Microsoft的現代設計 1202
38.2.1 內容,不是邊框 1202
38.2.2 快速流暢 1203
38.2.3 可讀性 1204
38.3 示例應用程序的核心功能 1204
38.3.1 文件和目錄 1204
38.3.2 應用程序頁麵 1205
38.4 應用程序工具欄 1210
38.5 啓動與導航 1213
38.6 布局的變化應用程序數據 1215
38.7 存儲 1220
38.7.1 定義數據協定 1220
38.7.2 寫入移動數據 1222
38.7.3 讀取數據 1223
38.7.4 寫入圖像 1224
38.7.5 讀取圖像 1226
38.8 選擇器 1227
38.9 活動的磁貼 1228
38.10 小結 1230
第39章 Windows Store應用程序:協定和設備 1231
39.1 概述 1231
39.2 搜索 1232
39.3 共享協定 1234
39.3.1 共享源 1234
39.3.2 共享目標 1237
39.4 相機 1239
39.5 定位 1240
39.6 感應器 1243
39.6.1 光綫 1244
39.6.2 羅盤 1244
39.6.3 加速計 1245
39.6.4 傾斜計 1246
39.6.5 陀螺儀 1246
39.6.6 方嚮 1246
39.6.7 Rolling Marble示例 1247
39.7 小結 1249
第40章 核心ASP.NET 1250
40.1 用於Web應用程序的.NET Framework 1250
40.1.1 ASP.NET Web Forms 1251
40.1.2 ASP.NET Web Pages 1251
40.1.3 ASP.NET MVC 1252
40.2 Web技術 1252
40.2.1 HTML 1253
40.2.2 CSS 1253
40.2.3 JavaScript和jQuery 1253
40.3 托管和配置 1254
40.4 處理程序和模塊 1256
40.4.1 創建自定義處理程序 1257
40.4.2 ASP.NET處理程序 1258
40.4.3 創建自定義模塊 1259
40.4.4 通用模塊 1260
40.5 全局的應用程序類 1261
40.6 請求和響應 1262
40.6.1 使用HttpRequest對象 1262
40.6.2 使用HttpResponse對象 1264
40.7 狀態管理 1264
40.7.1 視圖狀態 1265
40.7.2 cookie 1266
40.7.3 會話 1267
40.7.4 應用程序狀態 1270
40.7.5 緩存 1270
40.7.6 配置文件 1271
40.8 ASP.NET身份係統 1275
40.8.1 基礎知識 1276
40.8.2 存儲和檢索用戶信息 1277
40.8.3 安全啓動 1278
40.8.4 使用注冊和身份驗證 1278
40.9 小結 1279
第41章 ASP.NET Web Forms 1281
41.1 概述 1281
41.2 ASPX頁麵模型 1282
41.2.1 添加控件 1283
41.2.2 使用事件 1284
41.2.3 使用迴送 1284
41.2.4 使用自動迴送 1285
41.2.5 迴送到其他頁麵 1285
41.2.6 定義強類型化的跨頁麵迴送 1286
41.2.7 使用頁麵事件 1287
41.2.8 ASPX代碼 1288
41.2.9 服務器端控件 1290
41.3 母版頁 1291
41.3.1 創建母版頁 1291
41.3.2 使用母版頁 1293
41.3.3 在內容頁中定義母版頁內容 1294
41.4 導航 1296
41.4.1 站點地圖 1296
41.4.2 Menu控件 1296
41.4.3 菜單路徑 1297
41.5 驗證用戶輸入 1297
41.5.1 使用驗證控件 1298
41.5.2 使用驗證摘要 1299
41.5.3 驗證組 1300
41.6 訪問數據 1300
41.6.1 使用Object Framework 1301
41.6.2 創建庫 1302
41.6.3 使用Object Data Source 1303
41.6.4 編輯 1306
41.6.5 定製列 1307
41.6.6 在網格中使用模闆 1308
41.7 安全性 1309
41.7.1 建立 ASP.NET身份 1309
41.7.2 用戶注冊 1310
41.7.3 用戶的身份驗證 1311
41.7.4 用戶授權 1312
41.8 Ajax 1313
41.8.1 ASP.NET AJAX的概念 1314
41.8.2 ASP.NET AJAX網站示例 1316
41.8.3 支持ASP.NET AJAX的網站配置 1319
41.8.4 添加ASP.NET AJAX功能 1320
41.9 小結 1326
第42章 ASP.NET MVC 1328
42.1 ASP.NET MVC概述 1328
42.2 定義路由 1330
42.2.1 添加路由 1330
42.2.2 路由約束 1331
42.3 創建控製器 1331
42.3.1 動作方法 1332
42.3.2 參數 1332
42.3.3 返迴數據 1333
42.4 創建視圖 1335
42.4.1 嚮視圖傳遞數據 1336
42.4.2 Razor語法 1337
42.4.3 強類型視圖 1338
42.4.4 布局 1339
42.4.5 部分視圖 1342
42.5 從客戶端提交數據 1346
42.5.1 模型綁定器 1347
42.5.2 注釋和驗證 1348
42.6 HTML Helper 1350
42.6.1 簡單的Helper 1350
42.6.2 使用模型數據 1351
42.6.3 定義HTML特性 1352
42.6.4 創建列錶 1352
42.6.5 強類型化的Helper 1353
42.6.6 編輯器擴展 1354
42.6.7 創建自定義Helper 1355
42.6.8 模闆 1355
42.7 創建數據驅動的應用程序 1356
42.7.1 定義模型 1357
42.7.2 創建控製器和視圖 1358
42.8 動作過濾器 1364
42.9 身份驗證和授權 1366
42.9.1 登錄模型 1366
42.9.2 登錄控製器 1366
42.9.3 登錄視圖 1368
42.10 小結 1370
第Ⅵ部分 通 信
第43章 WCF 1372
43.1 WCF概述 1372
43.1.1 SOAP 1374
43.1.2 WSDL 1374
43.1.3 REST 1375
43.1.4 JSON 1375
43.2 創建簡單的服務和客戶端 1375
43.2.1 定義服務和數據協定 1376
43.2.2 數據訪問 1378
43.2.3 服務的實現 1379
43.2.4 WCF服務宿主和WCF測試客戶端 1380
43.2.5 自定義服務宿主 1382
43.2.6 WCF客戶端 1384
43.2.7 診斷 1386
43.2.8 與客戶端共享協定程序集 1388
43.3 協定 1389
43.3.1 數據協定 1390
43.3.2 版本問題 1390
43.3.3 服務協定 1391
43.3.4 消息協定 1392
43.3.5 錯誤協定 1392
43.4 服務的行為 1394
43.5 綁定 1397
43.5.1 標準的綁定 1397
43.5.2 標準綁定的特性 1399
43.5.3 Web套接字 1400
43.6 宿主 1403
43.6.1 自定義宿主 1403
43.6.2 WAS宿主 1404
43.6.3 預配置的宿主類 1405
43.7 客戶端 1406
43.7.1 使用元數據 1406
43.7.2 共享類型 1407
43.8 雙工通信 1408
43.8.1 雙工通信的協定 1408
43.8.2 雙工通信的服務 1408
43.8.3 雙工通信的客戶端應用程序 1409
43.9 路由 1410
43.9.1 示例應用程序 1411
43.9.2 路由接口 1412
43.9.3 WCF路由服務 1412
43.9.4 為失敗使用路由器 1413
43.9.5 改變協定的橋梁 1415
43.9.6 過濾器的類型 1415
43.10 小結 1415
第44章 ASP.NET Web API 1416
44.1 概述 1416
44.2 創建服務 1417
44.2.1 定義模型 1418
44.2.2 創建控製器 1418
44.2.3 錯誤處理 1420
44.3 創建.NET客戶程序 1420
44.3.1 發送GET請求 1421
44.3.2 發送POST請求 1422
44.3.3 發送PUT請求 1423
44.3.4 發送DELETE請求 1423
44.4 Web API路由和操作 1424
44.4.1 給操作添加HTTP方法 1424
44.4.2 基於特性的路由 1425
44.5 使用OData 1427
44.5.1 創建數據模型 1427
44.5.2 創建服務 1428
44.5.3 OData查詢 1430
44.5.4 WCF Data Services客戶程序 1431
44.6 保護Web API 1436
44.6.1 創建賬戶 1437
44.6.2 創建驗證令牌 1439
44.6.3 發送驗證過的調用 1440
44.6.4 獲取用戶信息 1440
44.7 自駐留 1441
44.8 小結 1443
第45章 Windows Workflow Foundation 1444
45.1 工作流概述 1444
45.2 Hello World示例 1445
45.3 活動 1446
45.3.1 If活動 1447
45.3.2 InvokeMethod活動 1448
45.3.3 Parallel活動 1448
45.3.4 Delay活動 1449
45.3.5 Pick活動 1449
45.4 自定義活動 1450
45.4.1 活動的驗證 1451
45.4.2 設計器 1452
45.4.3 自定義復閤活動 1454
45.5 工作流 1456
45.5.1 實參和變量 1457
45.5.2 WorkflowApplication 1458
45.5.3 存放WCF工作流 1461
45.5.4 工作流的版本 1465
45.5.5 駐留設計器 1466
45.6 小結 1471
第46章 對等網絡 1472
46.1 P2P網絡概述 1472
46.1.1 客戶端-服務器體係結構 1473
46.1.2 P2P體係結構 1473
46.1.3 P2P體係結構的挑戰 1474
46.1.4 P2P術語 1475
46.1.5 P2P解決方案 1475
46.2 PNRP 1475
46.3 構建P2P應用程序 1478
46.4 小結 1484
第47章 消息隊列 1485
47.1 概述 1486
47.1.1 使用消息隊列的場閤 1486
47.1.2 消息隊列功能 1487
47.2 Message Queuing産品 1488
47.3 消息隊列體係結構 1489
47.3.1 消息 1489
47.3.2 消息隊列 1489
47.4 Message Queuing管理工具 1490
47.4.1 創建消息隊列 1490
47.4.2 消息隊列屬性 1491
47.5 消息隊列的編程實現 1492
47.5.1 創建消息隊列 1492
47.5.2 查找隊列 1493
47.5.3 打開已知隊列 1493
47.5.4 發送消息 1495
47.5.5 接收消息 1497
47.6 課程訂單應用程序 1499
47.6.1 課程訂單類庫 1499
47.6.2 課程訂單消息發送程序 1502
47.6.3 發送優先級和可恢復的消息 1504
47.6.4 課程訂單消息接收應用程序 1505
47.7 接收結果 1511
47.7.1 確認隊列 1511
47.7.2 響應隊列 1512
47.8 事務隊列 1512
47.9 消息隊列和WCF 1514
47.9.1 帶數據協定的實體類 1514
47.9.2 WCF服務協定 1515
47.9.3 WCF消息接收應用程序 1516
47.9.4 WCF消息發送應用程序 1519
47.10 消息隊列的安裝 1520
47.11 小結 1520
· · · · · · (
收起)