使用 SignalR 从一个长 运行 进程推送到客户端

Using SignalR to push to clients from a long running process

首先,这是我的申请状态:

我有一个来自客户端(angularjs 应用程序)的请求进入我的 API(网络 api 2)。处理此请求并将记录存储在数据库中。然后将响应发送回客户端。

目前,我有一个 windows 服务轮询和处理此记录。 处理这条记录可以很长运行ning。作为处理此记录的副作用,可能会生成要发送回一个或多个客户端的通知。

我的问题是如何构建它,以便我可以利用 SignalR 将通知推送回客户端。

我的绊脚石:

我可以注册和存储(在内存中由数据库支持)客户端的 SignalR connectionid 以及应用程序自己的用户标识符。这样我就可以将生成的通知与信号器客户端匹配。

目前,我在 IIS 进程中托管 SignalR 中心。那么在生成通知时如何从Windows服务返回到IIS通知客户端呢?

此外,我应该说我已经在应用程序的其他地方使用 SignalR,并且正在使用 SQL 服务器背板。

当前架构存在问题:

可能的解决方案:

最后,添加更多成分:使用服务总线删除 windows 服务的轮询组件,并移动到 pub/sub 架构。虽然这比我现在想完成的工作要多。

欢迎任何ideas/recommendations/constructive批评。

谢谢。

看看this sample for starters

另一个更高级的解决方案可以使用 backplane 来管理前端和后端之间的通信...

HTH