Что такое SignalR?

| Четверг, 15 августа, 2013

Метки: SignalR Комментарии: 0

Какими транспортными протоколами управляет SignalR?

SignarR – это абстракция над транспортными протоколами, которые обеспечивают взаимодействие между клиентом и сервером в реальном времени. Соединение SignalR начинается через протокол HTTP, и затем переключается на протокол WebSocket, если это возможно. WebSocket идеальный транспортный протокол для SignalR, так как он наиболее эффективно использует память сервера, имеет наименьшее время ожидания, содержит в себе много полезных функций (например, полная дуплексная связь между клиентом и сервером ). Но WinSocket имеет и строгие требования: сервер должен быть Windows 2012 или Windows 8, а также нужен .NET Framework 4.5. Если эти требования не выполняются SignalR ,будет пытаться использовать другие транспортные протоколы.

Транспортные протоколы HTML5

Эти транспортные протоколы зависят от HTML5. Если браузер клиента не поддерживает стандарт HTML5, то будут использоваться более старые протоколы.

  • WebSocket (сервер и браузер способны поддерживать WebSocket). WebSocket единственный транспорт, который устанавливает устойчивое двухстороннее соединение между сервером и клиентом. Но в то же время протокол предъявляет строгие требования к браузерам: он поддерживается только последними версиями Microsoft Internet Explorer, Google Chrome и Mozilla Firefox, и только частично реализован в остальных браузерах, типа Opera и Safari.
  • Server Sent Events (события отсылаемые сервером), технология отправки данных от сервера к браузеру в виде DOM-событий. Также известно, как EventSource.
Транспортные протоколы Comet

Эти протоколы базируются на модели веб-приложения Comet, в которой браузер или другой клиент поддерживает долгий HTTP запрос, через который сервер передает данные клиенту без запроса клиента на эти данные.

  • Forever Frame (только для Internet Explorer). Forever Frame это прием, при котором создается скрытый IFrame, делающий незавершенный запрос серверу. А сервер затем постоянно отсылает скрипт клиенту, который немедленно выполняется, образуя при этом одностороннее соединение в реальном времени от сервера к клиенту. Соединение от клиента к серверу реализуется уже другим соединением, и как в обычном HTML запросе, новое соединение создается для каждой новой порции данных, которую нужно отослать.
  • Ajax long pooling. Long polling не создает постоянное соединение, но вместо этого серверу отсылаются запросы, которые остаются открытыми, пока сервер на них не ответит и как только соединение закрывается, то сразу же открывается новое. Такой способ может увеличивать время ожидания, когда соединения переустанавливаются.

Подробную техническую спецификацию о поддерживаемых протоколах и конфигурациях можно получить здесь.

Комментарии
Никто еще не оставил здесь комментарий.
Войдите, чтобы написать комментарий , или воспользуйтесь формой ниже.
 

Copyright © CodeHint.ru 2013-2020