首页 文章

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

提问于
浏览
0

假设我使用ASP.NET MVC 4实现了一个web服务,它有一个暴露一个方法的控制器:

Response Process(Request request);

此Web服务与中间层服务通信以处理请求 . 中间层服务 Contract 服务看起来像这样:

[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服务到此中间层服务的最佳方法是什么?当回调方法显然在另一个工作线程中返回时,我很难看到如何从回调线程获得响应返回到调用客户端?

谢谢你给予的任何帮助 .

2 回答

  • 0

    你必须使用async和await . 阅读此链接http://msdn.microsoft.com/en-us/library/vstudio/hh300224.aspx

  • 0

    在您的呼叫代码中尝试此操作 .

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

相关问题