WCF服务 - 不要等待外部Web服务调用

时间:2013-07-25 16:38:40

标签: c# wcf web-services

如果这是一个基本问题,请提前道歉。如何在现有WCF Web服务中启动外部Web服务调用,而不是等待第三方服务返回响应,然后继续并退出该函数以允许我的Web服务立即返回值?

4 个答案:

答案 0 :(得分: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服务返回值。

答案 1 :(得分:0)

您可以运行一个异步方法,该方法将启动对第三方的调用并实施第二种轮询方法,您可以使用该方法检查结果是否已返回并相应地执行操作。

我们为导入文件做了类似的事情。启动流程并让客户端轮询更新。

How to: Implement an Asynchronous Service Operation

答案 2 :(得分:0)

如果webservice已经存在并且您没有对它进行任何控制,我通常只创建一个线程来处理函数调用。

但是,在.Net 4.5中,存在“异步”Web服务函数调用。如果您可以访问此功能,那么这将是首选解决方案

答案 3 :(得分:0)

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

您需要按如下方式构建Web服务方法。它只是伪代码。

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