【问题标题】:Azure service bus or just Azure web app when using SignalR使用 SignalR 时的 Azure 服务总线或仅 Azure Web 应用程序
【发布时间】:2017-03-28 15:36:08
【问题描述】:

我从未使用过 Azure。现在,我有一个问题。 我将使用 SignalR 在 Xamarin 表单上进行聊天。因此,聊天将有一个 1:1 和一个组 1:all 。它适合 700 到 1.000 人的小团体。查看互联网,我不明白我是否必须为 Azure 应用服务(标准)+ Azure 总线服务付费,或者只是 Azure 总线服务,或者只是 Azure 应用服务。

【问题讨论】:

    标签: c# azure xamarin signalr chat


    【解决方案1】:

    简短回答:如果您想使用 SignalR,您只需要为 Azure App Service 付费即可创建单个 Web 应用程序。

    您需要 Service Bus 的唯一原因是您决定将 Web 应用扩展到多个实例。要跨多个 Web 应用进行同步,SignalR 需要消息传递底板。这就是服务总线的用途。 SignalR 消息传递底板的其他选项是 Redis(非常快)或 Azure SQL(较慢)。我个人将 Service Bus 用于我的 SignalR 消息传递底板。但同样,如果您的 Web 应用程序只使用一个实例,则不需要服务总线。

    【讨论】:

    • 感谢您的回答。你是什​​么意思实例?我是一个初学者...在我的情况下,我将拥有一个 Android 和 iOS 应用程序 (xamarin)... 1:1 聊天和一个包含所有 800 个用户的组。现在有近 800 个用户......最多只有 1k。
    • What do you mean with instance ? 它是运行您的应用程序的虚拟机实例。正如 Rob Reagan 所说,如果您的 Web 应用程序将扩展到多个实例,您可以参考scaleout in SignalR
    • @FredHan-MSFT,我假设 MC Fer 希望在服务器上安装一个 SignalR Hub,用于接收所有聊天消息并将它们转发给适当的收件人。鉴于此,我认为 Web 应用程序将比托管在 VM 上的独立应用程序更好。你的想法?
    • @MCFer,您可以创建一个 Azure Web 应用程序,默认情况下会有一个实例。如果您需要比单个实例更多的处理能力,您可以添加其他实例。两个实例就像让两台服务器运行相同的代码,Azure 网络负载均衡器将传入请求路由到两个实例之一。如果您使用多个实例,则只需要一个服务总线背板。您可以通过搜索“Scale Out”而不是“Scale Up”来阅读有关多个实例的更多信息。
    • 不,您可以在同一个 Azure Web 应用实例上的同一个 Web 应用程序中同时托管 WebAPI 和 MVC 页面。
    【解决方案2】:

    如果您有 MSDN 帐户,您可以获得一定数量的免费信用额度,但每种类型的 Azure 服务通常都需要收费。查看 azure 上的定价页面,您将能够判断哪个是您的最佳选择,或者如果您与 Microsoft 没有联系,那么您可以查看 Amazon 的 RabbitMQ 产品。

    如果您不确定定价,请咨询 Microsoft 销售人员,他们过去曾帮助过我,而且非常好。

    【讨论】:

    • 我还想补充一点,Azure 有免费的应用服务计划F1。它有一些限制,比如没有自定义 url、没有 websockets(所以你的 SignalR 连接将默认为长轮询),也没有永远在线。但是,如果您不关心性能,那也可以。
    • 是的。但我的问题是关于是否使用服务总线。我问微软并等待答案。我的理解是,我的应用程序对于一个小组来说是怎样的,我不需要服务总线,但我不确定。就像我说的那样,我将只有一个包含所有用户的组(1 个主题,最多 1k 订阅)或聊天 1:1
    猜你喜欢
    • 2012-07-26
    • 2019-01-10
    • 2017-10-07
    • 2017-01-13
    • 2016-12-10
    • 1970-01-01
    • 2023-04-05
    • 2019-12-12
    • 1970-01-01
    相关资源
    最近更新 更多