繁体   English   中英

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

[英]WCF Service - Don't wait for external web service call

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

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

我们目前正在做类似的事情 - 使用RestSharp从WCF异步调用restful服务。 看一下这里的一个例子: 在WCF服务中Fire和忘记

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

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

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

如何:实现异步服务操作

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM