《WCF全面剖析》-章节内容简介
(上册)
第1章 WCF简介(WCF Overview)
本章简单讲述了WCF产生的历史背景,以及在微软产品线中所处的地位。为了使读者对基于WCF的编程模型有一个直观的印象,我们将带领读者创建一个完整的WCF应用。本章实例应用涵盖了构建一个基本WCF应用所需的所有步骤,包括服务契约的定义、服务的实现、服务的寄宿、元数据的发布和导入、服务代理的创建和服务调用等。
第2章 地址(Address)
作为终结点三要素之一的地址在WCF应用编程接口中通过EndpointAddress表示,本章会从编程的角度对该类型进行详细的介绍。端口共享对于WCF服务的部署具有重要的意义,我们会分别介绍基于不同传输协议(HTTP/HTTPS和TCP)的端口共享机制在WCF中是如何实现的。终结点地址具有逻辑地址和物理地址之分,本章会详细讲述如何在客户端和服务端实现两者的分离。在本章的最后会对请求监听和消息分发机制进行深入解析。
第3章 绑定(Binding)
WCF整个框架大体分为服务模型层和信道层,作为终结点三要素之一的绑定是整个信道层的缔造者。为了全景展示整个绑定模型,涉及到的对象包括绑定元素、信道监听器、信道工厂、信道等。绑定本质上是一系列相关绑定元素的有序组合,我们将从绑定元素的构成来分析常见系统绑定的本质区别,以及通过绑定元素重组来创建自定义绑定。
第4章 契约(Contract)
契约是组成终结点的第三个元素,本章会从编程和服务描述的角度系统地介绍服务契约。组成服务契约的操作表示基于某种模式的消息交换和消息本身的结构,本章会着重介绍基于三种消息交换模式的契约操作之间的差异,以及如何编程实现对客户端的回调。多线程在服务调用中具有普遍的意义,我们会全方面地介绍多种不同的异步调用方法在WCF中的实现。在本章的结尾,我们会详细讨论操作选择和执行机制。
第5章 序列化(Serialization)
序列化/反序列化最终通过XmlSerializer和DataContractSerializer这两个序列化器来实现,我们会详细介绍它们参与序列化和反序列化采用的序列化规则。数据契约是WCF中定义数据的主要方式,本章会着重介绍如何通过DataContractAttribute和DataMemberAttribute这两个特性来定义数据契约。确定对象的类型是保证序列化/反序列化成功的先决条件,我们会系统地介绍如何通过“已知类型”让某些类型成为序列化器预先知道的类型。基于集合和泛型类型的数据契约比较特殊,我们会在专门的一节对它们进行详细介绍。本章的最后会讲述数据契约等效性的概念,以及针对请求消息和回复消息的序列化/反序列化在WCF中是如何实现的。
第6章 消息(Message)
消息是通信的载体,本章专门介绍关于消息的话题。我们首先会通过对SOAP的介绍让读者知道一个标准的消息应该具有怎样的结构。在WCF的应用编程接口中,消息通过类型System.ServiceModel.Channels.Message表示,我们会针对该类型来介绍基于消息的基本操作和状态机。除了消息主体外,我们可以通过消息报头和消息属性来携带额外的控制信息,本章会详细讲述消息报头和消息属性是如何添加和读取的。消息契约可以将某个类型的属性/字段分别定义成消息的主体成员和报头成员,我们会系统地介绍基于消息契约的编程。本章以消息编码作为结尾,通过介绍我们可以知道消息在发送前的编码和接收后的解码在WCF中是如何实现的。
第7章 服务寄宿(Hosting)
我们通过宿主应用程序来承载服务旨在为服务提供一个运行环境。服务契约通过ServiceHost来实现,以终结点为核心的服务描述是创建ServiceHost的基础,所以本章的开始会对服务描述进行系统的介绍。IIS/WAS寄宿是我们常用的服务寄宿方式,为了深刻地理解背后的运行机制,我们对不同版本的IIS和ASP.NET管道进行了详细介绍。而IIS/WAS寄宿具有ASP.NET兼容模式和并行模式之分,本章将从实现原理的角度深入剖析两者的差别。我们将针对Windows服务的服务寄宿方式放在本章的结尾进行介绍。
第8章 客户端(Client)
我们通过服务代理进行服务调用,而服务代理可以直接通过ChannelFactory[TChannel]来创建,也可以通过导入服务元数据的方法直接生成继承自ClientBase[TChannel]的服务代理类。本章会详细讲述ChannelFactory[TChannel]和ClientBase[TChannel]。通过本章的介绍我们会知道,从ChannelFactory[TChannel]被创建到被开启,再到通过ChannelFactory [TChannel]创建服务代理,最后将服务代理开启并进行服务调用的各个阶段WCF在背后都为我们做了什么。
第9章 实例化与会话(Instancing and Session)
实例化和会话是WCF中两个重要的概念,前者旨在实现服务实例对象的激活,后者则实现对客户端调用状态的保持。本章将详细介绍三种典型的实例化模式所表现的行为、实现的原理及各自适合的场景。在介绍会话的部分会深入剖析会话如何保持客户端多次服务调用的状态,以及会话、实例化模式、绑定和信道之间的关系。
第10章 REST服务(REST Service)
REST是直接建立在Web上的一种面向资源的软件架构风格,WCF通过Web HTTP编程模型对REST提供了很好的支持。本章会系统地讲述组成Web HTTP编程模型的重要类型和组件。URI模板是WCF REST的一个重要的概念,读者通过本章的介绍不仅会了解定义URI模板的基本语法,还会对基于URI模板的操作选择机制有一个深刻的理解。较之SOAP,WCF REST采用更为复杂的消息格式化机制,本章通过对消息格式化的介绍让读者明白不同消息格式和主体风格的消息是如何格式化的。输出缓存、条件获取和条件更新的介绍被放在本章的最后部分。
第11章 WCF实例研究(WCF in Practice)
本章通过一个简单的电子商务网站VideoMall指导读者如何利用WCF构建一个完整的分布式应用。本实例不仅会体现WCF的基本编程方式,还会涉及一些软件架构和设计方面的介绍,比如模块化、分层、IoC和AOP等。本实例还体现了很多针对WCF的扩展,比如通过扩展实现了与Unity、EntLib的集成。
(下册)
第1章 异常处理(Exception Handling)
本章首先会对WCF基本异常处理模式进行介绍,读者借此会了解到如何进行异常的抛出与捕获,异常详细信息如何传递,以及错误契约该如何定义。异常和消息是错误信息的两种不同的载体,我们会详细介绍通过两种不同形式承载的错误信息是如何进行转换的。WCF的扩展性在异常处理方面具有较好的体现,本章的最后部分会通过实例演示的方式讲述基于自定义ErrorHandler的异常处理扩展。
第2章 元数据(Metadata)
用于描述服务的元数据帮助客户端创建匹配的终结点进行服务调用,WCF具有一个完整的元数据体系实现元数据的导出、发布、获取和导入,本章会从这4个方面来深入剖析整个元数据架构体系。不论是元数据本身还是元数据的发布,都不是微软在Windows平台内部的闭门造车,而是遵循一系列的开放标准,这些标准包括WS-Policy、WS-Transfer、WSDL和WS-MEX等,本章同样会涉及到对这些WS-*规范的介绍。
第3章 事务(Transaction)
基于WCF的分布式事务直接建立在现有的Windows事务管理体系之上,本章会对该事务处理模型进行详细的介绍。WCF事务具有OleTx和WS-AT两个基本协议,我们会对WS-AT以及相关的WS-Coordination规范进行相应的介绍。在针对事务编程模型的介绍中,我们会了解到如何通过服务契约定义事务流转的策略,如何通过对绑定的设置实现事务的流转,以及如何控制事务相关的行为。在本章的最后,我们会详细讲述事务流转和事务自动登记在WCF框架体系中是如何实现的。
第4章 并发与限流(Concurrency and Throttling)
并发指的是针对同一个封装服务实例的实例上下文的并行调用,WCF具有Single、Multiple和Reentrant三种基本的并发模式,本章会详细讲述基于不同实例化方式的Single和Reentrant并发模式是如何实现的。线程的亲和性表示针对服务调用请求的处理与服务寄宿时的同步上下文的绑定,本章会详细介绍线程的亲和性是如何产生的,以及如何解除线程的亲和性。限流旨在控制相应的并发量以实现对资源的合理使用,进而确保服务的可用性,在本章的最后部分我们会详细讲述如何设置三个限流阈值,以及限流机制的实现原理。
第5章 可靠会话(Reliable Sessions)
可靠会话通过消息确认和超时重传机制保证了通信的可靠性,实现了消息的接收保障、重复筛选和有序交付。可靠会话是对WS-RM的实现,本章的开始会进行关于WS-RM的相关介绍。可靠会话仅仅涉及到绑定,我们会通过实例演示的方式来介绍围绕着绑定的可靠会话编程模型。在本章的最后,我们会从消息交换的角度来深入剖析可靠会话是如何实现上述三个可靠通信诉求的。
第6章 队列服务(Queued Service)
WCF是Windows平台下传统分布式技术集大成者,这里被集成的一项分布式技术就包括MSMQ,我们把采用MSMQ作为通信手段的服务称为队列服务。为了巩固读者针对MSMQ的相关知识,我们会对MSMQ以及针对System.Messaging的编程模型进行简单的介绍。同样是通过三要素组成的终结点,队列服务对终结点有着不同的要求,我们会讨论队列服务终结点的独特之处。队列服务针对事务和会话有着完全不同的特性和实现方式,队列服务下的事务和会话是本章的一个重点。本章的最后部分会讲述在客户端和服务端如何进行错误处理。
第7章 传输安全(Transfer Security)
传输安全通过身认证让服务和客户端在进行功能性消息交互之前确定对方的身份,通过对消息的签名和加密确保消息的一致性和机密性。传输安全具有两种基本模式,即Transport和Message安全模式,本章针对不同的绑定类型对这两种安全模式的支持进行了系统的介绍。
第8章 授权与审核(Authorization and Auditing)
WCF提供了针对操作的声明式授权让某个访问者只能执行被授权的操作。Windows用户组和ASP.NET Roles这两种现成的授权方式可以被直接使用,同时支持自定义的授权模式。本章着重介绍不同授权模式的编程方式和实现原理。所谓的安全审核就是针对认证和授权所做的针对EventLog的日志记录,我们将通过具体的实例来讲述如何审核编程和实现审核背后的故事。
第9章 扩展(Extension)
整本书都在提及WCF的扩展性,本章对此进行专门的介绍。根据具体需要对WCF进行自由而灵活的扩展的前提是我们对整个WCF运行框架体系有一个深刻的认识,所以本章会为你带来针对WCF客户端和服务端运行框架的全景展示,并在此基础上介绍WCF包含的几乎所有的扩展点。
第10章 WCF 4.0新特性(New Feathures in WCF 4.0)
其实整本书都是针对WCF 4.0的,关于WCF 4.0针对现有功能的一些小改动已经包含在各个章节中。本章着重介绍WCF 4.0提供的一些全新的特性,包括默认终结点、默认绑定和行为配置、标准终结点、无.svc文件服务激活、路由服务和服务发现等。