【发布时间】:2011-06-08 15:56:20
【问题描述】:
我必须设计并实现一种方法来处理客户端/服务器应用程序中长时间运行的进程。一个典型的长时间运行的过程将/可能需要 2-3 分钟。同时,我还需要向 UI 报告进度并保持 UI 响应。
想到这些,我想到了一些解决方案:
一个异步请求启动进程,该进程启动服务器端进程并返回分配的 LRPID(长期运行进程 ID)然后使用该 LRPID 从客户端定期轮询。 (专业版:部署简单,没有防火墙干扰缺点:不优雅,消耗资源等)
使用双工绑定(例如 NetTcpBinding)并在取得进展时从服务器发起回调(Pro:优雅、高效、Con:部署噩梦)
[你的建议???]
您对此有何看法?
【问题讨论】:
-
客户端应用是用什么写的?
-
部署噩梦?为什么,因为 IIS/WAS?然后不要使用它们。
-
@Daniel Auger:客户端应用程序是用 WPF 编写的
-
@Allon Guralnek:由于在防火墙中打开端口,在客户端上托管“迷你服务器”以准备回调等。
-
您必须使用任何 WCF 服务来执行此操作。
标签: wcf notifications progress-bar polling duplex