使用ASP.NET Web应用程序作为SignalR客户端

时间:2015-06-04 06:25:58

标签: asp.net azure windows-services signalr

我的团队正在决定我们后端系统的架构:

  
      
  1. Webserver A是一个ASP.NET MVC应用程序,带有ASP.NET Web API组件,托管在Azure网站中。
  2.   
  3. Windows Service B是一个自托管的OWIN服务器,它会定期将通知推送到订阅Azure VM中托管的通知的客户。
  4.   
  5. Windows Service C是一个订阅来自B的通知的客户端,托管在Azure VM中。
  6.   

由于我们在.NET堆栈中或多或少根深蒂固,我们将B实现为SignalR服务器,其中C为SignalR客户端。这部分似乎运作良好。

现在我们还希望A订阅B,但我意识到这意味着ASP.NET Web服务器将充当SignalR客户端,而不是典型的情况,它充当SignalR服务器。

我认为我们可以初始化SignalR中的Global.asax连接并使流程始终运行以避免AppDomain回收。但是,当Web服务器执行除服务Web请求之外的其他操作时,我觉得有点不确定。此解决方案还使Web服务器不是无状态的,因为它需要维护Web套接字连接。

ASP.NET应用程序设为SignalR客户端是否存在根本错误?这个设置有没有可能的问题?

1 个答案:

答案 0 :(得分:0)

在Azure中,您无法判断您的AppDomain是否会回收。由于许多原因,它可以重新启动以进行修复,然后您将最终建立与SingleR服务器的新连接。这对你好吗?

此外,SingleR主要用于Web功能改进,其中Web客户端上的轮询和刷新变得简单。但是由于你的要求似乎都是后端的东西,我建议你选择任何其他事件驱动模式。检查Azure Service Bus主题/订阅模型,以使不同的组件侦听各种事件并相应地执行操作。