[英]SignalR self-host windows form - UI Interaction Between Hub and GUI
[英]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.