创建要跨多个应用程序使用的 SignalR 服务器



我正在构建一个面向微服务的.NET Core Web应用程序,现在我想添加实时通信。是否可以创建 SignalR 服务器并将其发布到 Azure 上?我想在我的微服务中使用它,以便在发生特定事件时向用户发送消息。

是的,可以将应用部署到 Azure,并将用户指向中心终结点,而不会出现问题。您在这里有两个选择:

  • 如果要扩展应用程序,请使用SignalR并手动管理连接和其他 signalR 内容。例如,当您有 2 个 Web 应用程序并且客户端连接到其中一个时,您需要"告诉"其他应用程序您有一个新客户端连接,例如 Redis Blackplane。
  • 使用Azure SignalR,不需要这种管理,只需要提供 1 个具有中心逻辑的应用程序。因此,当客户端连接到您的集线器时,它会自动重定向到Azure SignalR

您可以在此处阅读有关这两个选项的更多信息: https://learn.microsoft.com/pt-pt/azure/azure-signalr/signalr-concept-scale-aspnet-core

为什么不自己部署 SignalR?

将支持核心 SignalR ASP.NET 核心 SignalR 作为后端组件部署到整个 Web 应用程序的自己的 Azure Web 应用仍然是一种有效的方法。 使用 Azure SignalR 服务的主要原因之一是简单性。使用 Azure SignalR 服务,无需处理性能、可伸缩性和可用性等问题。这些问题通过 99.9% 的服务级别协议为您处理。 此外,WebSocket 通常是支持实时内容更新的首选技术。但是,在扩展时,对大量持久 WebSocket 连接进行负载平衡成为一个需要解决的复杂问题。常见解决方案利用:DNS 负载平衡、硬件负载平衡器和软件负载平衡。Azure SignalR Service 可为你处理此问题。 另一个原因可能是您根本没有实际托管 Web 应用程序的要求。Web 应用程序的逻辑可以利用无服务器计算。例如,代码可能仅使用 Azure 函数触发器按需托管和执行。此方案可能很棘手,因为代码仅按需运行,并且不会与客户端保持长时间连接。Azure SignalR 服务可以处理这种情况,因为该服务已为你管理连接。有关更多详细信息,请参阅有关如何将 SignalR 服务与 Azure Functions 配合使用的概述。

是的,你可以,这是官方的快速入门示例。 https://learn.microsoft.com/en-us/azure/azure-signalr/signalr-quickstart-dotnet-core

最新更新