使用 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 服务器背板。
当前架构存在问题:
任何处理都在同一个 Web 请求中完成,并且在返回对客户端的响应之前通过 SignalR 发送通知。幸运的是,处理过程很少而且非常快。
我觉得这个在长运行.
的性能或者维护方面都不是很好
可能的解决方案:
- 从 IIS 中删除 SignalR 集线器并将它们托管在其他地方 - windows 服务?
- 在 API 上公开一个端点以供 windows 服务调用以在生成通知后推送通知?
最后,添加更多成分:使用服务总线删除 windows 服务的轮询组件,并移动到 pub/sub 架构。虽然这比我现在想完成的工作要多。
欢迎任何ideas/recommendations/constructive批评。
谢谢。
另一个更高级的解决方案可以使用 backplane 来管理前端和后端之间的通信...
HTH
首先,这是我的申请状态:
我有一个来自客户端(angularjs 应用程序)的请求进入我的 API(网络 api 2)。处理此请求并将记录存储在数据库中。然后将响应发送回客户端。
目前,我有一个 windows 服务轮询和处理此记录。 处理这条记录可以很长运行ning。作为处理此记录的副作用,可能会生成要发送回一个或多个客户端的通知。
我的问题是如何构建它,以便我可以利用 SignalR 将通知推送回客户端。
我的绊脚石:
我可以注册和存储(在内存中由数据库支持)客户端的 SignalR connectionid 以及应用程序自己的用户标识符。这样我就可以将生成的通知与信号器客户端匹配。
目前,我在 IIS 进程中托管 SignalR 中心。那么在生成通知时如何从Windows服务返回到IIS通知客户端呢?
此外,我应该说我已经在应用程序的其他地方使用 SignalR,并且正在使用 SQL 服务器背板。
当前架构存在问题:
任何处理都在同一个 Web 请求中完成,并且在返回对客户端的响应之前通过 SignalR 发送通知。幸运的是,处理过程很少而且非常快。
我觉得这个在长运行.
的性能或者维护方面都不是很好
可能的解决方案:
- 从 IIS 中删除 SignalR 集线器并将它们托管在其他地方 - windows 服务?
- 在 API 上公开一个端点以供 windows 服务调用以在生成通知后推送通知?
最后,添加更多成分:使用服务总线删除 windows 服务的轮询组件,并移动到 pub/sub 架构。虽然这比我现在想完成的工作要多。
欢迎任何ideas/recommendations/constructive批评。
谢谢。
另一个更高级的解决方案可以使用 backplane 来管理前端和后端之间的通信...
HTH