当我们应该使用SignalR自己托管,当我们不应该?
问题描述:
我在使用SignalR的阶段在我的项目中,我不明白什么时候使用Self托管选项,什么时候我们不应该使用。作为一个例子,如果我愿意主机服务器场中我的web应用程序,当我们应该使用SignalR自己托管,当我们不应该?
- 将有独立的托管服务器在每个IIS服务器
- 独立SignalR枢纽
如果我们要广播消息进入每个客户端,SignalR如何工作
答
SignalR在多个实例中运行的想法是,实例A上连接的客户端无法从连接到实例B的客户端获取消息。
(SignalR scaleout documentation)
然而,当你向外扩展,客户端可以被路由到不同的服务器 。连接到一台服务器的客户端将不会收到从另一台服务器发送的消息 。
解决方案是使用backplane
- 每当服务器收到一条消息,它就会将其转发给所有其他服务器。你可以使用Azure Service Bus,Redis或SQL来做到这一点。
我看到的方式是,如果您不希望完整的IIS运行(因为您有一些轻量级操作不需要所有IIS沉重),或者您不希望Web服务器(例如,您希望将实时功能添加到现有的让我们说的表单应用程序或任何其他进程中)。
请务必阅读documentation for self-hosting SignalR并确定您是否确实需要自行托管SignalR。
如果您正在IIS下开发Web应用程序,我看不到任何您希望自行托管SignalR的原因。
希望这会有所帮助。祝你好运!
这是回答您的一些问题吗? –