Общий обзор ASP.NET Core SignalR

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

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

В этой статье приведены общие сведения о работе с SignalR в приложениях ASP.NET Core.

Функции и исходный код

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

SignalR для ASP.NET Core предоставляет разработчикам множество функций:

  • Автоматически управляйте подключениями
  • Отправка сообщений всем подключенным клиентам одновременно (например, комната чата)
  • Отправка сообщений определенным клиентам или группам клиентов
  • Масштабирование для обработки увеличения трафика с такими параметрами, как Azure SignalR Service и Редис backplane
  • Поддержка тримминга и нативной предварительной компиляции (AOT) для поддерживаемых сценариев
  • Добавить поддержку обработки полиморфных типов в методах хаба
  • Поддержка распределённой трассировки с помощью ActivitySource для сервера концентратора SignalR и клиента .NET
  • Работа с SignalRпротоколом Hub Protocol

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

Transports

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

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

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

Hubs

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

Хаб — это высокоуровневый конвейер, который клиент и сервер используют для вызова методов друг у друга. SignalR автоматически управляет передачей между машинами, чтобы клиенты могли вызывать методы на сервере и наоборот. Вы можете передать строго типизированные параметры методам и включить привязку модели.

SignalR поддерживает два встроенных протокола концентратора:

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

Что такое SignalR?

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

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

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

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

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

  • Автоматически обрабатывает управление подключениями.
  • Одновременно отправляет сообщения всем подключенным клиентам. Например, комната чата.
  • Отправляет сообщения определенным клиентам или группам клиентов.
  • Масштабируется для обработки увеличения трафика с такими параметрами, как Azure SignalR Service и Redis backplane.
  • Поддерживает оптимизацию и нативную компиляцию на этапе трансляции (AOT) для поддерживаемых сценариев.
  • Поддерживает обработку полиморфных типов в методах хаба.
  • Поддерживает распределенную трассировку с помощью ActivitySource для сервера центра SignalR и клиента .NET.
  • SignalR Протокол концентратора

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

Transports

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

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

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

Hubs

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

Концентратор — это высокоуровневый конвейер, который позволяет клиенту и серверу вызывать методы друг друга. SignalR обрабатывает отправку по границам компьютера автоматически, позволяя клиентам вызывать методы на сервере и наоборот. В методы можно передавать строго типизированные параметры, которые обеспечивают привязку модели. SignalR поддерживает два встроенных протокола концентратора: текстовый протокол на основе JSON (по умолчанию) и двоичный протокол на основе MessagePack. MessagePack обычно создает небольшие сообщения по сравнению с JSON. Для получения дополнительной информации см. раздел Использование протокола концентратора MessagePack в SignalR для ASP.NET Core.

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

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

Что такое SignalR?

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

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

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

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

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

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

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

Transports

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

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

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

Hubs

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

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

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

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

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

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