.NET 4.5 WebSockets против SignalR

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

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

Edit:

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

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

3 ответов


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

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

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

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

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


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

обновление:

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

Регистрация http://asp.net/signalr

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

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

доступна в .NET Core 2.1 и официальная документация как хорошо.


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