6

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

当我们不得不利用 Quartz.Net 创建一个单独的服务时,问题就出现了,该服务还可以在任务完成时发送私人消息。我们希望 Quartz 服务能够联系 Hub,但我们不能导致它处于单独的进程中。我不想使用 signalR .net 客户端,因为我不需要基于 Quartz 的服务和我的 Web 应用程序之间的永久连接。我想在我的网站中创建一个端点,以将 Hub 的服务器方法公开给服务或为此使用 ScaleOut,但我觉得我错过了一些东西,尽管我会问社区。

4

2 回答 2

7

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

让您的 Quartz.NET 应用程序向您的 ASP.NET Web 应用程序发送信息而不实现诸如企业服务总线 (ESB) 之类的繁重解决方案的最简单方法是在 ASP.NET 中公开一个 Web 服务并让您的 Quartz.NET 调用任务完成后的 ASP.NET Web 服务。一旦您在您的 ASP.NET Web 服务中,您应该能够返回通知以通过 signalR 向客户端发送通知。

于 2015-05-23T02:49:45.157 回答
1

我会在 WebAPI 中使用 Quartz 侦听器(作业或触发侦听器),然后它会与 Hub 对话。

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

于 2016-07-27T12:44:28.167 回答