0

嗨,我需要创建带有回调的 wcf 服务。因为服务需要更新windows UI才能长时间运行。你能帮我配置合适的 wcf 服务和客户端吗?

4

1 回答 1

1

在 web.xml 中配置为 wsdualhttpbinding。因为在使用回调方法时,http 是无状态协议,因此您需要依次使用 wsdualhttpbinding 来调用在客户端实现的方法。

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

定义和配置回调合约:

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();
于 2013-10-16T08:02:20.060 回答