ASP.NET MVC 4 Web API:如何异步处理需要从异步WCF服务回调中提取结果的请求



假设我使用ASP.NET MVC 4实现了一个Web服务,该服务具有一个公开一个方法的控制器:

Response Process(Request request);

此Web服务与用于处理请求的中间层服务进行通信。中间层服务合同服务看起来像这样:

[ServiceContract(CallbackContract=typeof(IServiceCallback))]
interface IService
{
    [OperationContract(IsOneWay=true)]
    void Process(Request request);
}
interface IServiceCallback
{
    [OperationContract(IsOneWay=true)]
    void Processed( Response response );
}

此服务通过匹配的Process/Processed方法异步处理请求。

从web服务异步调用这个中间层服务的最佳方式是什么?当回调方法显然在不同的工作线程中返回时,我很难理解如何从回调线程获得响应以返回到调用客户端?

谢谢你的帮助。

您必须使用异步和等待。阅读此链接http://msdn.microsoft.com/en-us/library/vstudio/hh300224.aspx

在调用代码中尝试一下。

public void DoStuff()
{
    using(var proxy = new Proxy())
    {
        var result = await proxy.Process();
        Task.Run(() => Processed(result));
    }
}

或者这个。。。它与.net 4 一起工作

public void DoStuff()
{
    using(var proxy = new Proxy())
    {
        proxy.Process().ContinueWith(result => Processed(result), TaskCreationOptions.None);
    }
}

最新更新