2012-03-01 11 views
39

Widziałem signalR vs html5 websockets for asp.net MVC chat application, ale nie w 100% odpowiedzieć na moje pytanie, ponieważ opiera się na HTML5 WebSockets, które Microsoft może rozszerzyć na .NET 4.5 z ich obiektu WebSocket..NET 4.5 WebSockets vs SignalR

Zastanawiam się, czy funkcja WebSocket faktycznie działa tak samo, jak SignalR i cofa się do długiego sondowania, gdy WebSockets nie są dostępne? Z pewnością Microsoft zastosowałby tę samą technologię co SignalR w swoim podejściu do tej technologii?

Edit:

dla nikogo innego zastanawiać to, znalazłem ten komentarz najbardziej pomocne w zrozumieniu scenariusz i dlatego będę używając SignalR:

Cóż, nie są one naprawdę. Do tej pory IIS i ASP.NET nie posiadały żadnego elementu wbudowanego w te obsługiwane WebSockets, więc projekt SignalR musiał je samodzielnie zbudować. Teraz, gdy firma Microsoft dostarcza układ hydrauliczny, SignalR może łatwo przełączyć się na implementację Microsoft, albo w uzupełnieniu, albo zamiast własnych. SignalR jest abstrakcji nad szczegółami implementacji klasy WebScockets jest szczegółowo realizacja

+1

Jak wspomniano pierwotnie w odpowiedzi, plan SignalR miał być częścią .NET, co się stało, ponieważ jest teraz oficjalną częścią ASP.NET http://asp.net/signalr - zaktualizowałem swoją odpowiedź dodaj link i myślisz, że chciałbyś wiedzieć. – Meligy

+0

Ahh, niesamowite! Dzięki za aktualizację tego @MohamedMeligy, naprawdę dobrze jest zobaczyć SignalR w głównej bibliotece. –

Odpowiedz

18
  1. Zastanawiam się, czy funkcja websocket ma faktycznie takie same jak SignalR i spaść z powrotem na długi odpytywania kiedy WebSockets nie są dostępne?

    WebSockets to nowy protokół niezależny od innych technik komunikacji. Z RFC

    Celem tej technologii jest zapewnienie mechanizmu dla przeglądarek opartych zastosowań, które wymagają dwukierunkową komunikację z serwerami że nie nie opierają się na otwarcie wielu połączeń HTTP (np przy użyciu XMLHttpRequest lub s oraz z długim sondowaniem).

  2. pewnością Microsoft będzie realizować tę samą technologię jak SignalR w swoim podejściu do tej technologii?

    Nie, jeśli chcą dostosować się do specyfikacji, nie będą. Z pewnością nic nie powstrzyma Microsoftu przed opracowaniem interfejsu API o wyższym poziomie zbliżonego do SignalR, który pozwoliłby odciąć szczegóły komunikacji i zaoferować pełen wdzięku mechanizm awaryjny. Jednak ten hipotetyczny API prawdopodobnie zbudowałby klasę WebSocket, a nie ją zastąpił.

+2

Myślę, że OP odnosi się do tego: http://msdn.microsoft.com/en-us/library/system.net.websockets.websocket%28v=vs.110%29.aspx – BFree

+0

Tak, BFree, jestem! Przepraszam, jeśli nie byłem pewien w moim pytaniu RomanArmy. –

+0

@thedikson Wiem, tak też to zrozumiałem. Biorę udział w RFC, który mówi, że * nie polega na ... *, aby specyfikacja dla WebSockets nie powróciła do długiego polingowania. W związku z tym, jeśli Microsoft chce dostosować się do specyfikacji, nie spowoduje, że ich klasa WebSocket powróci do długiego polingowania. – R0MANARMY

27

Myślę, że SignalR jest drogą do zrobienia, i tak czy inaczej będzie częścią samego .NET (i prawdopodobnie rozszerzy/scali/zastąpi obsługę gniazd internetowych). Używa gniazd internetowych, gdy jest obsługiwany i konsekwentny hakowanie klienta, gdy nie jest, więc jest to droga.

Aktualizacja:

Ponieważ ta odpowiedź jest wciąż coraz upvoted, to warto wspomnieć, że SignalR jest teraz oficjalnie częścią ASP.NET.

Sprawdź http://asp.net/signalr

+0

Jak bardzo szanuję twoją odpowiedź tutaj, czy wiesz, czy teraz WebSockets nie robi tego samego? A jeśli miałbym używać SignalR, jeśli istnieje potencjalne połączenie technologii - czy byłoby rozsądnie korzystać z biblioteki SignalR, mając to na uwadze? –

+1

Moje uwagi na ten temat pochodzą z ostatnich notatek od Justina Kinga od Microsoftu, kiedy przedstawił SignalR w Sydney ALT.NET kilka dni temu. Rozumiem, że scalenie SignalR w rdzeniu .NET będzie dokonywane przez samego Faceta SignalR, a zatem może to być bardzo niewiele zmian z obecnej oferty. – Meligy

+0

Niewiarygodne, że nie dodały obsługi SignalR dla gniazd sieciowych do Win7 i Server 2008. Oburzające naprawdę ... – Dave

5

SignalR wykorzystuje OWIN który będzie używał WebSockets połączenia czy przeglądarka obsługuje gniazd internetowych i długie odpytywanie jeśli przeglądarka nie obsługuje WebSockets.