【发布时间】:2014-09-11 04:06:41
【问题描述】:
我有一个在 angular.js、WebAPI 和 mongodb 上运行的应用程序。我的目标是用信号器替换客户端轮询。由于 mongodb 不会在更改时触发事件,因此我仍然需要在服务器端进行轮询,如果我检测到更改,请使用信号集线器对其进行广播。
是否有可靠的方法来做到这一点,而不会破坏 IIS 的重复任务?
我尝试了什么:
- Hangfire:似乎是推荐的解决方案,但目前仅支持 SQL Server 和 redis(不是选项)。
- HostingEnvironment.QueueBackgroundWorkItem:可能有效,但我担心它没有被广泛使用,我可能会错过一些陷阱。
- 有一种方法可以使用“上限集合上的可尾光标”从 mongo 获取事件 - 不是一种选择
【问题讨论】:
-
我对这类问题的标准回答,当你在 DB 中改变状态时,你不能发出一个事件信号吗?
-
@Anders - 不。另一个(非 Web)组件正在更改数据库。该组件与 API 之间不能直接连接。
-
您不能使用服务总线吗?这样,“组件”只发布消息,Web 服务器订阅它们。
-
没有。还有其他一些问题限制了 Web 应用程序只能与 DB 通信。如果可以的话,我们会的,而且我不会费心问这个问题......
-
让多个系统访问同一个数据库是不好的做法,但它就是这样
标签: c# asp.net angularjs mongodb signalr