WCF服务器上的一个操作正在工作大约8(!!!)小时……
我需要在完成后在客户端上显示此操作的结果.
可以与客户保持这么长时间的连接吗?
如果是的话,24小时运行会好吗?
或者最好使用smth之类的
this ?
我试图在SO上找到答案,但没有成功..
最佳答案 在处理预计需要相当长时间的操作时进行异步总是好得多(我个人的经验法则是宣布操作“慢速运行”)操作需要大致花费普通用户所需的时间在一个缓慢的网页上“重新加载”,我估计大约十秒;我在一家公司工作,任何超过半秒的操作被宣布为“慢”).
保持连接打开存在许多问题:
>超时 – 您必须将它们设置为8小时,这相当于为了所有实际目的而禁用它们,至少就用户交互而言
>客户端重新启动 – 如果您的客户端正在等待来自服务器的同步响应,则报告结果将无法在重新启动客户端后继续存在
>中间进度报告 – 当一个操作运行几个小时时,它可能包含多个阶段.通过异步操作,您可以报告完成百分比和操作过程,因为您的操作经历了多个阶段.
这就是为什么您应该非常希望在所有长时间运行的操作中使用双工通信.