繁体   English   中英

SignalR集线器是否自主?

[英]SignalR hub self-host or not?

我正在开发一个项目,其中SignalR集线器启动了12个短期运行的线程(新的Thread())。 每个线程在完成时使用websockets向客户端报告。 线程不是CPU密集型的,而是从其他Web服务获取一些信息。

现在我的困境是这样的:我应该创建一个作为服务运行的独立自托管signalR集线器应用程序,还是应该在我的asp.net MVC项目中包含集线器?

明智的表现是什么?

在.net 4.5以后执行此操作的正确方法是执行此单线程异步

ASP.Net永远不应该创建新的线程 在ASP.Net中明确使用线程时,会产生巨大的性能影响。

此外,您应该知道线程是有限的CPU资源的抽象 (您通过声明您的线程不是CPU密集型而注意到这一点)。 在.net 4.5以后,这应该告诉你不应该使用线程。 相反,在这种情况下,您应该使用无线I / O api来调用您的Web服务。 我建议你使用TAP(aka async await )模式,基本上是.net 4.5。

这应该允许您使用中等强大的计算机扩展到数千个并发请求。

如果您使用TAP完成所有这些工作,ASP.Net MVC / IIS将在大规模并行化和“线程化”方面发挥良好作用。 在这种情况下,我会建议高度反对使用Windows服务 ,因为您将使用IIS作为引导程序具有更好的稳定性(处理生命周期,并在服务终止时重新启动服务)。

如果性能是一个问题,我会使用线程池而不是新线程。

我将托管是一个Windows服务,因为这将给我更多的控制资源分配给线程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM