Dimensionar aplicativos do SignalR do ASP.NET Core com o Serviço Azure SignalR
Desenvolvendo aplicativos SignalR
O SignalR está atualmente disponível em duas versões para uso com aplicativos Web:
- ASP.NET SignalR
- novo ASP.NET Core SignalR
O ASP.NET Core SignalR é uma reformulação da versão anterior. Como resultado, ASP.NET Core SignalR não é compatível com a versão anterior do SignalR. As APIs e os comportamentos são diferentes. O Serviço Azure SignalR dá suporte a ambas as versões.
O Serviço SignalR do Azure permite hospedar seu aplicativo Web real em várias plataformas (Windows, Linux e macOS) Serviço de Aplicativo do Azure, IIS, Nginx, Apache, Docker. Você também pode usar a auto-hospedagem em seu próprio processo.
O Serviço SignalR do Azure é a melhor escolha se as metas para seu aplicativo incluem:
- suporte à funcionalidade mais recente para atualização de clientes da Web com atualizações de conteúdo em tempo real,
- execução em várias plataformas (Azure, Windows, Linux e macOS)
- Hospedagem em diferentes ambientes
Por que eu mesmo não posso implantar o SignalR?
Ainda é uma abordagem válida implantar seu próprio aplicativo Web do Azure com suporte ao SignalR como um componente de back-end para seu aplicativo Web geral.
Um dos principais motivos para usar o Serviço Azure SignalR é a simplicidade. Com o Serviço Azure SignalR, você não precisa lidar com problemas de desempenho, escalabilidade, disponibilidade. Esses problemas são solucionados para você com um contrato de nível de serviço de 99,9%.
Além disso, os WebSockets normalmente são a técnica preferencial para dar suporte a atualizações de conteúdo em tempo real. No entanto, o balanceamento de carga de uma grande quantidade de conexões WebSocket persistentes se torna um problema complicado para resolver ao dimensionar. As soluções comuns usam: balanceamento de carga DNS, balanceadores de carga de hardware e balanceamento de carga de software. O Serviço Azure SignalR soluciona esse problema para você.
Para ASP.NET Core SignalR, outra razão pode ser que você não tem requisitos para realmente hospedar um aplicativo Web. A lógica do seu aplicativo Web pode usar computação sem servidor. Por exemplo, talvez seu código seja hospedado e executado apenas sob demanda, com gatilhos do Azure Functions. Esse cenário pode ser desafiador porque seu código só é executado sob demanda e não mantém conexões longas com clientes. O Serviço Azure SignalR pode lidar com essa situação, uma vez que o serviço já gerencia conexões para você. Para obter mais informações, consulte Visão geral sobre como usar o Serviço SignalR com o Azure Functions. Como ASP.NET SignalR usa um protocolo diferente, esse modo sem servidor não é suportado para ASP.NET SignalR.
Como é possível dimensioná-lo?
É comum dimensionar o SignalR com o SQL Server, o Barramento de Serviço do Azure ou o Cache do Azure para Redis. O Serviço Azure SignalR trata do dimensionamento para você. O desempenho e o custo dessas abordagens são parecidos, sem a complexidade de lidar com os outros serviços. Basta atualizar a contagem de unidade para o seu serviço. Cada unidade dá suporte a até 1.000 conexões de cliente.