Поделиться через


Общие сведения о ASP.NET Core SignalR

Что такое SignalR?

ASP.NET Core SignalR — это библиотека с открытым исходным кодом, которая упрощает добавление веб-функций в приложения в режиме реального времени. Веб-функции в режиме реального времени позволяют серверным кодам мгновенно отправлять содержимое клиентам.

Хорошие кандидаты на SignalR:

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

SignalRпредоставляет API для создания вызовов удаленных процедур между клиентами (RPC). RPCs вызывают функции на клиентах из кода .NET Core на стороне сервера. Существует несколько поддерживаемых платформ, каждый из которых имеет соответствующий клиентский пакет SDK. Из-за этого вызов RPC вызывает различные языки программирования.

Ниже приведены некоторые функции SignalR для ASP.NET Core:

  • Автоматически обрабатывает управление подключениями.
  • Одновременно отправляет сообщения всем подключенным клиентам. Например, комната чата.
  • Отправляет сообщения определенным клиентам или группам клиентов.
  • Масштабируется для обработки увеличения трафика.
  • SignalR Протокол концентратора

Источник размещен в репозитории SignalR на GitHub.

Транспорты

SignalR поддерживает следующие методы обработки обмена данными в режиме реального времени (в порядке корректной резервной передачи):

  • WebSockets
  • События, посылаемые сервером
  • Длительный опрос

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

Концентраторы

SignalR использует центры для обмена данными между клиентами и серверами.

Концентратор — это высокоуровневый конвейер, который позволяет клиенту и серверу вызывать методы друг друга. SignalR обрабатывает отправку по границам компьютера автоматически, позволяя клиентам вызывать методы на сервере и наоборот. В методы можно передавать строго типизированные параметры, которые обеспечивают привязку модели. SignalR предоставляет два встроенных протокола концентратора: текстовый протокол на основе JSON и двоичного протокола на основе MessagePack. MessagePack обычно создает небольшие сообщения по сравнению с JSON. Старые браузеры должны поддерживать уровень XHR 2 , чтобы обеспечить поддержку протокола MessagePack.

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

Браузеры, не поддерживающие ECMAScript 6 (ES6)

SignalR целевые объекты ES6. Для браузеров, не поддерживающих ES6, перезаполните библиотеку в ES5. Дополнительные сведения см. в статье "Начало работы с ES6— транспилирование ES6 в ES5 с traceur и Babel".

Дополнительные ресурсы