2012-03-01 20 views
39

Ho visto signalR vs html5 websockets for asp.net MVC chat application ma non risponde al 100% alla mia domanda poiché si basa su WebSocket HTML5, che Microsoft potrebbe aver esteso su .NET 4.5 con il loro oggetto WebSocket..NET 4.5 WebSockets vs SignalR

Mi chiedo se la funzione WebSocket faccia effettivamente lo stesso di SignalR e ricada al polling lungo quando WebSockets non è disponibile? Sicuramente Microsoft implementerebbe la stessa tecnologia di SignalR nel loro approccio a questa tecnologia?

Edit:

Per chiunque altro interroga su questo, ho trovato questo commento il più utile per comprendere lo scenario e per questo sarò con SignalR:

Beh, in realtà non sono. Fino ad ora IIS e ASP.NET non disponevano di in quello che era supportato da WebSockets, quindi il progetto SignalR doveva essere creato da . Ora che Microsoft fornisce l'impianto idraulico, il SignalR può facilmente passare all'implementazione di Microsoft, in aggiunta o in sostituzione del proprio. SignalR è un astrazione su dettagli di implementazione, di classe WebScockets è il dettaglio implementazione

+1

Come menzionato in origine nella risposta, il piano per SignalR doveva essere parte di .NET, cosa che accadeva ora che è una parte ufficiale di ASP.NET http://asp.net/signalr - Ho aggiornato la mia risposta a aggiungi il link e hai pensato che ti sarebbe piaciuto saperlo. – Meligy

+0

Ah, fantastico! Grazie per l'aggiornamento su questo @MohamedMeligy, è davvero positivo vedere SignalR nella libreria principale. –

risposta

18
  1. Mi chiedo se la funzione WebSocket realtà non fare lo stesso come SignalR e cadere di nuovo a lungo polling quando WebSockets non sono disponibili?

    WebSockets è un nuovo protocollo indipendente dalle altre tecniche di comunicazione. Dal RFC

    L'obiettivo di questa tecnologia è quello di fornire un meccanismo per basati su browser applicazioni che richiedono una comunicazione bidirezionale con i server ciò si basa su l'apertura di più connessioni HTTP (ad esempio, utilizzando XMLHttpRequest o se polling lungo).

  2. Sicuramente Microsoft sarebbe implementare la stessa tecnologia SignalR nel loro approccio a questa tecnologia?

    Non se vogliono conformarsi alle specifiche non lo faranno. Non c'è sicuramente nulla che impedisca a Microsoft di sviluppare un'API di livello superiore simile a SignalR che possa astrarre i dettagli della comunicazione e offrire un comodo fallback. Tuttavia, questa ipotetica API probabilmente si baserebbe sulla classe WebSocket anziché sostituirla.

+2

Penso che l'OP si riferisca a questo: http://msdn.microsoft.com/en-us/library/system.net.websockets.websocket%28v=vs.110%29.aspx – BFree

+0

Yep BFree, I am! Scusa se non sono stato chiaro nella mia domanda RomanArmy. –

+0

@thedixon Lo so, è così che ho capito anche io. Prendo la parte di RFC che dice * non si basa su ... * per indicare che le specifiche per WebSockets non ricadranno sul long poling. Pertanto, se Microsoft vuole conformarsi alle specifiche, non farà in modo che la classe WebSocket torni a un lungo poling. – R0MANARMY

27

Penso SignalR è la strada da percorrere, e sta per essere parte di .NET per sé in ogni caso (e probabilmente estendere/unire/sostituire il supporto web-socket). Utilizza i socket Web quando è supportato e il client di polling coerente quando non lo è, quindi è la strada da percorrere.

Aggiornamento:

Dal momento che questa risposta è ancora sempre upvoted, vale la pena ricordare che SignalR è ora ufficialmente parte di ASP.NET.

check http://asp.net/signalr

+0

Per quanto rispetti la tua risposta qui, sai se WebSockets in questo momento non fa lo stesso? E se dovessi usare SignalR, se c'è una potenziale unione delle tecnologie - sarebbe saggio usare la libreria SignalR per ora con questo in mente? –

+1

Le note che ho su questo sono tratte da recenti note di Justin King di Microsoft quando ha presentato SignalR a Sydney ALT.NET alcuni giorni fa. Capisco che l'unione di SignalR in .NET core sarà effettuata dallo stesso SignalR, e quindi è probabile che ci siano pochissimi cambiamenti dall'offerta corrente. – Meligy

+0

Incredibile non hanno aggiunto il supporto SignalR per websockets a Win7 e Server 2008. Scandaloso davvero ... – Dave

5

SignalR utilizza OWIN che utilizzerà WebSockets collegamento se il browser supporta i socket Web e polling lungo se il browser non supporta WebSockets.