第1章 WCF简介(WCF Overview) 1
1.1 SOA的基本概念和设计思想 2
1.2 WCF是对现有Windows平台下分布式通信技术的整合 4
1.3构建一个简单的WCF应用 6
1.3.1步骤一 构建整个解决方案 7
1.3.2步骤二 创建服务契约 7
1.3.3步骤三 创建服务 8
1.3.4步骤四 通过自我寄宿的方式寄宿服务 9
1.3.5步骤五 创建客户端调用服务 12
1.3.6步骤六 通过IIS寄宿服务 16
第2章 终结点地址与WCF寻址 19
2.1 EndpointAddress 20
2.1.1 URI 22
2.1.2如何指定地址 24
2.1.3如何指定AddressHeader 36
2.2端口共享 42
2.2.1端口共享在WCF中的意义何在? 43
2.2.2基于HTTPIHTTPS的端口共享 44
2.2.3基于TCP的端口共享 45
2.3 WCF寻址 详解 47
2.3.1服务的角色 47
2.3.2逻辑地址和物理地址 48
2.3.3 ListenUri和ListenUriMode 50
2.3.4消息筛选 53
2.3.5案例演示:通过tcpTracer进行消息的路由 57
第3章 绑定与信道栈 67
3.1绑定简介 68
3.1.1信道 与信道栈 68
3.1.2绑定与信道栈 69
3.1.3案例演示:如何直接通过绑定进行消息通信 70
3.1.4 WCF的绑定模型 74
3.2绑定编程 75
3.2.1服务寄宿对绑定的指定 75
3.2.2服务调用对绑定的指定 79
3.3信道与信道栈 84
3.3.1 CommunicationObject与DefaultCommunicationTimeouts 84
3.3.2 IChannel和ChannelBase 87
3.3.3消息交换模式与信道形状 88
3.3.4案例演示:如何自定义信道 96
3.4信道管理器 101
3.4.1信道监听器 101
3.4.2信道工厂 106
3.5绑定与绑定元素 110
3.5.1绑定元素 110
3.5.2绑定揭秘 113
3.6系统绑定与自定义绑定 122
3.6.1系统绑定 122
3.6.2自定义绑定 131
第4章 服务契约 137
4.1服务契约透视 138
4.1.1抽象、接口与服务契约 138
4.1.2元数据与服务契约 139
4.1.3 WSDL、 XSD与服务契约 139
4.1.4消息交换与服务契约 140
4.1.5 WCF是CLR类型与厂商无关服务描述的适配器 141
4.2服务契约编程接口 142
4.2.1 ServiceContractAttribute与OperationContractAttribute 142
4.2.2为终结点指定契约 154
4.2.3服务契约的继承 158
4.2.4操作重载与操作选择 164
4.3消息交换模式(MEP)与服务操作 167
4.3.1请求-回复模式下的服务契约与操作 167
4.3.2单向(One-way)模式下的服务契约与操作 171
4.3.3双工模式下的服务契约与操作 172
4.4多线程与异步操作 181
4.4.1异步信道调用 182
4.4.2异步服务实现 186
第5章 序列化与数据契约 191
5.1漫谈序列化 192
5.1.1封送 与序列化 192
5.1.2持久化 与序列化 193
5.1.3数据结构与序列化 193
5.1.4 XML序列化器 194
5.2数据契约与数据契约序列化器 198
5.2.1数据契约的本质 199
5.2.2数据契约的定义与数据契约序列化器 200
5.3已知类型 211
5.3.1未知类型导致序列化失败 211
5.3.2 DataContractSerializer的已知类型集合 213
5.3.3基于接口的序列化 214
5.3.4 KnownTypeAttribute与ServiceKnownTypeAttribute 215
5.4泛型数据契约与集合数据契约 217
5.4.1泛型数据契约 217
5.4.2数据契约对数组与集合的支持 221
5.4.3 IDictionary<TKey,TValue>与Hashtable 231
5.5等效数据契约与数据契约版本控制 236
5.5.1数据契约的等效性 236
5.5.2数据成员的添加与删除 237
5.5.3数据契约代理 244
5.6序列化WCF框架中的实现 249
5.6.1 MessageFormatter 249
5.6.2 MessageFormatter在WCF框架中的应用 250
第6章 消息、消息契约与消息编码 253
6.1 SOAP与WS-Addressing 254
6.1.1 SOAP(基于SOAP 1.2标准) 254
6.1.2 WS-Addressing(基于WS-Addressing 1.0) 260
6.2消息 262
6.2.1消息版本 262
6.2.2如何创建消息 264
6.2.3消息的基本操作和消息状态 272
6.2.4消息报头集合 276
6.3消息契约 284
6.3.1消息契约的定义 284
6.3.2案例演示:基于消息契约的方法调用是如何格式化成消息的? 289
6.4消息编码 294
6.4.1序列化(反序列化)和编码(解码) 294
6.4.2 XmlDictionary、XmlDictionaryWriter和XmlDictionaryReader 295
6.5消息编码在WCF框架中的实现 302
6.5.1消息编码器(MessageEncoder) 303
6.5.2案例演示:通过MessageCoder对消息进行编码 304
6.5.3 WCF体系下的编码机制实现 306
第7章 服务寄宿 309
7.1服务描述 310
7.1.1 ServiceDescription与ServiceBehavior 310
7.1.2 ServiceEndpoint与EndpointBehavior 314
7.1.3 ContractDescription和ContractBehavior 315
7.1.4 OperationDescription和OperationBehavior 316
7.2服务寄宿详解 317
7.2.1创建ServiceHost 317
7.2.2开启ServiceHost 318
7.3 WCF服务的自我寄宿 325
7.3.1案例演示:如何通过Windows应用进行服务寄宿 325
7.3.2自定义ServiceHost 330
7.4通过IIS进行服务寄宿 333
7.4.1案例演示:如何通过IIS进行服务寄宿 334
7.4.2 IIS管道与ASP.NET架构 337
7.4.3 IIS服务寄宿实现详解 350
7.4.4案例演示:利用ASP.NET兼容模式创建支持会话(Session)的WCF服务 356
7.5通过Windows Service进行服务寄宿 360
7.5.1案例演示:如何通过创建Windows Service寄宿WCF服务 361
第8章 客户端 365
8.1 WCF客户端框架简述 366
8.1.1从透明代理 和真实代理 说起 366
8.1.2通过自定义RealProxy实现方法调用的劫持 368
8.1.3案例演示:通过自定义RealProxy实现日志功能 369
8.1.4 WCF客户端是如何进行服务调用的 372
8.1.5案例演示:创建一个托管应用模拟最简单的WCF框架 373
8.2 ChannelFactory<T>和DuplexChannelFactory<T>详解 383
8.2.1创建ChannelFactory<T>和DuplexChannelFactory<T> 383
8.2.2开启ChannelFactory<T>和DuplexChannelFactory<T> 387
8.2.3创建服务代理 392
8.2.4通过服务代理进行服务调用 393
8.3 ClientBase<T>揭秘 398
8.3.1 ClientBase<TChannel>简介 398
8.3.2 ChannelFactory<T>的缓存机制 402
8.4基于会话信道的客户端 405
8.4.1服务契约的关闭与并发会话的限制 405
8.4.2会话信道与异常处理 408
8.4.3案例演示:通过AOP的方式解决会话信道的关闭与中断 410
8.4.4额外的思考:性能与并发的权衡 415
第9章 实例管理与会话 417
9.1实例上下文 与实例上下文模式 418
9.1.1实例上下文 418
9.1.2实例上下文模式 420
9.1.3实例服务行为 422
9.2单调(Per-Call)实例上下文模式 422
9.2.1单调模式下的服务实例上下文提供机制 423
9.2.2案例演示:单调模式下服务实例的生命周期 423
9.2.3服务实例上下文的释放 425
9.2.4单调模式与可扩展性 427
9.3单例 实例上下文模式 428
9.3.1案例演示:演示服务实例的单一性 429
9.3.2单例模式下服务实例上下文提供机制 430
9.3.3单例服务与可扩展性 433
9.4会话 与会话 实例上下文模式 435
9.4.1 WCF会话简介 435
9.4.2 WCF会话编程模型 437
9.4.3会话 实例上下文模式 442
9.5会话模式、绑定与实例上下文模式 445
9.5.1单调服务决定于单调实例上下文模式 445
9.5.2单例服务决定于单例实例上下文模式 448
9.5.3会话服务决定于会话信道(栈)和会话实例上下文模式 448
9.6 WCF服务实例上下文提供机制 450
9.6.1服务实例上下文的提供者 451
9.6.2服务实例的提供者 454
9.6.3服务实例的释放 455
第10章 WCF实例研究 457
10.1实例应用功能与结构概述 458
10.1.1 PetShop功能简介 458
10.1.2 PetShop的物理结构 460
10.1.3 PetShop的模块划分 460
10.1.4 PetShop模块的层次划分 466
10.2 PetShop设计原理 482
10.2.1如何实现用户验证 482
10.2.2上下文的共享及跨域传递 488
10.2.3异常处理 494
10.2.4依赖注入在PetShop中的应用 499
10.2.5 AOP在PetShop中的应用 504
10.2.6 MVP模式在PetShop中的应用 507
参考文献 513
索引 515