Масштабирование приложений 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 клиентских подключений.