Введение в ASP.NET Core SignalR

Что такое SignalR?

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

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

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

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

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

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

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

Транспорты

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

  • WebSockets
  • События Server-Sent
  • Длительный опрос

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

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

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

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

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

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