天天看点

WCF双工代码

      双工可以让客户服与服务端实现相互的通信

1、双工交互方式

      A、服务端定义回调接口

      B、服务端申明回调对象 

      C、客户端实现回调接口

      D、客户端将实现接口对象传到服务器端

      E、服务器端调用客户端代码

服务端接口定义:
public interface ICalculatorDuplexCallback
 {
 [OperationContract(IsOneWay = true)]
 void Equals(double result);
 [OperationContract(IsOneWay = true)]
 void Equation(string eqn);
 }
      在服务契约中申明回调接口,让客户端实现其接口
    [ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples", SessionMode = SessionMode.Required,
              CallbackContract = typeof(ICalculatorDuplexCallback))]      
客户端实现接口:
public class CallbackHandler : ICalculatorDuplexCallback
 {
 public void Equals(double result)
 {
 Console.WriteLine("Result({0})", result);
 }

 public void Equation(string eqn)
 {
 Console.WriteLine("Equation({0})", eqn);
 }
 }
 
                   InstanceContext instanceContext = new InstanceContext(new CallbackHandler());


             // Create a client
             ServiceReference1.CalculatorDuplexClient client = new ServiceReference1.CalculatorDuplexClient(instanceContext);
   服务器中调用该函数:
        ICalculatorDuplexCallback callback = null;
            callback = OperationContext.Current.GetCallbackChannel<ICalculatorDuplexCallback>();

         public void AddTo(double n)
         {
             result += n;
             equation += " + " + n.ToString();
             callback.Equals(result);
         }      

继续阅读