雙工可以讓客戶服與服務端實作互相的通信
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);
}