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

时间:2013-10-02 12:04:37

标签: c# architecture signalr

场景如下:我们有一个Asp.Net MVC 4应用程序,它有一个私有消息系统,托管一个signalR集线器,用于在新消息可用时通知用户。一切正常,Web App注册connectionId及其用户名,信号通过notificationAdapter类从DataLayer发送到集线器。

当我们不得不创建一个利用Quartz.Net的单独服务时,问题出现了,Quartz.Net也会在任务完成时发送私信。我们希望Quartz服务能够联系Hub,但我们不能让它在一个单独的过程中。我不想使用signalR .net客户端,因为我不需要基于Quartz的服务和我的Web App之间的永久连接。我想在我的WebSite中创建一个端点,将Hub的服务器方法暴露给服务,或者使用ScaleOut,但我觉得我想念一些东西,虽然我会问社区。

2 个答案:

答案 0 :(得分:5)

这可能是一个非常晚的答案,但看到没有实际接受的答案。我会提供一个。

使Quartz.NET应用程序向ASP.NET Web应用程序发送信息而不实施企业服务总线(ESB)等重要解决方案的最简单方法是在ASP.NET中公开Web服务并使用Quartz .NET在其任务完成时调用ASP.NET Web服务。进入ASP.NET Web服务后,您应该能够收到通知,通过signalR向客户端发送通知。

答案 1 :(得分:1)

我会在WebAPI中使用Quartz Listener(Job或触发器监听器),然后与Hub进行通信。

当然,在Quartz客户端(Web API)和服务器(Windows服务)之间使用共享ADO存储。