信道与信道栈 在信道层,若干信道首尾相连组成一个管道,我们将其称为信道栈。WCF采用基于消息的通信手段,信道栈提供一个消息传输和处理的通道。关于信道栈处理消息的方式,我们可以通过自来水厂的净水流程做一个类比。 有一个为居民提供饮用水的自来水厂,它的任务就是抽取自然水源,进行必要的净化处理,最终输... 查看全部[ 3.1.1 信道与信道栈 ]
实例演示:直接通过绑定进行消息通信 信道层由相关信道经过有序组合而成的信道栈构成,但是并不是说整个绑定模型中只有绑定和信道两种对象。我们说信道层是由绑定创建的,也不是说通过绑定直接创建信道。对于整个绑定模型,除了绑定以及它的最终产品(信道栈)之外,还具有额外一些对象。 既然绑定的最终目的就是创建... 查看全部[ 3.1.2 实例演示:直接通过绑定进行消息通信 ]
WCF的绑定模型 在上面的实例演示中,我们通过简单的几行代码就完成了一个完整消息交换过程。这个例子涉及了一系列重要的对象,比如信道(Channel)、信道监听器(ChannelListener)、信道工厂(ChannelFactory)等,这些是整个绑定模型构成不可或缺的元素,它们相互协作组成了如... 查看全部[ 3.1.3 WCF的绑定模型 ]
CommunicationObject WCF绑定模型涉及多种类型的组件,比如信道、信道监听器、信道工厂等。从功能上讲,这些对象都是为通信服务的,可以把它们称为通信对象(Communication Object)。对于这些通信对象来说,它们具有相同的状态和状态转换方式(状态机),所以WCF提供了具... 查看全部[ 3.2.1 CommunicationObject ]
DefaultCommunicationTimeouts 较之一般意义上的方法调用,通信操作往往需要花费较长的时间。对于一个通信对象来说,如果针对它的某个方法调用在一段较长的时间内还没有返回,我们不可能无条件地等待下去,所以超时处理对于通信对象来说显得尤为重要。 通信对象的很多方法调用都会设置一... 查看全部[ 3.2.2 DefaultCommunicationTimeouts ]
IChannel和ChannelBase 每一种类型的信道都直接或者间接地实现了System.ServiceModel.Channels.IChannel接口。如下面的代码所示,IChannel仅仅具有一个唯一的GetProperty<T>方法用于返回信道具有的指定类型的属性。这个方法... 查看全部[ 3.2.3 IChannel和ChannelBase ]
消息交换模式 消息交换模式(Message Exchange Pattern,MEP)在SOA中是一个重要的概念。在W3C的文献中MEP的官方定义是这样的:MEP定义了参与者进行消息交换的模板(a template that describes the message exchange betwe... 查看全部[ 3.2.4 消息交换模式 ]
信道形状 信道是消息交换的管道,在不同的消息交换模式下信道在发送端和接收端所起的作用是不同的。在数据报模式下,发送端信道栈的作用是输出(Output)数据报,接收端则是输入(Input)数据报;对于请求-回复模式来说,发送端的作用是发送消息请求(Request),而接收端则是回复(Reply)请求... 查看全部[ 3.2.5 信道形状 ]
会话信道 从状态保持的角度,可以把信道分为数据报信道(Datagram Channel)和会话信道(Sessionful Channel)。前者不需要保持具体的客户端(服务代理)的状态,因此多个客户端对象可以使用相同的信道;后者则绑定一个客户端对象,并且与客户端对象具有相同的生命周期。 WCF中... 查看全部[ 3.2.6 会话信道 ]
实例演示:自定义信道 WCF是一个极具扩展性的通信框架,不论是在服务模型层还是信道层都具有很多扩展点。信道层的可扩展性主要体现在可以通过自定义信道的方式实现针对消息的某种处理功能,比如可以创建压缩信道对发送的消息进行压缩以降低网络流量。自定义的信道并不实现针对消息的具体处理,而是在控制台中将当前调... 查看全部[ 3.2.7 实例演示:自定义信道 ]
IChannelListener与ChannelListenerBase 信道监听器实现了接口System.ServiceModel.Channels.IChannelListener。如下面的代码片段所示,IChannelListener继承自ICommunicationObject接口。Wai... 查看全部[ 3.3.1 IChannelListener与ChannelListenerBase ]
信道栈的创建/使用模式 信道监听器一旦探测到抵达的请求,就会使用所创建的信道栈对请求消息进行接收处理。但是信道的创建和使用模式对于数据报信道(Datagram Channel)和会话信道(Sessionful Channel)是完全不同的。 数据报信道监听器:信道监听器开始监听的时候就已经通... 查看全部[ 3.3.2 信道栈的创建/使用模式 ]
实例演示:自定义信道监听器 在前面一个实例演示中,我们创建了SimpleReplyChannel和SimpleDuplexSessionChannel这两个自定义信道。前者在请求-回复模式下以数据报形式在服务端实现对请求的接收和回复的发送,后者则是一个支持会话的双工信道。现在我们分别为它们创建相应... 查看全部[ 3.3.3 实例演示:自定义信道监听器 ]