.NET 4.5 WebSockets против SignalR - PullRequest
51 голосов
/ 02 марта 2012

Я видел signalR против html5 веб-сокетов для приложения чата asp.net MVC , но оно не на 100% отвечает на мой вопрос, поскольку основано на HTML5 WebSockets, которые Microsoft, возможно, расширила в .NET4.5 с их объектом WebSocket.

Мне интересно, действительно ли функция WebSocket выполняет те же функции, что и SignalR, и возвращается к длинному опросу, когда недоступны WebSockets?Конечно, Microsoft будет использовать ту же технологию, что и SignalR, в своем подходе к этой технологии?

Редактировать:

Для всех, кто интересуется этим, я нашел этот комментарий наиболее полезным для понимания сценария и почемуЯ буду использовать SignalR:

Ну, на самом деле это не так.До сих пор в IIS и ASP.NET не было ничего встроенного, поддерживающего WebSockets, поэтому проекту SignalR приходилось создавать его самостоятельно.Теперь, когда Microsoft предоставляет сантехнику, SignalR может легко переключиться на использование реализации Microsoft, в дополнение или вместо своей собственной.SignalR - это абстракция над деталями реализации, класс WebScockets - это детали реализации

Ответы [ 3 ]

37 голосов
/ 02 марта 2012

Я думаю, что SignalR - это путь, который в любом случае станет частью самого .NET (и, вероятно, расширит / объединит / заменит поддержку веб-сокетов). Он использует веб-сокеты, когда это поддерживается, и согласованный хак опросов клиентов, когда это не так, так что это путь.

Обновление:

Поскольку за этот ответ все еще проголосуют, стоит упомянуть, что SignalR теперь официально является частью ASP.NET.

Чек http://asp.net/signalr

Обновление: .NET Core

SignalR также добавляется в .NET Core, как @yazanpro отметил в комментариях.

Он доступен в .NET Core 2.1 , а также официальной документации .

27 голосов
/ 02 марта 2012
  1. Мне интересно, действительно ли функция WebSocket выполняет те же функции, что и SignalR, и возвращается к длинному опросу, когда WebSockets недоступны?

    WebSocketsэто новый протокол, независимый от других методов связи.Из RFC

    Целью этой технологии является создание механизма для браузерных приложений, которым требуется двусторонняя связь с серверами , не основанная на открытии нескольких соединений HTTP ( например, с использованием XMLHttpRequest или s и длинный опрос ).

  2. Конечно, Microsoft будет использовать ту же технологию, что и SignalR, в своем подходе к этой технологии?

    Нет, если они хотят соответствоватьспецификация они не будут.Конечно, ничто не мешает Microsoft разрабатывать API более высокого уровня, похожий на SignalR, который бы абстрагировал детализацию связи и предлагал изящный резерв.Однако этот гипотетический API, вероятно, будет построен поверх класса WebSocket вместо его замены.

8 голосов
/ 19 февраля 2016

SignalR использует OWIN, который будет использовать соединение WebSockets, если браузер поддерживает веб-сокеты, и длительный опрос, если браузер не поддерживает WebSockets.

...