簡體   English   中英

.NET 4.5 WebSockets與SignalR

[英].NET 4.5 WebSockets vs SignalR

我已經看到了用於asp.net MVC聊天應用程序的signalR vs html5 websockets,但它沒有100%回答我的問題,因為它基於HTML5 WebSockets,微軟可能已經在.NET 4.5中使用他們的WebSocket對象進行了擴展。

我想知道WebSocket功能是否確實與SignalR相同,並且在WebSockets不可用時又回退到長輪詢? 當然,微軟在采用這種技術的方法中會采用與SignalR相同的技術嗎?

編輯:

對於其他任何想知道這個的人,我發現這個評論最有助於理解這個場景以及為什么我會使用SignalR:

嗯,他們不是真的。 到目前為止,IIS和ASP.NET沒有內置任何受支持的WebSockets,因此SignalR項目必須自己構建它。 現在微軟正在提供管道,SignalR可以輕松切換到使用微軟的實現,無論是自己的還是替代。 SignalR是一個實現細節的抽象,WebScockets類是實現細節

我認為SignalR是要走的路,並且無論如何都將成為.NET本身的一部分(並且可能擴展/合並/替換web-socket支持)。 它在支持時使用Web套接字,並且當它不支持時使用一致的客戶端輪詢黑客,因此,它是要走的路。

更新:

由於這個答案仍然被提升,值得一提的是SignalR現在正式成為ASP.NET的一部分。

檢查http://asp.net/signalr

更新:.NET Core

正如@yazanpro在評論中指出的那樣,SignalR也被添加到.NET Core中。

在.NET Core 2.1中可用,並且還有官方文檔

  1. 我想知道WebSocket功能是否確實與SignalR相同,並且在WebSockets不可用時又回退到長輪詢?

    WebSockets是一種獨立於其他通信技術的新協議。 來自RFC

    該技術的目標是為基於瀏覽器的應用程序提供一種機制,該機制需要與不依賴於打開多個HTTP連接的服務器進行雙向通信( 例如,使用XMLHttpRequest或s和長輪詢 )。

  2. 當然,微軟在采用這種技術的方法中會采用與SignalR相同的技術嗎?

    如果他們想要符合規范他們不會。 當然,沒有什么可以阻止微軟開發類似於SignalR的更高級別的API,這樣可以抽象出通信細節並提供優雅的回退。 然而,假設的API可能建立在WebSocket類之上而不是替換它。

SignalR使用OWIN,如果瀏覽器支持Web套接字,則使用WebSockets連接;如果瀏覽器不支持WebSockets,則使用長輪詢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM