Visão geral do ASP.NET Core SignalR

O que é SignalR?

O ASP.NET Core SignalR é uma biblioteca de código aberto que simplifica a adição de funcionalidade da Web em tempo real aos aplicativos. A funcionalidade da Web em tempo real permite que o código do lado do servidor envie conteúdo aos clientes instantaneamente.

Bons candidatos para SignalR:

  • Aplicativos que exigem atualizações frequentes do servidor. Por exemplo, jogos, redes sociais, votação, leilão, mapas e aplicativos de GPS.
  • Painéis e aplicativos de monitoramento. Por exemplo, painéis de empresa, atualizações de vendas instantâneas ou alertas de viagem.
  • Aplicativos de colaboração. Aplicativos de quadro de comunicação e software de reunião de equipe são exemplos de aplicativos de colaboração.
  • Aplicativos que exigem notificações. Redes sociais, email, chat, jogos, alertas de viagem e muitos outros aplicativos usam notificações.

SignalR fornece uma API para criar chamadas de procedimento remoto (RPC) de servidor para cliente. As RPCs invocam funções em clientes a partir do código .NET Core do lado do servidor. Há várias plataformas compatíveis, cada uma com seu respectivo SDK de cliente. Por isso, a linguagem de programação que está sendo invocada pela chamada RPC varia.

Aqui estão alguns recursos de SignalR para ASP.NET Core:

  • Trata do gerenciamento de conexões automaticamente.
  • Envia mensagens para todos os clientes conectados simultaneamente. Por exemplo, uma sala de chat.
  • Envia mensagens para clientes ou grupos de clientes específicos.
  • Escala para lidar com o aumento do tráfego.
  • Protocolo de Hub SignalR

A fonte está hospedada em um repositório SignalR no GitHub.

Transportes

SignalR oferece suporte às seguintes técnicas para lidar com a comunicação em tempo real (em ordem de fallback normal):

  • WebSockets
  • Eventos de enviados pelo servidor
  • Sondagem longa

SignalR escolhe automaticamente o melhor método de transporte que está dentro dos recursos do servidor e do cliente.

Hubs

SignalR usa hubs para se comunicar entre clientes e servidores.

Um hub é um pipeline de alto nível que permite que um cliente e um servidor chamem métodos uns nos outros. SignalR trata automaticamente do despacho entre os limites do computador, permitindo que os clientes chamem métodos no servidor e vice-versa. Você pode passar parâmetros fortemente tipados para os métodos, o que permite o model binding. SignalR fornece dois protocolos de hub integrados: um protocolo de texto baseado em JSON e um protocolo binário baseado em MessagePack. O MessagePack geralmente cria mensagens menores em comparação com o JSON. Os navegadores mais antigos devem dar suporte ao XHR nível 2 para oferecer suporte ao protocolo MessagePack.

Os hubs chamam o código do lado do cliente enviando mensagens que contêm o nome e os parâmetros do método do lado do cliente. Os objetos enviados como parâmetros de método são desserializados usando o protocolo configurado. O cliente tenta corresponder o nome a um método no código do lado do cliente. Quando o cliente encontra uma correspondência, ele chama o método e passa para ele os dados de parâmetro desserializados.

Navegadores incompatíveis com ECMAScript 6 (ES6)

SignalR tem como destino o ES6. Para navegadores que não são compatíveis com o ES6, transpile a biblioteca para o ES5. Para obter mais informações, consulte Introdução ao ES6 - Transposição de ES6 para ES5 com Traceur e Babel.

Recursos adicionais