[英]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.