我正处于在项目中使用 SignalR 的阶段,我不明白何时使用自托管选项以及何时不应该使用。举个例子,如果我愿意在服务器场中托管我的 Web 应用程序,
- 将有单独的托管服务器
- 每个 IIS 服务器中都有单独的 SignalR 中心
如果我们想向每个客户端广播消息,这在 SignalR 中是如何工作的
最佳答案
SignalR 在多个实例中运行的想法是,连接到实例 A 的客户端无法从连接到实例 B 的客户端获取消息。
( SignalR scaleout documentation )
However, when you scale out, clients can get routed to different servers. A client that is connected to one server will not receive messages sent from another server.
解决这个问题的方法是使用背板
- 每次服务器收到消息时,都会将其转发到所有其他服务器。您可以使用 Azure Service Bus 来执行此操作, Redis或SQL .
在我看来,当您不希望完整的 IIS 运行(因为您有一些不需要所有 IIS 重量的轻量级操作)或者您不想要 Web 服务器时,您可以使用自主机选项(例如,您想要将实时功能添加到现有的表单应用程序或任何其他进程中)。
请务必阅读documentation for self-hosting SignalR并决定您是否确实需要自行托管 SignalR。
如果您正在 IIS 下开发 Web 应用程序,我看不出您有任何理由想要自托管 SignalR。
希望这有帮助。祝你好运!
关于asp.net - 我们什么时候应该使用 SignalR 自托管,什么时候不应该使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32263227/