我有一个WCF restful服务并且它正常工作,问题是该服务公开了一个方法“Calculate”,它可能需要几分钟才能完成计算,而且由于REST是一个无状态方法,我已经不多了想法!
我应该保持会话吗?
如何进行回调?
等待网站回复的10分钟不方便,但我必须找到解决方案。
PS:服务必须安静,我不能减少计算时间。
答案 0 :(得分:1)
我问过你的客户,因为如果他们只是.Net,你可以实现异步编程模型,但因为它们不是......
你可以在这篇文章中做点什么 - WCF Rest Asynchronous Calling Methods
基本上,您的方法将生成一个额外的线程来执行实际的计算工作,并在主线程中立即将某种令牌返回给调用客户端。然后,客户端可以在轮询方法中使用此标记来检查计算是否完成。
答案 1 :(得分:0)
您可以创建单向WebMethod来提交初始计算请求。在计算代码中,您需要更新数据库表或类似于进度(百分比或完成)。
然后,您需要创建一个额外的“轮询”方法,您可以使用上一个表来检查状态。
当你的计算方法将其标记为完成时,你可以调用最终的'GetResults'方法来实现这一点。
我们对通过Web服务提交的大型文件导入执行类似操作,但效果非常好。
一些信息;