摘要:回调操作:是服务契约的一部分,取决于服务契约对回调契约的定义。一个服务契约最多只能包含一个回调契约,一旦定义了回调契约,就需要客户端支持回调,并在每次调用中提供指向服务的回调终结点,可以通过ServiceContract特性提供的Type类型的属性CallbackContract来定义回调契约。为了托管一个回调对象,客户端需要实例化回调对象,然后通过它创建一个上下文对象。 在客户端与服务端通讯过程中,只要服务终结点的契约定义了一个回调契约,客户端都必须使用代理创建双向通讯,并将回调终结点的引用传递给服务。只要客户端正在等待回调,就不能关闭代理,如果关闭回调终结点,当服务试图将调用返回时,就会.
阅读全文
随笔分类 - WCF
Windows Communication Foundation
摘要:单向(One-Way)操作没有返回值,客户端也不会关心调用成功与否,是一种即发即弃的调用方式,通过使用OperationContractAttribute将操作标记为One-Way,在WSDL描述中只包括input消息,服务端抛出的任何异常,都不会传递给客户端。理想状态下,一旦客户端调用了一个单向方法,它只会在分发调用的一瞬间被阻塞。但实事上,单向调用并不等同于异步调用。当单向调用到达服务端时,不会立即分发这些调用,而是可能放入到服务端的队列中,并在某个时间被分发。这一过程与服务配置的并发模式行为、队列中的最大消息个数、配置的通道以及可靠性有关。如果队列消息数量超过了队列容量,应会阻塞客户
阅读全文
摘要:WCF的消息交换模式指Message Exchange Patterns,主要分为:请求(Request)/应答(Reply)、单向(One Way)、双向(Duplex)或者回调(Callback); 本章主要介绍请求(Request)/应答(Reply)操作,请求/应答操作是所有服务操作的缺省行为;通过查看WSDL描述,我们可以看到wsdl:input与wsdl:output消息的描述信息;该消息能够包含请求参数,返回数据,body元素,或者返回的SOAP错误等。 在请求/应答操作中,客户端以消息形式发出请求,它会阻塞客户端直到收到应答消息。应答的默认超时值为1分钟,如果超过这
阅读全文
摘要:WAS托管:Windows激活服务(WAS)是一个系统服务,是IIS7的一部分,也可以独立的安装与配置。IIS与WAS的主要区别在于WAS并不局限使用HTTP,它支持所有可用的WCF传输协议、端口与队列,支持的协议包括:HTTP、TCP、IPC、MSMQ。 WAS提供了大量基于自托管的强大功能,包括应用程序池、回收机制、空闲时间管理(Idle Time Mannagement)、身份管理(Ide...
阅读全文
摘要:自托管(Self-Hosting),就是由开发者提供和管理宿主进程的生命周期。自托管方式适用以下场景:需要确定客户端与服务端的进程(或机器)边界时;使用进程内托管,即服务与客户端处理相同的进程中时。自托管进程可以是控制台应用程序、Windows应用程序、Windows服务等,进程必须在客户端调用服务之前运行。 自托管支持通信的协议包括:HTTP、TCP、IPC、MSMQ。 自托管宿主进程必须在运行...
阅读全文
摘要:上一章讲述托管(Hosting)的基础知识,这一章我们主要介绍IIS托管。在IIS中托管服务与经典的ASMX Web服务托管相似,需要在IIS下创建虚拟目录,并提供一个.svc文件。.svc文件与.asmx文件相似,主要用于识别隐藏文件和类后面的服务代码。使用IIS托管,服务的基地址必须与.svc文件的地址保存一致。IIS除IIS7在启用WAS激活服务外只支持HTTP/HTTPS传输协议,根据II...
阅读全文
摘要:在前面的一些章节中,我们根据DEMO来演示WCF的相关特性,其中我们一直在用WCF服务端,然而WCF服务类不能凭空存在。每个WCF服务都必须进行托管(Hosting)在Windows进程中,该进程被称为宿主进程(Host Process)。 宿主进程与WCF服务的关系:单个宿主进程可以托管多个服务,而相同的服务类型也能够托管在多个宿主进程中。 WCF的托管的环境有很多种,下面介绍一些常用的托管环境...
阅读全文
摘要:WS双向绑定(Duplex WS Binding):由WSDualHttpBinding类提供,WS双向绑定与WS绑定相似,但它还支持从服务到客户端的双向通信。双向绑定的特点是,无论使用单向消息发送还是请求/答复消息发送方式,服务和客户端均能够独立地向对方发送消息。 对于必须直接与客户端通信或向消息交换的任意一方提供异步体验(包括类似于事件的行为)的服务来说,这种双向绑定形式非常有用。 实现双向绑...
阅读全文
摘要:上一章我们介绍了WCF绑定的自定义绑定,这一章我们通过一个DEMO来介绍如何创建一个基于HTTP或者TCP协议的程序。在绑定时,我们要指定WCF的地址:要为不在IIS里承接的服务指定基地址;要为所有相让服务支持的传输协议指定基地址,要指定相对于基地址的终结点地址。不要为终结点指定绝对地址,这样做的优势是:如果修改绑定使用一个不同的传输协议,修改简单的修改在配置中指定的绑定地址,而不在需要修改终结点...
阅读全文
摘要:上一章我们介绍了WCF绑定的基本知识,这一章我们通过一个DEMO来介绍如何创建一个自定义绑定(CustomBinding)的程序。从本章起,我们假定读者对WCF一有定的了解,DEMO创建的过程介绍将省略一些简单的步骤。自定义绑定(CustomBinding)与前面介绍的WCF程序的区别主要在于通过修改配置文件来达到创建自定义绑定(CustomBinding)的目的。 开发环境:Visual Stu...
阅读全文
摘要:服务之间的通信方式是多种多样的,有多种可能的通信模式。包括:同步的请求与应答(Request/Reply)消息,或者异步的即发即弃(Fire-and-Forget)消息等等,在通信时传输的消息编码格式也有许多种,为了简化之些操作,使之易于管理,WCF引入了绑定技术将这些通信特征组合在一起。一个绑定可以是封装了诸如传输协议、消息编码、通信模式、可靠性、安全性、事务传播以及互操作性等相关选项的集合,并...
阅读全文
摘要:在契约版本管理的前二章,我们主要介绍了数据契约对版本的影响,本章我们介绍一下服务契约的变化对版本的影响。服务契约的接口支持继承功能,我们可以定义一个契约层级,但是ServiceContract特性是不能继承的,因此,接口层级中的每组接口都必须显示的标记ServiceContract特性。 下面我们通过一个DEMO来演示服务契约的继承: 1、新建WCF Service Library程序,修改解决方...
阅读全文
摘要:IExtensibleDataObject,MSDN给出的解释为:提供一个数据结构,用于存储 XmlObjectSerializer 在反序列化一个用 DataContractAttribute 属性标记的类型期间遇到的额外数据。命名空间: System.Runtime.Serialization,程序集: System.Runtime.Serialization。 IExtensibleData...
阅读全文
摘要:WCF版本相容性:指WCF的服务端在更新为新版本的情况下,客户端对服务端的引用不进行更新到最新的服务端,而继续引用旧的服务端但不发性异常。WCF契约缺省是提供版本相容性支持的,所有的服务契约,数据契约与消息契约,都允许缺失、非必需(non-required)的数据存在;且可以忽略多余的数据;DataContractSerializer提供相容性支持;适当的变化并不会对现存的客户端或者服务端产生影响...
阅读全文
摘要:上一章我们介绍了契约设计中的已知类型契约(KnownTypesContract),这一章我们介绍:消息契约(MessageContract)。 消息契约(MessageContract):对控制消息头和消息体元素提供了强力支持,支持MessageHeaderAttribute和MessageBodyMemberAttribute属性。可以添加自定义头,控制消息是否被包装(IsWrapped),以及...
阅读全文
摘要:上一章我们介绍了契约设计中的明确契约(ExplicitContract),这一章我们介绍:已知类型契约(KnownTypesContract)。 已知类型契约(KnownTypesContract)允许在服务契约中使用多态的行为;在服务操作中暴露基本类型,将已知类型(known types)相关到:基本类型(基类类型)自身、特定操作、整个服务契约;采用属性声明或者配置的方式来实现。 开发环境:Vi...
阅读全文
摘要:WCF的契约主为分为:服务契约、数据契约、消息契约,其中数据契约包括:可序列化的数据类型和已知类型。而我们在设计契约时,则主要采用三种方式:明确契约(ExplicitContract)、已知类型契约(KnownTypesContract)和消息契约(MessageContract)。开发环境:Visual Studio 2010 + Net Framework 4.0。 明确契约(Explicit...
阅读全文
摘要:WCF全称为Windows Communication Foundation,是Microsoft平台上的SOA架构,用于构建分布式和可交互操作的应用程序。它统一ASMX, .NET Remoting, 与Enterprise Services的开发模型,为各种应用提供单一的编程模型,基于配置驱动的协议选择,消息格式,进程分配等。 开发环境:Visual Studio 2010 + NET Fra...
阅读全文