WCF学习总结——WCF消息交换模式

时间:2021-09-06 19:47:04

  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(); 

  }