我在服务器端有一个C# Web API
项目,在前端我有ExtJS
4.2.1(Javascript框架客户端)。
我的应用程序中有一个部分,我请求启动一个长时间运行的进程(大约5分钟),我想向用户显示正在执行的进程的状态。
基本上,该流程将对数据库中的每个员工(大约800个)进行特殊计算,因此我想让用户知道当时正在处理哪个员工。
所以我想以两种方式做这件事,也许我不知道两者是否合适。
SignalR
以实时方式显示流程信息。database table
所有进程日志(正在处理的每个员工)。如果我使用第一种方法,如果用户关闭浏览器,他将丢失有关该过程的所有信息,如果他再次登录应用程序,他将只看到实际状态。
如果我使用第二种方法,如果他再次登录应用程序,他可以看到所有信息,并且可能在客户端使用计时器,数据可以每5秒刷新一次。
有没有人实现过这样的东西?任何建议都表示赞赏。
答案 0 :(得分:0)
你应该使用两者的组合。计算出员工后,将状态保存到数据库并在服务总线上发布更改。
让SignalR选择这些消息并将它们转发给客户端。这样,当用户连接时,用户将看到旧状态,然后用SignalR到达新状态。我已经创建了一个事件聚合器代理,这使得这很容易。
https://github.com/AndersMalmgren/SignalR.EventAggregatorProxy/wiki
按照wiki进行设置,这是一个演示项目 https://github.com/AndersMalmgren/SignalR.EventAggregatorProxy/tree/master/SignalR.EventAggregatorProxy.Demo.MVC4