azure - 为什么在部署 Blazor 服务器端应用程序时建议使用 Azure SignalR 服务?

标签 azure blazor-server-side asp.net-core-signalr azure-signalr asp.net-blazor

当我在 Azure 上发布 Blazor 服务器端应用程序时,Visual Studio 会提示一条消息:

您的应用程序正在使用 SignalR。对于需要扩展的环境,我们强烈建议添加对 Azure SignalR 服务的依赖项。

但是,我的应用程序运行得很好,没有使用 Azure SignalR 服务。所以我想知道集成它是否真的有意义,或者这只是微软从我们口袋里榨取一些额外美元的一种方式......

是否有人尝试过使用和不使用 Azure SignalR 服务来部署 Blazor 服务器端应用程序,以测试性能方面是否存在任何实际差异?我应该从中获得什么样的优势?

enter image description here

最佳答案

这里有一些变量,所以没有人可以告诉你“在 X 个客户端之上,你需要使用 SignalR 服务。”根据解决方案的配置方式,一个组件或另一个组件可能是限制因素。

例如,App Service service limits显示每个 Web 应用程序实例的最大 Web 套接字数。对于基本层,它是 350。当您需要 351 时,您的选择是:

  • 将您的应用服务计划扩展至标准或更高版本。
  • 添加额外实例并使用 Redis 或服务总线底板。
  • 使用 SignalR 服务。
  • 从 SignalR 禁用 Websockets 并依赖于长轮询之类的东西,这受到服务器资源的限制。

在您进入标准服务层并扩展到多个 Web 应用程序实例后,您可以自己托管 SignalR。我们已经通过四个标准 S3 实例以这种方式运行了超过 5K 个并发连接的客户端。四是一个误导性的数字,因为我们需要应用程序其他部分的马力,而不仅仅是 SignalR。

当您自己托管 SignalR 时,它会施加一些限制,并且您可以通过多种创造性的方式来吊死自己。例如,使用 SignalR netcore,您需要拥有多实例环境的 ARR 关联 token 。太糟糕了。我曾经在前端关闭连接后实现了紧密轮询重新连接。当我们的服务器宕机超过两分钟后又恢复时,我们有几千个网络浏览器紧密轮询试图重新连接,这很有趣。在标准层 Web 应用程序中,很难掌握多个 Websocket 连接消耗的内存和 CPU 百分比。

所以说完这一切之后,答案是“这取决于很多事情”。完成这两种方式后,我将继续使用 SignalR 服务。

关于azure - 为什么在部署 Blazor 服务器端应用程序时建议使用 Azure SignalR 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60659477/

相关文章:

azure - 应用程序服务免费层上基于计时器的 azure 功能未触发

Azure 数据流需要几分钟才能触发下一个管道

powershell - 如何使用 PowerShell 更新现有的 AzureRm 虚拟网络?

c# - 使用 Blazor Server 检查表单提交后如何重定向到另一个页面?

azure-active-directory - Asp.Net 托管 Blazor + Azure AD 身份验证

asp.net-core - ASP NET Core SignalR OnDisconnectedAsync 未使用集线器触发 [授权]

c# - 在 Azure Web App 中启动期间使用 AddAzureKeyVault 时出现 SocketException (10060)

angular - .NET Core 2.1 SignalR 使用 Angular 6 客户端进行长轮询的回退

asp.net-core - 在 ASP.NET Core SignalR 中从 TestServer 初始化 HubConnection

blazor-server-side - 在 Editform 中单击取消(重置按钮)时,Blazor 将模型重置为初始状态