Общий обзор ASP.NET Core 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:

  • Автоматически обрабатывает управление подключениями.
  • Одновременно отправляет сообщения всем подключенным клиентам. Например, комната чата.
  • Отправляет сообщения определенным клиентам или группам клиентов.
  • Масштабируется для обработки увеличения трафика с такими параметрами, как 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".

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