我有一个WCF restful服务并且它工作正常,问题是该服务公开了一个方法"计算",可能需要几分钟才能完成计算,并且由于REST是一种无状态方法,我的想法已经用完了!
我应该维护会话吗?
如何进行回调?
在网站上等待回复10分钟并不方便,但我必须找到解决方案。
PS:服务必须休息,我不能减少计算时间。
我问了你的客户端,因为如果它们只是 .Net,你可以实现异步编程模型,但由于它们不是......
你可以像这篇文章一样做一些事情 - WCF Rest 异步调用方法
基本上,您的方法将生成一个额外的线程来完成实际的计算工作,并立即在主线程中向调用客户端返回某种令牌。然后,客户端可以在轮询方法中使用此令牌来检查计算是否完成。
您可以创建一个单向 WebMethod 来提交初始计算请求。在计算代码中,您需要更新数据库表或类似进度,包括百分比或完成。
然后,您需要创建一个额外的"轮询"方法,您可以使用该方法使用上表检查状态。
当您的计算方法将其标记为完成时,您可以调用最终的"GetResults"方法,该方法将执行此操作。
我们对通过 Web 服务提交的大文件导入执行类似操作,并且效果很好。
一些信息;
http://msdn.microsoft.com/en-us/library/system.web.services.protocols.soapdocumentmethodattribute.oneway(v=vs.71).aspx