【问题标题】:Do I have to use Azure SignalR for a SignalR service deployed to Azure?我是否必须将 Azure SignalR 用于部署到 Azure 的 SignalR 服务?
【发布时间】:2021-06-14 16:43:03
【问题描述】:

我知道这个问题听起来很奇怪,但最近的测试让我怀疑我的 SignalR 实现。

我的启动类中有以下内容(省略了其他设置以使事情尽可能简单):

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddSignalR().AddAzureSignalR();
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapHub<BearHub>("/bear");
        });
    }

我的 Azure 帐户中有一个付费的 SignalR 订阅,当我使用 .AddAzureSignalR() 部分时,它会从我的应用设置文件中读取。它工作正常。

后来,我们需要添加一些集成测试。出于某种原因,经过多次尝试,我们发现我们的 in-memory SignalR 测试类在我们删除 AddAzureSignalR() 部分后可以正常工作! 这让我记得,在 Azure 成为许多公司的选择之前,我早就看过 SignalR 的示例。这意味着:公司只是在其正常的应用服务中使用 SignalR……或者我也是这样。

因此,我不确定在使用 AzureSignalR 而不是仅具有 SignalR 功能的应用服务时要添加什么。我去了Azure SignalR site,它声称有一些不清楚的地方:

您不必仅仅因为解决方案中需要实时功能就配置和维护服务器。 SignalR 服务是完全托管的,可以轻松地将实时通信功能添加到您的应用程序中。无需再担心托管、可扩展性、负载平衡等细节!

我不需要使用应用服务来维护服务器。我不需要担心托管、可扩展性和平衡。 平衡部分可能是这里的关键,因为它可以以比应用服务更好的方式自动管理。但其他点似乎只是宣传

从 Azure 提供的一切中受益!轻松与 Azure Functions、Azure Active Directory、Azure Storage、Azure App Service、Azure Analytics、Power BI、IoT、认知服务、机器学习等服务集成。

仅 SignalR 和应用服务就是如此。如果我删除 AddAzureSignalR() 部分,它不会改变。

我不确定我们是否为不需要的东西付费(即使它根本不贵)

【问题讨论】:

    标签: azure signalr azure-signalr


    【解决方案1】:

    Azure SignalR 服务与其他服务相比是相当新的。 SignalR 早在 2013 年就开始了。所以你可以在没有 Azure SignalR 服务的情况下在你的应用服务中使用它。我们自己这样做。我什至猜想大多数 Signal R 应用程序仍在使用他们“自己的”基础设施,只是因为他们还没有迁移。

    MSDN 甚至为此提供了 official full sample

    在提到的好处中,SaaS 解决方案对我有两个主要好处:

    • 将 SignalR 与您的其他基础架构分离
    • 缩放。如果您使用应用服务进行横向扩展,则必须使用 redis backplane,这会大大增加成本和基础架构。

    【讨论】:

    • 感谢您的回答。不必使用 Redis 或其他缓存是考虑它的充分理由。就我而言,它证明了成本是合理的......另一方面,我想知道它提供了多少额外的解耦,因为仅实现 SignalR 逻辑的服务可以连接或不连接到 AzureSignalR......换句话说,它看起来一样就与您的架构的耦合而言......除非是横向扩展
    猜你喜欢
    • 1970-01-01
    • 2019-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-31
    • 2017-10-07
    • 2017-01-13
    相关资源
    最近更新 更多