Вопросы и ответы о Службе SignalR Azure

Готова ли Служба Azure SignalR для использования в рабочей среде?

Да, поддержка SignalR для ASP.NET Core и ASP.NET является общедоступной.

При наличии нескольких серверов приложений клиентские сообщения отправляются на все серверы или только на один из них?

Между клиентом и сервером приложений происходит сопоставление "один к одному". Сообщения от одного клиента всегда отправляются на один и тот же сервер приложений.

Указанное сопоставление поддерживается, пока клиент или сервер не отключатся.

Если один из моих серверов приложений отключается, как узнать об этом и получить уведомление?

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

Почему пользовательский интерфейс IUserIdProvider вызывает исключение при переключении с пакета SDK ASP.NET Core SignalR на пакет SDK для Служба Azure SignalR?

Параметр HubConnectionContext context отличается для пакета SDK ASP.NET Core Службы SignalR и пакета SDK Службы Azure SignalR при вызове IUserIdProvider.

В ASP.NET Core HubConnectionContext context — это контекст физического клиентского подключения с допустимыми значениями для всех свойств.

В пакете SDK Службы Azure SignalR HubConnectionContext context — это контекст из логического подключения клиента. Физический клиент подключен к экземпляру Службы Azure SignalR, поэтому предоставляется только ограниченное число свойств.

На данный момент доступны только HubConnectionContext.GetHttpContext() и HubConnectionContext.User. Вы можете проверить исходный код.

Можно ли настроить транспортировки, доступные в Службе Azure SignalR, на стороне сервера с помощью ASP.NET Core SignalR? Например, можно ли отключить транспортировку WebSocket?

Да. Сведения о настройке конфигурации транспорта см. в разделе "Конфигурация транспорта".

Вы также можете настроить клиентские транспорты, как описано в конфигурации Core SignalR ASP.NET.

Что означают такие метрики, как количество сообщений или количество подключений, отображаемые на портале Azure? Какой тип агрегирования мне выбрать?

Сведения о вычислениях этих метрик можно найти в статье Сообщения и подключения в Службе Azure SignalR.

В области обзора ресурсов Службы Azure SignalR мы уже выбрали для вас подходящий тип агрегирования. Поддерживаемые метрики можно использовать в Azure Monitor в качестве ссылки.

Что такое значения режимов обслуживания "По умолчанию", "Бессерверные" и "Классические"? Как его выбрать?

Для новых приложений следует использовать только режим по умолчанию и бессерверный режим. Основное различие заключается в том, имеются ли серверы приложений, которые устанавливают подключения к службе (например, используются AddAzureSignalR() для подключения к службе). Если да, используйте режим по умолчанию, в противном случае используйте бессерверный режим.

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

Дополнительные сведения о режиме службы см. в статье Режим службы в службе Azure SignalR.

Могу ли я отправить сообщение от клиента в бессерверном режиме?

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

Дополнительные сведения.см . в конечных точках upstream.

Функция вышестоящий конечных точек в настоящее время находится в общедоступной предварительной версии.

Различаются ли функции при использовании Службы Azure SignalR с ASP.NET SignalR?

При использовании Службы Azure SignalR некоторые API-интерфейсы и функции ASP.NET SignalR не поддерживаются:

  • Возможность передачи произвольного состояния между клиентами и концентратором (часто называемым HubState) не поддерживается.
  • Класс PersistentConnection не поддерживается.
  • Транспорт forever Frame не поддерживается.
  • Служба Azure SignalR больше не воспроизводит сообщения, отправленные клиенту, когда клиент находится в автономном режиме.
  • Если вы используете Службу Azure SignalR, трафик для одного клиентского подключения всегда маршрутизируется (т. е. закрепляется) к одному экземпляру сервера приложений на протяжении всего соединения.

Поддержка ASP.NET SignalR ориентирована на совместимость, поэтому поддерживаются не все новые функции ASP.NET Core SignalR. Например, MessagePack и Streaming доступны только для приложений ASP.NET Core SignalR.

Вы можете настроить разные режимы Службы Azure SignalR: Classic, Default и Serverless. Режим Serverless не поддерживается для ASP.NET. REST API плоскости данных также не поддерживается.

Где находятся мои данные?

Служба Azure SignalR не сохраняет данные клиента. Если вы используете Служба Azure SignalR вместе с другими службами Azure, например служба хранилища Azure для диагностика, ознакомьтесь с руководством по обеспечению расположения данных в регионах Azure.

Разделы справки выбрать службу Azure SignalR и службу Azure Web PubSub?

И Служба Azure SignalR, и служба Azure Web PubSub помогают клиентам создавать масштабные веб-приложения с высоким уровнем доступности, работающие в режиме реального времени, позволяя сосредоточиться на бизнес-логике вместо того, чтобы управлять инфраструктурой обмена сообщениями. Как правило, вы можете выбрать Служба Azure SignalR, если вы уже используете библиотеку SignalR для создания приложений в режиме реального времени. Если же вы ищете универсальное решение для создания приложения реального времени на основе WebSocket и шаблона публикации и подписки, вы можете выбрать службу Azure Web PubSub. Служба Azure Web PubSub не является заменой для Служба Azure SignalR и наоборот. Они предназначены для различных сценариев. Следующие рекомендации помогут вам решить, какая служба будет использоваться для вашего сценария.

Служба Azure SignalR лучше подходит в перечисленных ниже случаях.

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

Служба Azure Web PubSub лучше подходит в перечисленных ниже случаях.

  • Вам необходимо создавать приложения реального времени на основе технологии WebSocket или модели публикации и подписки через WebSocket.
  • Вы хотите создать собственный подпротокол или использовать существующие расширенные протоколы на базе WebSocket (например, MQTT, AMQP через WebSocket).
  • Вам нужен упрощенный сервер, например для отправки сообщений клиенту без их передачи через настроенную серверную часть.