2013-07-25 77 views
3

如果这是一个基本问题,请先行道歉。我如何在现有WCF Web服务中启动外部Web服务调用,而不是等待第三方服务在继续并退出该函数之前返回响应,以便我的Web服务立即返回值?WCF服务 - 不要等待外部网络服务电话

+1

你尝试中的链接[如何使我的WCF服务的异步调用?](http://stackoverflow.com/questions/400798/how-to-make-a-call-to-my-wcf - 服务异步) –

回答

2

您需要对异步的外部服务进行调用。根据您所在的框架的版本,有不同的选项。如果你在4.5看看异步:http://msdn.microsoft.com/en-us/library/vstudio/hh156513.aspx

我们目前正在做类似的事情 - 使用RestSharp从WCF异步调用restful服务。看看这里的一个例子:Fire and Forget from within a WCF service

当你说“立即返回一个值”你是说你想调用WCF服务本身是非阻塞的?那么它会马上返回给客户?如果是这样,你需要使你的WCF服务合同OneWay。请参阅:http://msdn.microsoft.com/en-us/library/ms733035.aspx但是,您无法从OneWay服务返回值。

0

您可以运行,这将发起呼叫的第三方和实施,你可以用它来检查,看看结果都进行了相应的恢复和行动第二轮询方法异步方法。

我们做类似的导入文件。踢过程并让客户进行更新。

How to: Implement an Asynchronous Service Operation

+0

你可以显示一些例子或代码? –

0

如果web服务已经存在,你没有过任何控制,我通常只需要创建一个线程来处理函数调用。

然而,在.NET 4.5中,有 '异步' Web服务函数调用。如果你有机会到这个功能,这将是首选的解决方案

0

假设你不依赖于第三方的结果来计算你的返回值。

您需要按照以下方式构建您的webservice方法。它只是伪代码。

public bool YourMethod() 
    { 
    //this will be a non-blocking call 
    MakeAsyncCallToThirdParty(); 
    return true; 
    }