Quando usar o ASP.NET Core SignalR

Concluído

O SignalR fornece funcionalidade da Web em tempo real. A Contoso Pizza requer um mapa ao vivo para acompanhar o status e a entrega de pedidos. A perda de vendas durante o horário de pico está levando a equipe a investigar uma solução melhor do que a sondagem do lado do cliente.

Critérios de decisão

Saber quando não escolher o SignalR é tão importante quanto saber quando escolhê-lo. Com a funcionalidade da Web em tempo real, a experiência do usuário de um aplicativo depende da sua capacidade de reposta. É melhor entender quais partes de um aplicativo exigem atualizações em tempo real.

Quando não usar o SignalR

O SignalR só é durável como sua conexão subjacente. Isto é, se houver alguma preocupação com a conectividade de um aplicativo cliente, o SignalR não é a melhor opção.

Outra consideração é a escalabilidade do SignalR. Dependendo do número de clientes conectados simultaneamente, seu servidor Web poderá sofrer contenção de recursos ao atingir o limite. Em situações assim, provavelmente você precisará implantar o aplicativo em um farm de servidores e usar um backplane. Implementar isso por conta própria pode ser entediante.

Como alternativa, você pode resolver esse problema usando o Serviço do Azure SignalR. Ou você pode ajudar a aliviar isso aproveitando os vários mecanismos de resiliência e recuperação de desastre.

Exemplo de modalidades do SignalR

Você pode usar o SignalR localmente, na nuvem ou com o Serviço do Azure SignalR.

  • No local:

    Diagrama do SignalR do ASP.NET Core sendo usado localmente.

  • Na nuvem:

    Diagrama do SignalR do ASP.NET Core sendo usado na nuvem.

  • Com o Serviço do Azure SignalR:

    Diagrama de uso do Serviço do Azure SignalR.

Casos de uso válidos

O SignalR não substitui as solicitações HTTP tradicionais. Os aplicativos podem usar o SignalR para saber quando fazer solicitações HTTP específicas. Dessa forma, eles se complementam.

Há muitos casos de uso válidos para o SignalR. A seguinte lista representa bons candidatos para o SignalR:

  • Aplicativos que requerem uma alta frequência de atualizações do servidor:
    • Jogos
    • Redes Sociais
    • Votação
    • Leilões
    • Aplicativos de GPS
  • Painéis de controle e aplicativos de monitoramento:
    • Painéis da empresa
    • Mapas ao vivo
    • Atualizações de ofertas instantâneas
    • Alertas de viagem
    • Páginas de pipeline de CI/CD (integração contínua/entrega contínua)
  • Aplicativos interativos multiusuário e colaborativos:
    • Aplicativos de Whiteboard
    • Aplicativos de reunião de equipe
    • Aplicativos de compartilhamento de documentos
    • Visual Studio Live Share
  • Aplicativos que exigem notificações instantâneas:
    • Aplicativos de email
    • Aplicativos de chat
    • Jogos baseados em turnos
    • Relatório de série temporal
    • GitHub Actions, sistemas de solicitação de emissão e pull

Cenário da Contoso Pizza

Se você estiver considerando uma solução de sondagem do lado do cliente no mapa de pedidos ao vivo da Contoso Pizza, o SignalR pode ser uma alternativa viável. Assim como em todas as decisões de programação e arquitetura, é extremamente importante avaliar as vantagens e as desvantagens do SignalR.