实时流程信息/ Server + JS Client的最佳方法

时间:2014-07-07 14:36:21

标签: extjs asp.net-web-api extjs4 signalr real-time

我在服务器端有一个C# Web API项目,在前端我有ExtJS 4.2.1(Javascript框架客户端)。

我的应用程序中有一个部分,我请求启动一个长时间运行的进程(大约5分钟),我想向用户显示正在执行的进程的状态。

  
    

基本上,该流程将对数据库中的每个员工(大约800个)进行特殊计算,因此我想让用户知道当时正在处理哪个员工

  

所以我想以两种方式做这件事,也许我不知道两者是否合适。

  1. 使用SignalR以实时方式显示流程信息。
  2. 写入database table所有进程日志(正在处理的每个员工)。
  3.   

    如果我使用第一种方法,如果用户关闭浏览器,他将丢失有关该过程的所有信息,如果他再次登录应用程序,他将只看到实际状态。

         

    如果我使用第二种方法,如果他再次登录应用程序,他可以看到所有信息,并且可能在客户端使用计时器,数据可以每5秒刷新一次。

    有没有人实现过这样的东西?任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:0)

你应该使用两者的组合。计算出员工后,将状态保存到数据库并在服务总线上发布更改。

让SignalR选择这些消息并将它们转发给客户端。这样,当用户连接时,用户将看到旧状态,然后用SignalR到达新状态。我已经创建了一个事件聚合器代理,这使得这很容易。

https://github.com/AndersMalmgren/SignalR.EventAggregatorProxy/wiki

按照wiki进行设置,这是一个演示项目 https://github.com/AndersMalmgren/SignalR.EventAggregatorProxy/tree/master/SignalR.EventAggregatorProxy.Demo.MVC4

现场演示 http://malmgrens.org/Signalr/