SignalR 2

Введение в SignalR 2

Данное руководство устарело. Актуальное руководство: Руководство по ASP.NET Core

Последнее обновление: 31.10.2015

В последнее время в веб-среде все чаще создаются веб-приложения, использующие технологии коммуникаций в реальном времени: это и простые чаты, и более сложные многопользовательские видеоконференции. Такие приложения могут использовать различные приемы работы: технологию Web Socket, опросы long polling и т.д. Для упрощения работы с коммуникациями реального времени была создана специальная библиотека под названием SignalR.

При этом SignalR не является библиотекой, предназначенной только для использования в ASP.NET MVC. Ее также можно использовать и в веб-формах, а также в консольных приложениях, десктопных приложения и в WPF.

SignalR предоставляет простой API для создания функционала, который позволяет вызывать функции JavaScript на стороне клиента из серверного кода, написанного с помощью языков платформы .NET. SignalR значительно упрощает работу с коммуникациями реального времени. Библиотека обрабатывает все подключения и автоматически рассылает сообщения всем подключенным клиентам, либо каким-нибудь специфическим клиентам.

Фактически библиотека SignalR состоит из API серверной стороны, который применяется в коде на C#, и из клиентских библиотек JavaScript.

SignalR предоставляет разработчикам две модели: постоянные подключения (Persistent Connection) и хабы (Hubs).

Постоянные подключения (Persistent Connection API) представляют разработчикам прямой доступ к низкоуровневому протоколу коммуникации. Подключения в этой модели представляют конечную точку, к которой подключаются клиенты, наподобие модели подключений в WCF.

Хабы же предоставляют протокол взаимодействия более высокого уровня. Они представляют верхний слой над Persistent Connection API и позволяют клиенту и серверу напрямую вызывать методы друг друга.

Если вы будете работать с SignalR, то скорее всего будете преимущественно использовать хабы, как более удобные инструменты.

Поддерживаемые платформы

SignalR поддерживается наиболее распространенными серверными платформами на базе ОС Windows:

  • Windows Server 2012

  • Windows Server 2008 r2

  • Windows 8

  • Windows 7

  • Windows Azure

Для работы на стороне сервера также необходима версия фреймворка .net от 4.0 и выше.

Поддерживаемые клиентские платформы (браузеры) тоже многообразны:

  • Microsoft Internet Explorer 8, 9, 10, 11. Версии Modern, Desktop и Mobile

  • Mozilla Firefox: как на ОС Windows, так и на Mac ОС

  • Google Chrome: как на ОС Windows, так и на Mac ОС

  • Safari: как на ОС Windows, так и на Mac ОС

  • Opera: ОС Windows

  • Android-браузер

Также следует учитывать, что браузер должен поддерживать библиотеку jQuery 1.6.4 или более поздние версии.

Транспорт передачи данных

Для обмена данными между клиентом и сервером SignalR использует тот способ передачи или тот транспорт, который наиболее подходит к данной ситуации. Однако разработчики могут переопределить способ передачи. SignalR предоставляет следующие типы технологий для взаимодействия сервера и клиента:

  • WebSockets

  • Server-sent events

  • Forever Frames

  • Long polling

Выбор транспорта

При создании подключения SignalR выбирает, если доступно, технологию WebSocket, так как это наиболее оптимальная технология для SignalR, наиболее эффективно использующая память сервера. В то же время WebSocket может использоваться только на серверах под управлением Windows Server 2012 или Windows 8 и при наличии установленного .NET Framework 4.5. При этом также технология WebSocket должна поддерживаться и браузером клиента. И если технология WebSocket недоступна на сервере или клиенте, то выбирается другой транспорт.

Если WebSocket недоступен, то SignalR использует технологию Server Sent Events, при ее поддержке сервером и клиентом.

Если технология Server Sent Events также недоступна, то используются скрытые фреймы - Forever Frames.

И если Forever Frames также недоступны, то используется Long Polling. Например, если на стороне клиента используется браузер IE 8 и ниже, то используется Long Polling.

Теперь рассмотрим работу с библиотекой на конкретных примерах.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850