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

Что такое SignalR?What is SignalR?

ASP.NET Core SignalR — это библиотека с открытым исходным кодом, которая упрощает добавление веб-функций в режиме реального времени в приложения.ASP.NET Core SignalR is an open-source library that simplifies adding real-time web functionality to apps. Веб-функции в режиме реального времени позволяют коду на стороне сервера мгновенно отправлять содержимое на клиенты.Real-time web functionality enables server-side code to push content to clients instantly.

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

  • Приложения, требующие частых обновлений с сервера.Apps that require high frequency updates from the server. Примерами являются игры, социальные сети, платформы для голосования, аукционы, карты и приложения GPS.Examples are gaming, social networks, voting, auction, maps, and GPS apps.
  • Панели и приложения мониторинга.Dashboards and monitoring apps. Примеры включают в себя панели мониторинга компании, мгновенные обновления продаж или оповещения о поездках.Examples include company dashboards, instant sales updates, or travel alerts.
  • Приложения для совместной работы.Collaborative apps. Примерами таких приложений служат демонстрационные приложения и программное обеспечение для конференций .Whiteboard apps and team meeting software are examples of collaborative apps.
  • Приложения, которым требуются уведомления.Apps that require notifications. Уведомления используют социальные сети, электронная почта, чат, игры, оповещения о поездках и многие другие приложения.Social networks, email, chat, games, travel alerts, and many other apps use notifications.

SignalR предоставляет API для создания удаленных вызовов процедур (RPC) "сервер-клиент". provides an API for creating server-to-client remote procedure calls (RPC). Вызов RPC вызывает функции JavaScript на клиентах из кода .NET Core на стороне сервера.The RPCs call JavaScript functions on clients from server-side .NET Core code.

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

  • Управляет автоматическим управлением соединениями.Handles connection management automatically.
  • Отправляет сообщения всем подключенным клиентам одновременно.Sends messages to all connected clients simultaneously. Например, комната чатов.For example, a chat room.
  • Отправляет сообщения конкретным клиентам или группам клиентов.Sends messages to specific clients or groups of clients.
  • Масштабируется для управления увеличением трафика.Scales to handle increasing traffic.

Источник размещается в репозиторииSignalR на сайте GitHub.The source is hosted in a SignalR repository on GitHub.

ТранспортыTransports

SignalR поддерживает следующие методы обработки обмена данными в режиме реального времени (в порядке правильного резерва): supports the following techniques for handling real-time communication (in order of graceful fallback):

  • WebSocketsWebSockets
  • События, отправленные серверомServer-Sent Events
  • Длительный опросLong Polling

SignalR автоматически выбирает лучший транспортный метод, который находится в пределах возможностей сервера и клиента. automatically chooses the best transport method that is within the capabilities of the server and client.

ЦентрыHubs

SignalR использует концентраторы для взаимодействия между клиентами и серверами. uses hubs to communicate between clients and servers.

Концентратор — это высокоуровневый конвейер, который позволяет клиенту и серверу вызывать методы друг друга.A hub is a high-level pipeline that allows a client and server to call methods on each other. SignalR автоматически обрабатывает диспетчеризации между компьютерами, позволяя клиентам вызывать методы на сервере и наоборот. handles the dispatching across machine boundaries automatically, allowing clients to call methods on the server and vice versa. Можно передать строго типизированные параметры методам, которые обеспечивают привязку модели.You can pass strongly-typed parameters to methods, which enables model binding. SignalR предоставляет два встроенных протокола концентратора: текстовый протокол на основе JSON и двоичный протокол на основе MessagePack. provides two built-in hub protocols: a text protocol based on JSON and a binary protocol based on MessagePack. MessagePack обычно создает меньшие сообщения по сравнению с JSON.MessagePack generally creates smaller messages compared to JSON. Более старые браузеры должны поддерживать XHR уровня 2 , чтобы обеспечить поддержку протокола MessagePack.Older browsers must support XHR level 2 to provide MessagePack protocol support.

Концентраторы вызывают код на стороне клиента, отправляя сообщения, содержащие имя и параметры клиентского метода.Hubs call client-side code by sending messages that contain the name and parameters of the client-side method. Объекты, отправляемые как параметры метода, десериализованы с помощью настроенного протокола.Objects sent as method parameters are deserialized using the configured protocol. Клиент пытается сопоставить имя с методом в коде на стороне клиента.The client tries to match the name to a method in the client-side code. Когда клиент находит совпадение, он вызывает метод и передает ему данные десериализованного параметра.When the client finds a match, it calls the method and passes to it the deserialized parameter data.

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