为什么在部署Blazor服务器端应用程序时建议使用Azure Signal服务?
当我在Azure上发布Blazor服务器端应用程序时,Visual Studio会提示一条消息,内容如下: 您的应用程序正在使用信号器。对于需要扩展的环境,我们强烈建议添加对Azure Signal服务的依赖 然而,我的应用程序运行正常,没有使用Azure Signal服务。所以我想知道整合它是否真的有意义,或者这只是微软从我们口袋里挤出一些额外的钱的一种方式 是否有人尝试过部署Blazor服务器端应用程序,包括Azure Signal服务和不包括Azure Signal服务,以测试性能是否存在任何实际差异?我应该从中得到什么样的好处 Blazor服务器应用程序构建在ASP.NET核心信号器之上。每个 客户端通过一个或多个信号器连接与服务器通信 称为电路。电路是Blazor对信号机的抽象 允许临时网络中断的连接。当 Blazor客户端看到信号器连接断开,它 尝试使用新的信号器连接重新连接到服务器 连接到浏览器的每个浏览器屏幕(浏览器选项卡或iframe) Blazor服务器应用程序使用信号器连接。这是另一个问题 与典型的服务器呈现应用程序相比,这是一个重要的区别。在一个 服务器呈现的应用程序,在多个浏览器屏幕中打开同一应用程序 通常不会转化为对资源的额外需求 服务器。在Blazor服务器应用程序中,每个浏览器屏幕都需要一个 要创建的元件状态的单独电路和单独实例 由服务器管理 无论何时需要缩放信号器,都需要实现一个称为背板的模式。使用Azure信号器服务,它已经存在,所以您不需要自己做为什么在部署Blazor服务器端应用程序时建议使用Azure Signal服务?,azure,blazor-server-side,asp.net-core-signalr,azure-signalr,asp.net-blazor,Azure,Blazor Server Side,Asp.net Core Signalr,Azure Signalr,Asp.net Blazor,当我在Azure上发布Blazor服务器端应用程序时,Visual Studio会提示一条消息,内容如下: 您的应用程序正在使用信号器。对于需要扩展的环境,我们强烈建议添加对Azure Signal服务的依赖 然而,我的应用程序运行正常,没有使用Azure Signal服务。所以我想知道整合它是否真的有意义,或者这只是微软从我们口袋里挤出一些额外的钱的一种方式 是否有人尝试过部署Blazor服务器端应用程序,包括Azure Signal服务和不包括Azure Signal服务,以测试性能是否存在
这里有几个变量,因此没有人能告诉您“在X个客户端以上,您需要使用信号服务”。根据您的解决方案的配置方式,一个或另一个组件可能是限制因素 例如,显示每个web应用实例的最大web套接字数。对于基本层,它是350。当您需要351时,您可以选择:
- 将应用程序服务计划扩展到标准或更高级别李>
- 添加其他实例并使用Redis或Service Bus背板李>
- 使用信号机服务李>
- 从SignalR禁用WebSocket,并依赖长轮询之类的方式,这受到服务器资源的限制李>
所以在说了所有这些之后,答案是“这取决于很多事情。”在两种方式都做了之后,我会继续使用信号服务 我知道这是个老问题,但我想补充一些关于成本的有价值的信息 Azure Signal的成本可能会急剧快速增加。消息大小被2k除以,因此从计费角度来看,10k消息将是5条消息 使用免费层,您最多可以获得20个并发连接,每天发送20k条消息,而标准层允许每个单元1k个并发连接,每个单元每天发送100万条消息。每个单位每月49美元。然后是每一百万条信息的1美元
这可能看起来不多,但我已经看到一项服务在短短7天内累积了价值超过3000美元的信号服务。如果您没有真正投入生产,或者这是一个宠物项目,只需将Blazor Hub配置更新为长池,而不是WebSocket,这样您就不会在控制台中出现错误
app.UseEndpoints(endpoints =>
{
//...
endpoints.MapBlazorHub(options =>
{
options.Transports = HttpTransportType.LongPolling;
});
//...
});
到目前为止,Azure应用程序服务的免费定价第F1层WebSocket是有限的(参考)。
Ofcource WebSockets比长池方法好得多,这取决于您是否为单独的Azure服务(Azure Signal)付费。您是否单击了“更多信息”?当然,但他们所说的非常通用,与Blazor没有任何关系。我想知道,在特定情况下,仅将SignalR用作Blazor服务器端托管模型的一部分的应用程序是否真的需要Azure SignalR服务。我知道SignalR在Blazor服务器端是如何使用的,问题更多的是,根据您的经验,Blazor是否非常需要Azure Signal之类的服务。您提到了“缩放”,我想您指的是同时处理多个连接?如果是这样的话,“多少”是多少?因为你看,魔鬼就在细节中。我觉得微软故意含糊其辞,以便推出一项许多人可能不需要的服务。我还刚刚了解到,如果将web应用扩展到多个服务器实例,SignalR将不再是现成的:只有连接到发送通知的实例的客户端才会收到通知。这是使用Azure Signal服务的另一个原因。这正是我想要的。Thanks@tocqueville,这回答了你的问题吗