Поделиться через


Масштабирование приложений ASP.NET Core SignalR с помощью службы Azure SignalR.

Разработка приложений SignalR

В настоящее время SignalR доступна в двух версиях для использования с веб-приложениями :

  • ASP.NET SignalR
  • new ASP.NET Core SignalR

ASP.NET Core SignalR — это переписанная предыдущая версия. В результате ASP.NET Core SignalR не совместима с более ранней версией SignalR. Их API-интерфейсы и поведение отличаются. Служба Azure SignalR поддерживает обе версии.

Служба Azure SignalR позволяет размещать фактическое веб-приложение на нескольких платформах (Windows, Linux и macOS) приложение Azure service, IIS, Nginx, Apache, Docker. Вы также можете использовать самостоятельное размещение в собственном процессе.

Служба Azure SignalR лучше всего выбрать, если цели приложения включают:

  • поддержка последних функций для обновления веб-клиентов с обновлениями содержимого в режиме реального времени,
  • работает на нескольких платформах (Azure, Windows, Linux и macOS)
  • размещение в разных средах

Могу ли я развернуть SignalR самостоятельно?

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

Одной из основных причин использования службы Azure SignalR является ее простота. С помощью службы Azure SignalR вам не нужно учитывать производительность, масштабируемость, доступность. Все это учитывается в соглашении об уровне обслуживания с показателем доступности 99,9 %.

Кроме того, WebSocket — обычно предпочтительный метод поддержки обновлений содержимого в реальном времени. Однако балансировка нагрузки большого количества постоянных соединений WebSocket становится серьезной проблемой для решения по мере масштабирования. Распространенные решения: балансировка нагрузки DNS, аппаратные подсистемы балансировки нагрузки и балансировка нагрузки программного обеспечения. Служба Azure SignalR автоматически устраняет эти проблемы.

Для ASP.NET Core SignalR другой причиной может быть отсутствие требований к фактическому размещению веб-приложения вообще. Логика веб-приложения может использовать бессерверные вычисления. Например, возможно, ваш код размещается и выполняется только по запросу с помощью триггеров функций Azure. Этот сценарий может быть сложным, так как код выполняется только по запросу и не поддерживает длительные подключения с клиентами. Служба Azure SignalR может справиться с этой ситуацией, так как она автоматически управляет подключениями. Дополнительные сведения см. в обзоре использования Служба SignalR с Функции Azure. Так как ASP.NET SignalR использует другой протокол, такой бессерверный режим не поддерживается для ASP.NET SignalR.

Как выполняется масштабирование?

Обычно масштабируется SignalR с помощью SQL Server, Служебная шина Azure или Кэш Azure для Redis. Служба Azure SignalR автоматически выбирает метод масштабирования. Производительность и стоимость сопоставимы с этими подходами без сложной работы с этими службами. Вам нужно только обновить количество единиц для своей службы. Каждая единица поддерживает до 1000 клиентских подключений.

Следующие шаги