我想实现一个包含一个方法的WebService,该方法的响应将延迟不到1秒到大约一个小时(这取决于数据是否已被缓存或需要获取)。
基本上我的问题是,如果您只能从客户端连接到WebService(无法通知),那么实现此方法的最佳方法是什么?
AFAIK这只能通过使用某种轮询来实现。但是民意调查很糟糕,所以我宁愿避免使用它。另一个极端可能是只要方法没有完成就让连接保持打开状态。但我想这最终可能会减慢网络服务器和网络的速度。我考虑将这两项技术结合起来。然后客户端将调用该方法,服务器将在至少10秒后返回,其中包含客户端需要再次轮询的消息或实际结果。
你有什么想法?
答案 0 :(得分:3)
您可能想查看comet
答案 1 :(得分:2)
如果可能,我建议进行一种智能轮询:
优点:
答案 2 :(得分:1)
我认为对于可能需要一个小时来响应Web服务的事情并不是最好的使用机制。
为什么投票不好?当然,如果你调整轮询的频率,它就不会那么糟糕。民意调查之间的时间可能会增加一倍,最多约五分钟。
答案 3 :(得分:0)
我曾与之合作的某些网络服务在无法立即响应的情况下返回“请再次尝试”xml邮件。我意识到这只是对轮询技术的一种改进,但是如果你的服务器可以在请求时确定可能的延迟是什么,它可以告诉客户端然后忘记它,让客户端离开轮询间隔到期后再次询问。
答案 4 :(得分:0)
IIS和客户端存在超时,这将阻止您打开连接。 这也不实用,因为服务器上的资源/连接被阻止。
为什么您希望用户等待这么长时间运行的任务?让他们在某处查看操作的状态。