天天看點

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

繼續閱讀