Visão geral do ASP.NET Core SignalR

ASP.NET Core SignalR é uma biblioteca de software livre que simplifica a adição de funcionalidades 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. Há muitos cenários em que um aplicativo ASP.NET Core pode se beneficiar de SignalR:

Scenario Exemplos
Aplicativos que exigem atualizações de alta frequência do servidor Jogos, redes sociais, sites de votação, leilões, mapas, GPS
Painéis e aplicativos para monitoramento Painéis da empresa, atualizações de vendas instantâneas, alertas de viagem
Aplicativos que dão suporte à colaboração Aplicativos whiteboard, software de reunião de equipe
Aplicativos que exigem notificações Redes sociais, Email, Chat, Jogos, Alertas de viagem

Este artigo fornece uma introdução ao trabalho com SignalR em seus aplicativos ASP.NET Core.

Recursos e código-fonte

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

SignalR para ASP.NET Core fornece aos desenvolvedores muitos recursos:

  • Gerenciar conexões automaticamente
  • Enviar mensagens para todos os clientes conectados simultaneamente (por exemplo, uma sala de chat)
  • Enviar mensagens para clientes ou grupos específicos de clientes
  • Dimensione para lidar com o aumento do tráfego com opções como o Azure SignalR Service e o backplane Redis
  • Suporte à redução e à compilação nativa antecipada (AOT) para cenários compatíveis
  • Suporte ao tratamento de tipos polimórficos em métodos de hub
  • Suporte ao rastreamento distribuído com ActivitySource para SignalR hub server e .NET cliente
  • Trabalhe com o SignalR Hub Protocol

A origem é hospedada no repositório ASP.NET Core SignalR em GitHub.

Transports

SignalR aceita as seguintes técnicas para lidar com comunicação em tempo real (em ordem de fallback):

  • WebSockets
  • Eventos enviados pelo servidor
  • Sondagem longa

SignalR escolhe automaticamente o melhor método de transporte dentro dos recursos do servidor e do cliente. WebSockets é o transporte preferencial porque geralmente fornece o melhor desempenho.

Hubs

SignalR usa hubs para se comunicar entre clientes e servidores.

Um hub é um pipeline de alto nível que um cliente e um servidor usam para chamar métodos um no outro. SignalR lida automaticamente com o despacho entre limites de máquina, permitindo que os clientes chamem métodos no servidor e vice-versa. Você pode passar parâmetros fortemente tipados para métodos e habilitar a vinculação de modelo.

SignalR dá suporte a dois protocolos de hub internos:

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

O que é SignalR?

ASP.NET Core SignalR é uma biblioteca de software livre que simplifica a adição de funcionalidades 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 colaborativos. Aplicativos de quadro branco e software para reuniões 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 chamadas de procedimento remoto (RPCs) invocam funções nos clientes a partir do código .NET 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.
  • Escalável para lidar com o aumento do tráfego com opções como o Serviço SignalR do Azure e backplane do Redis.
  • Suporta truncamento e compilação nativa antecipada (AOT) para cenários suportados.
  • Dá suporte ao tratamento de tipo polimórfico em métodos de hub.
  • Dá suporte ao rastreamento distribuído com ActivitySource para servidor hub e cliente .NET.
  • Protocolo de Hub SignalR

A origem é hospedada em um repositório SignalR em GitHub.

Transports

SignalR aceita as seguintes técnicas para lidar com comunicação em tempo real (em ordem de fallback):

  • WebSockets
  • Eventos enviados pelo servidor
  • Sondagem longa

SignalR escolhe automaticamente o melhor método de transporte que está dentro dos recursos do servidor e do cliente. WebSockets é o transporte preferencial porque geralmente fornece o melhor desempenho.

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 executem métodos entre si. SignalR lida automaticamente com o despacho entre limites de máquina, 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 dá suporte a dois protocolos de hub internos: um protocolo de texto baseado em JSON (padrão) e um protocolo binário baseado em MessagePack. O MessagePack geralmente cria mensagens menores em comparação com o JSON. Para obter mais informações, consulte Uso do Protocolo de Hub MessagePack em SignalR para ASP.NET Core.

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

Recursos adicionais

O que é SignalR?

ASP.NET Core SignalR é uma biblioteca de software livre que simplifica a adição de funcionalidades 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 colaborativos. Aplicativos de quadro branco e software para reuniões 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 chamadas de procedimento remoto (RPCs) invocam funções nos clientes a partir do código .NET 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 origem é hospedada em um repositório SignalR em GitHub.

Transports

SignalR aceita as seguintes técnicas para lidar com comunicação em tempo real (em ordem de fallback):

  • WebSockets
  • Eventos 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 executem métodos entre si. SignalR lida automaticamente com o despacho entre limites de máquina, 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 cliente enviando mensagens que contêm o nome e os parâmetros do método cliente. Os objetos enviados como parâmetros de método são desserializados usando o protocolo configurado. O cliente tenta encontrar uma correspondência entre o nome e um método no código cliente. Quando o programa cliente encontra uma correspondência, ele chama o método e passa para ele os dados deserializados dos parâmetros.

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