Asp.net web api 在WebApi和MVC项目之间共享信号器中心

Asp.net web api 在WebApi和MVC项目之间共享信号器中心,asp.net-web-api,signalr,signalr-hub,Asp.net Web Api,Signalr,Signalr Hub,是否有一种推荐的跨两个应用程序共享信号集线器的方法 实际情况是一个面向公众的WebAPI项目和一个内部MVC WebApp。我想做的是从WebAPI项目中调用SignalR hub上的方法,并将这些方法的结果推送到通过MVC应用程序连接的客户端 最好的选择是创建第三个“中心”项目并让两个项目都连接到该项目吗?如果是,如何管理中心实例?两个应用程序能否从不同的应用程序池(可能还有主机)获取对同一中心的引用 我读了一些关于GlobalHost.ConnectionManager.GetHubCont

是否有一种推荐的跨两个应用程序共享信号集线器的方法

实际情况是一个面向公众的WebAPI项目和一个内部MVC WebApp。我想做的是从WebAPI项目中调用SignalR hub上的方法,并将这些方法的结果推送到通过MVC应用程序连接的客户端

最好的选择是创建第三个“中心”项目并让两个项目都连接到该项目吗?如果是,如何管理中心实例?两个应用程序能否从不同的应用程序池(可能还有主机)获取对同一中心的引用

我读了一些关于
GlobalHost.ConnectionManager.GetHubContext
的文章,这是否足以让两个应用程序都能使用一个有效的单例集线器


非常感谢您的任何想法。

只需通过SQL Server表设置信号器消息路由。它将使用相同的路由设置自动连接所有集线器。没别的事可做,这是魔法

GlobalHost.DependencyResolver.UseSqlServer(ConfigurationManager.ConnectionStrings["signalr"].ConnectionString);

您将需要以下nuget软件包:Microsoft.AspNet.signer.SqlServer

signer支持不同域中的CORS,因此您可以使用一个应用程序为这两个应用程序提供服务。p.s+一个很好的问题。这是否意味着最好将中心提取到一个单独的应用程序中,并让另外两个应用程序调用它?这是我的怀疑,因为我想不出一个好办法来把它放在任何一个现有的项目中,让他们互相打电话。请看一下这个。有趣的是,我们的目标是将WebAPI和MVC应用程序部署到Azure,但采用VPN/VM的形式,两个站点运行在同一个VM上。我不能100%确定这是否算作一台服务器(希望是),因此我们可以避免使用背板方法,但仍然需要在应用程序之间共享一个集线器,我可以告诉你,在接下来的几个小时里/明天,你将从sR团队成员那里得到比我知识多得多的更合适的答案:-)我将继续跟踪这个问题,因为我希望听到解决这个问题的最佳实践。如果两个应用都驻留在同一台机器上,是否需要通过SQL表路由?我们的另一个开发人员倾向于通过普通控制器将signalr代码移动到webapi,并让MVC项目发出标准请求来连接、建立套接字和发送/接收MessagesName机器或相同的web应用程序?如果它们在同一个应用程序中,那么您不需要dependencyresolver,hub将是一个实例。否则,如果它们位于单独的应用程序池或单独的web应用程序中,则您将需要dependencyresolver、SQL或任何其他应用程序。根据问题,它们将是不同的应用程序,一个WebAPI和一个MVC,但在同一台机器上,我认为需要依赖项解析。它们将无法通信,因为它们不共享相同的内存地址空间。它们是孤立的。这是我们追求的解决方案,我们的一个开发人员实现了SQL背板,我们将SignalR hub代码提取到一个单独的程序集中,由MVC和WebAPI项目共享,效果很好……但在SQL Azure上除外,因为它不受支持:(