WCF双工
1、必须使用支持双向通信的绑定如NetTcpBinding、NetNamedPipeBinding、WSDualHttpBinding
2、整个Contract在服务端定义(包括服务接口和回调接口);用 CallbackContract 为服务接口定义回调;服务接口在服务端实现,回调接口在客户端实现。
例:
[ServiceContract(CallbackContract = typeof(ISomeCallbackContract))]
3、服务端用 OperationContext.Current.GetCallbackChannel<T>()获取调用当前操作的客户端实例通道
例:
ISomeCallbackContract callback = OperationContext.Current.GetCallbackChannel<ISomeCallbackContract>()
4、服务端获得客户端实例通道的对象以后就可以调用客户端方法
例:
callback.SomeCallbackMethod2();
5、客户端创建回调的对象并生成操作调用的上下文并由客户端代理对象传回服务端