asp.net - 我们什么时候应该使用 SignalR 自托管,什么时候不应该使用?

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

我正处于在项目中使用 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 来执行此操作, RedisSQL .

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

请务必阅读documentation for self-hosting SignalR并决定您是否确实需要自行托管 SignalR。

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

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

关于asp.net - 我们什么时候应该使用 SignalR 自托管,什么时候不应该使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32263227/

相关文章:

jquery - 服务器代码标签在 jQuery 脚本中给出警告(预期表达式)

c# - 如何使用 web.config 文件强制使用 HTTPS

asp.net - 处理ASP.NET中的错误

c# - 在 ASP.NET 中使用 HTTP 处理程序生成要在电子邮件中显示的图像

c# - ASP - 来自 streamwriter 的提示保存文件对话框

.net - 在 IIS 服务器上的 PUT API 调用期间未触发 Application_BeginRequest

iis - IISreset和应用程序池回收在影响缓存方面有什么区别

javascript - 在 MVC3 View 中使用 AJAX 更新字段

asp.net-mvc - 如何阻止 NewRelic 在我的本地机器上运行?

asp.net - 在asp.net core中将文件路径转换为URL