最近,我们尝试使用SQL背板更改几个Web应用上的SignalR,以便在Web场中工作。
当我探索它的工作方式(朝向大多数可扩展性,最少失败点)的目标时,我们可以调整它的不同方式的数量正在增加。
目前,每个应用程序都使用SignalR来支持数据库中记录的轮询驱动的广播变化。
关于在所有应用上为所有SignalR实例使用一个背板的基本假设/观察:
所有具有一个公共背板的集线器和集线器实例(所有类型)都只在一条消息总线上。
所有中心实例基本上都是"合并"他们的客户端池。中心实例实际上无法知道他们拥有多少客户端。
可以在AppA的跟踪输出中看到来自某些AppB_Hub的消息流量。我假设如果AppA有一个名称相同的中心,他们就会发生冲突 - 或者只要他们意识到他们正在共享客户端,就可能没有。
问题/关切/未知数:
答案 0 :(得分:0)
Hub是独立的,因此不同的集线器可以很好地运行,如果将它们放在不同的程序集中并希望相互访问,请参阅here
名称和回调基于客户端连接到哪个集线器,如果客户端连接到一个或多个不同的集线器(如果每个客户端仅连接到一个集线器),则它们应该是唯一的用于调试目的
对于性能计数器,请参阅here,Microsoft在其天蓝色Web服务中使用signlR背板,因此它确实可以扩展,但基准数据上没有发布白皮书
如果你想使用接口方法IAppAHub和IAppBHub你的java脚本客户端可以调用IAppAHub和IAppBHub方法,如果你想限制你可以通过角色来调用它,你应该调查一下SignalR securty