Signalr 如何在不使用现有背板选项的情况下实现信号器扩展

Signalr 如何在不使用现有背板选项的情况下实现信号器扩展,signalr,signalr-backplane,Signalr,Signalr Backplane,我正在使用负载平衡器后面的多台服务器中托管的signar。我正在sql server中的自定义数据库表中存储连接id和用户id。每次,我都需要向所选用户发送通知。它在单服务器环境中运行良好。在不使用现有背板选项的情况下,如何使用自定义数据库表扩展SignalR实现?我不确定您当前的实现是什么,因为您的解释似乎有点混淆。如果在负载平衡器后面有多台服务器,这意味着应用了一些技术(我想是的!)。但您说过它在单服务器环境中工作正常,但在多服务器环境中却不行。让我们回顾一下多台服务器的强制要求(向外扩展)

我正在使用负载平衡器后面的多台服务器中托管的signar。我正在sql server中的自定义数据库表中存储连接id和用户id。每次,我都需要向所选用户发送通知。它在单服务器环境中运行良好。在不使用现有背板选项的情况下,如何使用自定义数据库表扩展SignalR实现?

我不确定您当前的实现是什么,因为您的解释似乎有点混淆。如果在负载平衡器后面有多台服务器,这意味着应用了一些技术(我想是的!)。但您说过它在单服务器环境中工作正常,但在多服务器环境中却不行。让我们回顾一下多台服务器的强制要求(向外扩展)

  • 实例之间的通信:这意味着一个实例中的任何消息在所有其他实例上都可用。经典的实现是任何类型的队列,SignalR支持Redis,您可以使用SQL Server,但任何SQL解决方案的局限性都是显而易见的。Azure有一个Redis缓存作为PaaS

  • 内存存储:通常在单个服务器中使用,但必须实现共享内存。同样,Redis有一个共享内存解决方案,以防服务器可用。如果没有像Redis这样的解决方案,就不可能实现这一点。 同样,性能较低的解决方案是在SQL中实现MemStorage

  • 身份验证:安全性的现成实现使用cookie存储加密密钥。但是,一旦您拥有多个服务器,每个服务器都有其唯一的密钥。要解决这个问题,您必须实现自己的DataProtector,以防您使用这种方法


  • 这些例子远远超出了这个解释,大多数代码(即使没有实现实际方法的模板)都需要几页。我建议您看看扩展应用程序所必需的3个项目。

    我不确定您当前的实现是什么,因为您的解释似乎有点混淆。如果在负载平衡器后面有多台服务器,这意味着应用了一些技术(我想是的!)。但您说过它在单服务器环境中工作正常,但在多服务器环境中却不行。让我们回顾一下多台服务器的强制要求(向外扩展)

  • 实例之间的通信:这意味着一个实例中的任何消息在所有其他实例上都可用。经典的实现是任何类型的队列,SignalR支持Redis,您可以使用SQL Server,但任何SQL解决方案的局限性都是显而易见的。Azure有一个Redis缓存作为PaaS

  • 内存存储:通常在单个服务器中使用,但必须实现共享内存。同样,Redis有一个共享内存解决方案,以防服务器可用。如果没有像Redis这样的解决方案,就不可能实现这一点。 同样,性能较低的解决方案是在SQL中实现MemStorage

  • 身份验证:安全性的现成实现使用cookie存储加密密钥。但是,一旦您拥有多个服务器,每个服务器都有其唯一的密钥。要解决这个问题,您必须实现自己的DataProtector,以防您使用这种方法


  • 这些例子远远超出了这个解释,大多数代码(即使没有实现实际方法的模板)都需要几页。我建议您查看扩展应用程序所必需的3项内容。

    在您的场景中-您能将所有需要相互交谈的用户保留在一台服务器上吗?在您的场景中-您能将所有需要相互交谈的用户保留在一台服务器上吗?您能至少添加源代码或文章的链接吗关于自定义背板实现的其他问题?我相信至少有一些好的东西可以真正帮助问题的开始。我将添加一些例子(最低限度),可以导致理解的概念。。。我自己已经实现了一个完整的解决方案,但是有很多代码。你可以提供到你的存储库的链接,是吗?这将对其他人非常有帮助。很抱歉,我无法让您访问我的存储库,因为我不拥有该项目,而且我会遇到法律问题,这就是为什么我必须创建一些新内容并共享它。那么,您的回答没有提供有关如何使用自定义数据库扩展Signal的信息。这就是topic starter要问的问题。您能否至少添加源代码或文章的链接,或其他关于自定义背板实现的已回答问题?我相信至少有一些好的东西可以真正帮助问题的开始。我将添加一些例子(最低限度),可以导致理解的概念。。。我自己已经实现了一个完整的解决方案,但是有很多代码。你可以提供到你的存储库的链接,是吗?这将对其他人非常有帮助。很抱歉,我无法让您访问我的存储库,因为我不拥有该项目,而且我会遇到法律问题,这就是为什么我必须创建一些新内容并共享它。那么,您的回答没有提供有关如何使用自定义数据库扩展Signal的信息。这就是话题发起者要问的。