WCF客户端与服务器之间是通过消息进行通讯,有必要了解WCF的消息交换模式,以对消息的发送和接受有更直观的理解。
在WCF中,有三种消息交换模式:数据报模式、请求——响应模式、双工模式。
1. 数据报模式(One—Way—Calls)
数据报模式指的是发送端负责把消息发送给对方,并且收到确认消息后,就完成叫互的方式,在这种模式下,发送方唯一能确定的就是消息发送成功,而对于消息是否最终到达服务的终结点,是否被成功处理,发挥的结果如何等都一无所知。
数据报模式存在以下特点:
(1) 返回类型只能是void
(2)不能包含ref或者out类型的参数
(3)只有客户端发起请求,服务端并不会对请求进行回复。
设置方法:[OperationContract(IsOneWay=true)] Void Test();
2. 请求—响应模式(Request/Reply)
在请求响应模式中,客户端发送一个消息并且接收一个返回消息来 完成一次交互。在该模式中,消息的发起端必然是客户端,并且从服务端返回只有一条消息。客户端在发送出消息后会阻止当前线程并且等待服务端返回消息。 请求响应模式是缺省的消息交换模式,类似于Http协议中的请求/响应模型,这种消息交换模式是使用最多的一种。
具有如下特点:
(1) 调用服务方法后需要等待服务的消息返回;
(2) 在这种模式下,服务端永远是服务端,客户端就是客户端,职责分明。
设置方法:[OperationContract] Void Test();
3. 双工模式(Duplex)
在双工模式中,客户端和服务端都可以任意地向对方发送消息,而对方也可以以任意的次序来接收消息。在这种模式下,发送端和接收端的概念变得不再适用,取而代之的是通信的两个端点。
设置方法:
Public interface ICallBack
{
[OperationContract(IsOneWay=true)]
Void UpdataInterval(int seconds);
}
[ServiceContract(CallbackContract=typeof (ICallBack))]
Public interface Iservice1
{
[OperationContract]
Void Heartbeat();
}