带回叫配置的wcf服务

时间:2013-10-16 07:51:26

标签: asp.net .net wcf wcf-data-services wcf-binding

您好我需要使用回调创建wcf服务。因为服务需要更新Windows UI以进行长时间操作。你能帮我找到适合wcf服务和客户端的配置吗?

1 个答案:

答案 0 :(得分:1)

在web.xml中配置为wsdualhttpbinding。因为在使用回调方法时,http是一种无状态协议,所以你需要使用wsdualhttpbinding inturn来调用在客户端实现的方法。

使用回调方法定义接口,并在客户端实现该方法。

定义和配置回调合同:

public interface IMyContractCallback
{
    [OperationContract]
    void OnCallback();
}
[ServiceContract(CallbackContract = typeof(IMyContractCallback))]
public interface IMyContract
{
    [OperationContract()]
    void MyMethod();
}

客户端回调设置:

class MyServiceClient:DuplexClientBase,IMyContract
{
    public MyServiceClient(InstanceContext callbackCntx)
        : base(callbackCntx)
    {            
    }
    public void MyMethod()
    {
         base.Channel.MyMethod();
    }
}

服务端回调调用:

IMyContractCallback
callbackInstance=OperationContext.Current.GetCallbackChannel();
        callbackInstance.OnCallback();