第1章 異常處理 (Exception Handling) 1
1.1. WCF基本異常處理模式 3
1.1.1. 當異常從服務端拋出(S101) 3
1.1.2. 異常細節的傳播(S102) 5
1.1.3. 自定義異常信息 8
1.2. 錯誤消息與FaultException異常 18
1.2.1. 從SOAP Fault說起 18
1.2.2. 唯一可被傳播的異常:FaultException 21
1.2.3. FaultException異常和錯誤消息之間的轉換 24
1.3. WCF異常處理體系剖析 32
1.3.1. FaultFormatter 32
1.3.2. ServiceDebugBehavior如何實現對異常細節傳播? 36
1.4. WCF異常處理擴展 38
1.4.1. 錯誤處理器(ErrorHandler) 38
1.4.2. 實例演示:通過WCF擴展實現同EntLib的集成(S105) 39
第2章元數據 (Metadata) 49
2.1. WCF元數據架構體系簡介 51
2.1.1. WS-MEX 51
2.1.2. MetadataSection與MetadataSet 67
2.1.3. WCF元數據架構模型 70
2.2. 元數據的導出 72
2.2.1. MetadataExporter和WsdlExporter 72
2.2.2. WSDL導出擴展和策略導出擴展 77
2.3. 元數據的發布 79
2.3.1. 元數據發布的實現者:ServiceMetadataBehavior 79
2.3.2. MEX 終結點有何不同? 82
2.3.3. ServiceMetadataBehavior是如何實現元數據發布的? 84
2.4. 元數據的獲取和導入 99
2.4.1. 自己動手實現元數據的獲取 99
2.4.2. 通過MetadataExchangeClient獲取元數據(S206) 103
2.4.3. MetadaImporter與元數據導入 105
第3章 事務 (Transaction) 111
3.1. WCF需要怎樣的事務控制? 113
3.1.1. 什么是事務(Transaction)? 113
3.1.2. 事務的顯式控制 113
3.1.3. 分布式事務(Distributed Transaction)應用場景 116
3.2. Windows下的事務處理模型 119
3.2.1. 事務模型中的三種角色 119
3.2.2. 分布式事務是如何實現的? 121
3.2.3. System.Transactions事務 125
3.3. 事務處理協議:OleTx和WS-AT 138
3.3.1. WS-Coordination 138
3.3.2. WS-AT 142
3.4. WCF事務編程 144
3.4.1. 通過服務契約決定事務流轉的策略 144
3.4.2. 通過綁定實施事務的流轉 146
3.4.3. 通過服務(操作)行為控制事務 155
3.4.4. 實例演示:創建事務型服務(S301) 158
3.5. WCF事務實現原理 168
3.5.1. TransactionFlowAttribute行為 168
3.5.2. 事務綁定 168
3.5.3. 事務的自動登記(Enlistment) 174
3.5.4. OleTx提升(OleTx Upgrade)機制 175
第4章 並發與限流 (Concurrency and Throttling) 177
4.1. 並發與實例上下文模式 179
4.1.1. 同一個服務實例上下文同時處理多個服務調用請求 179
4.1.2. 並發中的同步 182
4.1.3. 並發與實例上下文模式 184
4.2. 同步上下文與線程親和性 201
4.2.1. 倘若去除ServiceBehaviorAttribute的UseSynchronizationContext屬性(S407) 201
4.2.2. 什么是同步上下文(SynchronizationContext)? 203
4.2.3. WCF中的同步上下文與線程親和性 205
4.3. 流量限制(Throttling) 210
4.3.1. 如何進行限流控制? 210
4.3.2. WCF限流控制是如何實現的? 212
第5章 可靠會話 (Reliable Sessions) 217
5.1. 可靠消息傳輸(Reliable Messaging) 219
5.1.1. 從TCP對報文段的可靠交付機制說起 219
5.1.2. WS-RM簡介 220
5.2. 編寫可靠會話服務 229
5.2.1. 實例演示:通過WCF服務傳輸圖片(S501) 229
5.2.2. 可靠會話綁定 247
5.3. 可靠會話的實現原理 256
5.3.1. 從信道層看可靠會話的實現 256
5.3.2. 從傳輸協議的局限性和消息交換模式看可靠會話的實現 266
5.3.3. 可靠會話最佳實踐 270
第6章 隊列服務 (Queued Services) 273
6.1. MSMQ簡介 275
6.1.1. MSMQ能解決什么問題? 275
6.1.2. MSMQ的安裝 276
6.1.3. 消息隊列 278
6.1.4. MSMQ編程 280
6.2. 從隊列服務的終結點談起 290
6.2.1. 地址 290
6.2.2. 綁定 291
6.2.3. 契約 293
6.3. 事務控制 295
6.3.1. MSMQ事務模型 295
6.3.2. 客戶端事務 296
6.3.3. 服務端事務 297
6.3.4. 事務性批量接收 299
6.4. 會話 304
6.4.1. 客戶端會話 304
6.4.2. 服務端會話 307
6.5. 錯誤處理 311
6.5.1. 接收重試(S605, S606) 311
6.5.2. 接收錯誤處理 314
6.5.3. 死信消息處理 315
6.5.4. 日志(Journaling )與跟蹤(Tracing) 317
第7章 傳輸安全 (Transfer Security) 319
7.1 傳輸安全簡介 321
7.1.1 分布式應用中的傳輸安全隱患 321
7.1.2 非對加密(Asymmetric Cryptography) 322
7.1.3 Transport與Message安全模式 326
7.2 認證(Authentication) 332
7.2.1 認證與憑證(User Credential) 332
7.2.2 綁定、安全模式與客戶端憑證類型 337
7.2.3 服務認證 348
7.2.4 客戶端認證 362
7.2.5 ServiceCredentials V.S. ClientCredentials 371
7.3 消息保護(Message Protection) 375
7.3.1 消息的保護級別 375
7.3.2 簽名與加密的實現 382
7.3.3 安全會話(Secure Sessions) 387
第8章 授權與審核 (Authorization and Auditing) 393
8.1. 身份(Identity)與安全主體(Principal) 395
8.1.1. 身份(Identity) 395
8.1.2. 安全主體(Principal) 399
8.2. Windows用戶組授權 406
8.2.1. Windows用戶組授權與認證的關系 406
8.2.2. Windows用戶組授權編程 406
8.2.3. 實例演示:基於Windows用戶組的聲明式授權(S801) 408
8.2.4. 身份模擬(Impersonation) 412
8.3. ASP.NET Roles授權 420
8.4.1. ASP.NET Roles提供程序 420
8.4.2. ASP.NET Roles授權與認證的無關性 421
8.4.3. ASP.NET Roles授權 編程 422
8.4.4. 實例演示:不同認證方式下的ASP.ENT Roles授權 424
8.4.5. 實例演示:通過WCF擴展實現授權(S805) 431
8.4. 自定義授權方式 437
8.4.1. 通過自定義AuthorizationPolicy和ServiceAuthorizationManager創建安全主體 437
8.4.2. Claim和ClaimSet 440
8.4.3. 自定義授權實現原理剖析 441
8.4.4. 實例演示:通過自定義AuthorizationPolicy和ServiceAuthorizationManager實現授權(S806) 443
8.5. 安全審核(Security Auditing) 451
8.5.1. ServiceSecurityAuditBehavior服務行為 451
8.5.2. 安全審核的實現 452
8.5.3. 實例演示:如何實施安全審核 453
第9章 擴展 (Extensions) 461
9.1. 服務端架構體系的構建 463
9.1.1. 再談服務描述(Service Description)談起 463
9.1.2. 終結點分發器選擇機制 466
9.1.3. 信道分發器(ChannelDispatcher) 467
9.1.4. 終結點分發器(EndpointDispatcher) 471
9.1.5. 分發運行時(DispatchRuntime) 471
9.1.6. 分發操作(DispatchOperation) 477
9.2. 客戶端架構體系的構建 483
9.2.1. 創建ChannelFactory<TChannel> 483
9.2.2. 客戶端運行時(ClientRuntime) 485
9.2.3. 客戶端操作(ClientOperation) 487
9.2.4. 服務代理與服務調用 488
9.3. 通過定義四種行為對WCF的擴展 492
9.3.1. WCF四種類型的行為 492
9.3.2. 行為方法的執行 493
9.3.3. 實例演示:通過擴展確保語言文化一致性(S901) 494
9.4. ServiceHost對WCF的擴展 504
9.4.1. 自定義ServiceHost的本質:對服務描述進行定制 504
9.4.2. 自定義ServiceHost的創建者:ServiceHostFactory 507
9.4.3. 實例演示:通過擴展實現基於IoC的服務實例的創建(S903,S904) 508
第10章 WCF 4.0新特性 (New Features in WCF 4.0) 517
10.1. 簡化開發體驗 519
10.1.1. 默認終結點 519
10.1.2. 默認綁定配置 524
10.1.3. 默認行為配置 525
10.1.4. 標准終結點 529
10.1.5. 無.svc文件服務激活 531
10.2. 路由服務(Routing Service) 534
10.3.1. 路由服務就是一個WCF服務 534
10.3.2. 基於消息內容的路由策略 538
10.3.3. 實例演示:如果使用路由服務(S1001) 546
10.3.4. 其他路由特性 552
10.3. 服務發現(Service Discovery) 555
10.3.1. WS-Discovery 555
10.3.2. 可被發現的服務(Discoverable Service) 558
10.3.3. 目標服務的探測和解析 566
10.3.4. 實例演示:如何利用服務發現機制實現服務的“動態”調用?(S1002) 572
10.3.5. DynamicEndpoint(S1003) 576
10.3.6. 服務上/下線通知 579
10.3.7. 發現代理(Discovery Proxy) 588