将用于微服务的 SignalR 与 API 网关集成

Integrating SignalR for microservice with API Gateway

我正在设计一个基于.Net core 的微服务系统。架构系统如下图所示。

问题是:有一个要求必须集成SignalR(实时)进行通知 我在 Microsoft 的网站上阅读过有关 SignalR 的信息。但是我考虑应该把集线器放在哪里(API 网关?微服务?...)?如何为这个系统应用 signalR。

谢谢。

据我了解,尽管名称如此,'hub' 根本不是一项独立的服务,因此您不必在任何地方安装它。 SignalR 是您的服务用来直接与客户通信的库。 SignalR 可以通过两种方式使用,首先 'Persistent Connection' API 为服务提供了一种向您的客户端发送任意数据的方式。它的主要目的是抽象出类似于 WCF 的底层传输机制(例如 Websockets、Ajax 长轮询等...)。其次,'Hub' API 是更高级别的抽象层(建立在 'Persistent Connection' API 之上),它允许服务器调用客户端上的 'methods' (即在行为上类似于 RPC)。因此,每个客户端都有一个进程内 'hub' 通过调用您在客户端代码中编写的函数(即事件处理程序)来分派传入消息(来自持久连接)。

它的术语也可能令人困惑,因为在一些描述中我看到托管集线器实例的服务被称为 'hub'。因此,在您的情况下,您的任何服务都可以有一个内置的集线器,或者您可以拥有一个由其他服务共享的专用集线器服务。无论哪种方式,中心都存在于一个或多个服务中。