当我们应该使用SignalR自托管时,何时不应该?

时间:2015-08-28 04:12:27

标签: asp.net asp.net-mvc iis signalr server-farm

我正处于在项目中使用SignalR的阶段,我不明白何时使用自托管选项以及何时不应使用。例如,如果我愿意在服务器场中托管我的Web应用程序,

  • 将有单独的托管服务器
  • 每个IIS服务器中的单独SignalR集线器

如果我们想向每个客户端广播消息,那么它在SignalR中的工作原理

1 个答案:

答案 0 :(得分:1)

在多个实例中运行SignalR的想法是,在实例A上连接的客户端无法从连接到实例B的客户端获取消息。

SignalR scaleout documentation

  

但是,当您向外扩展时,客户端可以路由到不同的路由   服务器。连接到一台服务器的客户端将无法接收   从另一台服务器发送的消息。

解决方案是使用backplane - 每次服务器收到消息时,它都会将其转发给所有其他服务器。您可以使用Azure Service BusRedisSQL

执行此操作

我看到的方式是,当您不希望运行完整的IIS(因为您有一些不需要所有IIS重量级的轻量级操作)或者您不需要Web服务器时,可以使用自托管主机选项完全没有(例如,您希望将实时功能添加到现有的let表示应用程序或任何其他进程中。)

请务必阅读documentation for self-hosting SignalR并确定您是否确实需要自我主持SignalR。

如果您正在IIS下开发Web应用程序,我认为您没有任何理由想要自我托管SignalR。

希望这会有所帮助。祝你好运!