我的团队正在决定我们后端系统的架构:
- Webserver A是一个ASP.NET MVC应用程序,带有ASP.NET Web API组件,托管在Azure网站中。
- Windows Service B是一个自托管的OWIN服务器,它会定期将通知推送到订阅Azure VM中托管的通知的客户。
- Windows Service C是一个订阅来自B的通知的客户端,托管在Azure VM中。
醇>
由于我们在.NET
堆栈中或多或少根深蒂固,我们将B实现为SignalR
服务器,其中C为SignalR
客户端。这部分似乎运作良好。
现在我们还希望A订阅B,但我意识到这意味着ASP.NET Web服务器将充当SignalR
客户端,而不是典型的情况,它充当SignalR
服务器。
我认为我们可以初始化SignalR
中的Global.asax
连接并使流程始终运行以避免AppDomain
回收。但是,当Web服务器执行除服务Web请求之外的其他操作时,我觉得有点不确定。此解决方案还使Web服务器不是无状态的,因为它需要维护Web套接字连接。
将ASP.NET
应用程序设为SignalR
客户端是否存在根本错误?这个设置有没有可能的问题?
答案 0 :(得分:0)
在Azure中,您无法判断您的AppDomain是否会回收。由于许多原因,它可以重新启动以进行修复,然后您将最终建立与SingleR服务器的新连接。这对你好吗?
此外,SingleR主要用于Web功能改进,其中Web客户端上的轮询和刷新变得简单。但是由于你的要求似乎都是后端的东西,我建议你选择任何其他事件驱动模式。检查Azure Service Bus主题/订阅模型,以使不同的组件侦听各种事件并相应地执行操作。