WCF 回调原理

WCF回调操作简单的说就是由服务端来调用客户端的方法,回调时原先的服务端和客户端将发生对调,服务端成为客户端,客户端成为服务端。

WCF <wbr>回调原理

 在回调操作模式中,客户端对服务端调用实际上进行了四次通信

ServiceRequest:客户端向服务端发出调用,在调用的过程中会把回调实例的引用一起发送到服务端。

CallbackRequest:服务端从上一步的请求中取得对回调实例的引用,通过该回调实例向客户端发出的回调请求。

CallbackResponse:客户端执行完回调后向服务端返回的响应,如果回调契约中的方法契约被定义为IsOnWay的话,这一步不会发生。

ServiceResponse:服务端方法执行完后向客户端返回信息(方法的返回值等)。

1、WCF回调的必要条件:并不是所有的绑定都支持回调操作,只有具有双向通信能力的绑定才可以使用回调。比如HTTP是与连接无关的因此不能用于回调。这就说明我们不能使用BasicHttpBinding或WSHttpBinding进行回调。WCF中NetTcpBinding和NetNamedPipeBinding支持回调,因为从本质上讲TCP和IPC协议支持双向通信。WCF中wsDualHttpBinding也是支持回调的因为它实际上是设置了两个HTTP通道

2、定义回调契约

      回调契约是服务端定义客户端回调类的规范,客户端需要根据此契约生成回调类,服务端就通过此契约来调用客户端的相应方法。回调方法是在客户端执行的,而回调契约是定义在服务端,它规定客户端回调类的实现契约。一个服务契约若要定义回调,必须专门定义一个用于回调的契约。一个服务契约最多包含一个回调契约,一个服务契约一旦定义了回调契约那客户端必须支持这个回调。那如何为一个服务契约定义回调呢?使用ServiceContract特性的CallBackContract特性,代码如下

[ServiceContract(CallbackContract = typeof(ISomeCallbackContract))]
 public interface IService1
 {
 [OperationContract(IsOneWay=true)]
  void DoSomething();
 }
  //用于回调的契约
  interface ISomeCallbackContract
 {
     [OperationContract(IsOneWay=true)]
     void SomeCallbackMethod();
     [OperationContract(IsOneWay = true)]
     void SomeCallbackMethod2();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值