Общие сведения об ASP.NET CoreSignalR
Что такое SignalR?
SignalR ASP.NET Core — это библиотека с открытым кодом, которая упрощает добавление веб-функций в режиме реального времени в приложения. Веб-функции в режиме реального времени позволяют коду на стороне сервера мгновенно отправлять содержимое клиентам.
Хорошие кандидаты для SignalR:
- Приложения, требующие частых обновлений с сервера. Примерами являются игры, социальные сети, платформы для голосования, аукционы, карты и приложения GPS.
- Панели и приложения мониторинга. Примеры включают в себя панели мониторинга компании, мгновенные обновления продаж или оповещения о поездках.
- Приложения для совместной работы. Примерами таких приложений служат демонстрационные приложения и программное обеспечение для конференций .
- Приложения, которым требуются уведомления. Уведомления используют социальные сети, электронная почта, чат, игры, оповещения о поездках и многие другие приложения.
SignalR предоставляет API для создания удаленных вызовов процедур (RPC) между серверами. RPC вызывают функции на клиентах из кода .NET Core на стороне сервера. Существует несколько поддерживаемых платформ, каждая из которых имеет соответствующий клиентский пакет SDK. Из-за этого вызов RPC вызывает различные языки программирования.
Ниже приведены некоторые функции SignalR для ASP.NET Core:
- Автоматически обрабатывает управление подключениями.
- Отправляет сообщения всем подключенным клиентам одновременно. Например, комната чата.
- Отправляет сообщения определенным клиентам или группам клиентов.
- Масштабируется для обработки увеличения трафика.
- SignalR Протокол концентратора
Источник размещается в репозиторииSignalR на GitHub.
Транспорты
SignalR поддерживает следующие методы обработки обмена данными в режиме реального времени (в порядке корректного резервирования):
- WebSockets
- События, посылаемые сервером
- Длительный опрос
SignalR автоматически выбирает оптимальный метод транспорта, который находится в пределах возможностей сервера и клиента.
Концентраторы
SignalR использует концентраторы для обмена данными между клиентами и серверами.
Концентратор — это высокоуровневый конвейер, который позволяет клиенту и серверу вызывать методы друг друга. SignalR автоматически обрабатывает диспетчеризацию через границы компьютера, позволяя клиентам вызывать методы на сервере и наоборот. Строго типизированные параметры можно передавать в методы, что обеспечивает привязку модели. SignalR предоставляет два встроенных протокола концентратора: текстовый протокол на JSоснове ON и двоичный протокол на основе MessagePack. MessagePack обычно создает сообщения меньшего размера по сравнению с JSON. Старые браузеры должны поддерживать XHR уровня 2 , чтобы обеспечить поддержку протокола MessagePack.
Центры вызывают клиентский код, отправляя сообщения, содержащие имя и параметры метода на стороне клиента. Объекты, отправленные в качестве параметров метода, десериализируются с помощью настроенного протокола. Клиент пытается сопоставить имя с методом в клиентском коде. Когда клиент находит совпадение, он вызывает метод и передает ему десериализованные данные параметров.
Браузеры, не поддерживающие ECMAScript 6 (ES6)
SignalR предназначен для ES6. Для браузеров, которые не поддерживают ES6, преобразуйте библиотеку в ES5. Дополнительные сведения см. в разделе начало работы с ES6 — транскомпиляция ES6 в ES5 с помощью Traceur и Babel.