首先,这是我的申请状态:
我有一个请求从客户端(angularjs应用程序)进入我的API(web api 2)。处理此请求并将记录存储在数据库中。然后将响应发送回客户端。
目前,我有一个Windows服务轮询和处理此记录。 处理此记录可以长时间运行。作为处理此记录的副作用,可能会生成通知以发送回一个或多个客户端。
我的问题是如何构建这个,以便我可以利用SignalR将通知推送回客户端。
我的绊脚石:
我可以注册并存储(由db支持的内存中)客户端的SignalR连接ID以及应用程序自己的用户标识符。这样我就可以将生成的通知与信号器客户端进行匹配。
目前,我正在IIS进程中托管SignalR集线器。那么如何从Windows服务返回到IIS以在生成通知时通知客户端?
此外,我应该说我已经在应用程序的其他地方使用SignalR并使用SQL Server背板。
当前架构的问题:
任何处理都在同一个Web请求中完成,并且在返回对客户端的响应之前,通过SignalR发送通知。幸运的是,处理速度极短且非常快。
我认为从长远来看,这在性能或维护方面都不是很好。
潜在解决方案:
最后,要添加更多成分:使用服务总线删除Windows服务的轮询组件,然后转到pub / sub体系结构。虽然这比我现在想要咀嚼更多的工作。
欢迎任何想法/建议/建设性批评。
感谢。