簡體   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