通过 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,但我觉得我错过了一些东西,尽管我会问社区。

通过 MVC 应用程序中托管 Asp.Net SignalR 中心从外部服务向 Web 客户端发送通知

这可能是一个很晚的答案,但因为没有实际接受的答案。我会提供一个。

让 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存储。