Dimensionar aplicações do SignalR do ASP.NET Core com o Azure SignalR Service

Desenvolver aplicações SignalR

Atualmente, o SignalR está disponível em duas versões para uso com aplicativos da Web:

  • ASP.NET SignalR
  • novo ASP.NET Core SignalR

O ASP.NET Core SignalR é uma reescrita da versão anterior. Como resultado, ASP.NET Core SignalR não é compatível com versões anteriores do SignalR. As APIs e os comportamentos são diferentes. O Serviço Azure SignalR suporta ambas as versões.

O Serviço Azure SignalR permite hospedar seu aplicativo Web real em várias plataformas (Windows, Linux e macOS) Serviço de Aplicativo do Azure, IIS, Nginx, Apache, Docker. Também pode utilizar o alojamento automático no seu próprio processo.

O Serviço Azure SignalR é a melhor escolha se os objetivos para a sua aplicação incluírem:

  • suporte à funcionalidade mais recente para atualizar clientes da Web com atualizações de conteúdo em tempo real,
  • em execução em várias plataformas (Azure, Windows, Linux e macOS)
  • hospedagem em diferentes ambientes

Por que não implementar o SignalR eu próprio?

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 utilizar o Azure SignalR Service é a simplicidade. Com o Azure SignalR Service, não tem de lidar com problemas como desempenho, escalabilidade e disponibilidade. Estes problemas são tratados por si com um contrato de nível de serviço de 99,9%.

Além disso, os WebSockets são, normalmente, a técnica preferencial para suportar as atualizações de conteúdos em tempo real. No entanto, à medida que dimensiona, fazer o balanceamento de carga de um grande número de ligações persistentes de WebSocket pode tornar-se problemático. Uso de soluções comuns: balanceamento de carga DNS, balanceadores de carga de hardware e balanceamento de carga de software. O Azure SignalR Service lida com este problema por si.

Para ASP.NET Core SignalR, outra razão pode ser que você não tenha requisitos para realmente hospedar um aplicativo web. A lógica do seu aplicativo Web pode usar computação sem servidor. Por exemplo, talvez o código só seja alojado e executado a pedido com acionadores das Funções do Azure. Esse cenário pode ser desafiador porque seu código só é executado sob demanda e não mantém longas conexões com clientes. O Azure SignalR Service pode tratar desta situação, uma vez que já faz a gestão das ligações por si. Para obter mais informações, consulte Visão geral sobre como usar o Serviço SignalR com o Azure Functions. Como o ASP.NET SignalR usa um protocolo diferente, esse modo sem servidor não é suportado para ASP.NET SignalR.

Como é dimensionado?

É comum dimensionar o SignalR com o SQL Server, o Barramento de Serviço do Azure ou o Cache do Azure para Redis. O Azure SignalR Service lida com a abordagem de dimensionamento por si. O desempenho e o custo são comparáveis a estas abordagens, sem a complexidade de ter de lidar com estes outros serviços. Tudo o que tem de fazer é atualizar a contagem de unidades do seu serviço. Cada unidade suporta até 1000 ligações de cliente.

Próximos passos