0

我们有一个 asp.net webform 应用程序 (3.5) 和一个通过 windows 服务托管的 wcf 服务(一个在服务启动时激活的服务库)。两者都部署在同一台服务器中。

WCF 服务用于少数长时间运行的任务。

现在客户想要一些定制的报告,这将花费大量时间。

我的想法是在 UI 中显示任务的进度,但我正在努力寻找正确的方法。

是否可以通过以下方式,

  1. 根据 page 的请求,服务异步启动处理并将状态报告给某个变量。(我不想写入数据库)

  2. 来自客户端页面的异步轮询,它与 wcf 服务的另一个操作通信以检索变量值。

Ajax 客户端可以与 wcf 服务进行通信,但看起来该服务需要托管为 Web 应用程序(这里不太了解)

还有其他想法吗?使用 wcf 回调(双工通信)的任何选项?太糊涂了。

4

2 回答 2

2

一年前我们取得了类似的成就。

1) 我们使用 Singleton InstanceMode 创建了一个 WCF 服务器,它处理请求并同时保持状态。另一种方法,例如 GetStatus 将状态返回给客户端。它还提供错误详细信息,以防出现任何错误。但是,我们还保留了处理细节。

2)在网页上,一旦请求被初始化并在网页上显示进度条,我们就会异步点击 getstatus。

这对我们很有用。

于 2012-12-10T16:29:20.593 回答
1

您可以考虑使用SignalR 之类的东西将响应从您的 Web 应用程序推送到您的客户端(除其他好处外,这使用了彗星技术,因此减少了您必须执行的轮询量)。

要从 WCF 服务获取对 Web 应用程序的响应,您可以使用对服务的异步请求,或使用消息传递解决方案,例如Windows Azure Service Bus

我们Client > JQuery > MVC > WCF > Service Bus > MVC > SignalR > Client用作管道,它非常适合长时间运行的流程。

于 2012-12-10T16:26:07.297 回答