2012-03-01 149 views
39

我見過signalR vs html5 websockets for asp.net MVC chat application但它並不是100%回答我的問題,因爲它基於HTML5 WebSockets,微軟可能已經用它們的WebSocket對象在.NET 4.5中擴展它。.NET 4.5 WebSockets vs SignalR

我想知道WebSocket功能是否確實和SignalR一樣,並且在WebSocket不可用時回退到長輪詢?毫無疑問,微軟會採用與SignalR相同的技術來實現這項技術?

編輯:

爲別人知道這件事,我發現這個評論是最有助於瞭解情況,爲什麼我會使用SignalR:

那麼,他們是不是真的。直到現在,IIS和ASP.NET沒有在支持的WebSocket中構建任何東西,所以SignalR項目必須自己構建它。現在,微軟正在提供管道 SignalR可以輕鬆切換到使用微軟的實施, 除了或自己的代替。 SignalR是 抽象了實施細則,WebScockets類是 實現細節

+1

正如在答案中提到的,SignalR的計劃是成爲.NET的一部分,它確實發生了,因爲它現在是ASP.NET的官方部分http://asp.net/signalr - 我更新了我的答案添加鏈接,並認爲你可能想知道。 – Meligy 2013-04-15 23:08:59

+0

啊,太好了!感謝這個@MohamedMeligy的更新,在覈心庫中看到SignalR是非常積極的。 – 2013-04-16 08:01:49

回答

18
  1. 我想知道如果WebSocket的功能不實際做的一樣SignalR並回落到長輪詢時的WebSockets不可用?

    WebSockets是獨立於其他通信技術的新協議。從RFC

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

  2. 當然微軟將實現相同的技術SignalR在他們的做法這項技術?

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

+2

我認爲OP是指這個:http://msdn.microsoft.com/en-us/library/system.net.websockets.websocket%28v=vs.110%29.aspx – BFree 2012-03-01 22:02:54

+0

是的BFree,我是!對不起,如果我不清楚我的問題RomanArmy。 – 2012-03-01 22:08:11

+0

@thedixon我知道,我也是這麼理解的。我認爲*不依賴...的RFC部分意味着WebSocket的規範不會回退到長時間輪詢。因此,如果微軟想要符合規範,他們也不會讓他們的WebSocket類落後於長時間的測試。 – R0MANARMY 2012-03-01 22:17:30

27

我覺得SignalR是要走的路,並且將是.NET本身的一部分,反正(並有可能延長/合併/替換網絡插座的支持)。它在受支持時使用Web套接字,並且在不一致的客戶端輪詢攻擊時使用,所以這是一條路。

更新:

由於這個答案還是會被upvoted,值得一提的是,SignalR現已正式ASP.NET的一部分。

檢查http://asp.net/signalr

+0

儘管我尊重你的答案,你知道現在的WebSockets現在是不是這樣做?如果我要使用SignalR,如果有技術的潛在合併 - 考慮到這一點,現在使用SignalR庫是否明智? – 2012-03-01 22:16:53

+1

我有關於此的筆記是來自微軟Justin King最近的筆記,他在幾天前向悉尼ALT.NET提交了SignalR。我知道SignalR在.NET核心中的合併將由SignalR人員自己完成,因此可能與目前的產品相比很少有變化。 – Meligy 2012-03-01 22:39:32

+0

令人難以置信的是,他們沒有將SignalR支持的websocket添加到Win7和Server 2008中。真是令人難以置信...... – Dave 2013-09-09 23:44:38

5

SignalR使用OWIN如果瀏覽器支持網絡套接字和長輪詢如果瀏覽器不支持的WebSockets將使用WebSockets連接。