1

我有一个 WCF RESTful 服务,它工作正常,问题是该服务公开了一个“计算”方法,完成计算可能需要几分钟,而且由于 REST 是一种无状态方法,我的想法已经用完了!

我应该保持会话吗?

我该怎么做回调?

10分钟在网站上等待回复很不方便,但我必须找到解决方案。

PS:服务一定要安静,不能减少计算时间。

4

2 回答 2

1

我询问了您的客户,因为如果他们只是.Net,您可以实现异步编程模型,但因为它们不是......

您可以在这篇文章中执行类似的操作 - WCF Rest Asynchronous Calling Methods

基本上,您的方法将产生一个额外的线程来执行实际的计算工作,并立即在主线程中将某种令牌返回给调用客户端。然后,客户端可以在轮询方法中使用此令牌来检查计算是否完成。

于 2012-06-27T13:43:36.143 回答
0

您可以创建单向 WebMethod 来提交初始计算请求。在您的计算代码中,您需要更新数据库表或与进度类似的数据库表,无论是百分比还是完成。

然后,您需要使用上表创建一个额外的“轮询”方法,您可以使用它来检查状态。

当您的计算方法将其标记为完成时,您可以调用最终的“GetResults”方法来完成此操作。

我们对通过 Web 服务提交的大文件导入做了类似的事情,并且效果很好。

一些信息;

http://msdn.microsoft.com/en-us/library/system.web.services.protocols.soapdocumentmethodattribute.oneway(v=vs.71).aspx

于 2012-06-27T13:21:14.280 回答