通过 MVC 应用程序中托管 Asp.Net SignalR 中心从外部服务向 Web 客户端发送通知
本文关键字:Web 服务 客户端 通知 从外部 SignalR 应用程序 MVC Asp 通过 Net | 更新日期: 2023-09-27 18:33:31
场景如下:我们有一个 Asp.Net MVC 4应用程序,该应用程序具有一个私人消息传递系统,该系统托管一个signalR中心,用于在新消息可用时通知用户。 一切正常,Web 应用注册 connectionId 及其用户名,信号通过 notificationAdapter 类从数据层发送到中心。
当我们不得不创建一个单独的服务时,问题就来了,该服务利用 Quartz.Net 在任务完成时也会发送私人消息。我们希望 Quartz 服务能够联系 Hub,但我们不能因为它处于单独的进程中。我不想使用 signalR .net 客户端,因为我不需要基于 Quartz 的服务和我的 Web 应用之间的永久连接。我想在我的网站中创建一个端点,以向服务公开 Hub 的服务器方法或为此使用 ScaleOut,但我觉得我错过了一些东西,尽管我会问社区。
这可能是一个很晚的答案,但因为没有实际接受的答案。我会提供一个。
让 Quartz.NET 应用程序将信息发送到 ASP.NET Web 应用程序而不实现繁重的解决方案(如企业服务总线 (ESB))的最简单方法是,只需在 ASP.NET 中公开 Web 服务,并让 Quartz.NET 在其任务完成后调用 ASP.NET Web 服务。进入 ASP.NET Web 服务后,您应该能够返回通知,以通过 signalR 向客户端发送通知。
我会在WebAPI中使用Quartz Listener(作业或触发器侦听器),然后与Hub通信。
当然,在Quartz客户端(Web API)和服务器(Windows服务)之间使用共享ADO存储。