Visão geral de ASP.NET Core SignalR

ASP.NET Core SignalR é uma biblioteca open-source que simplifica a adição de funcionalidades web em tempo real às aplicações. A funcionalidade da Web em tempo real permite que o código do lado do servidor envie conteúdo para os clientes instantaneamente. Existem muitos cenários em que uma aplicação ASP.NET Core pode beneficiar de SignalR:

Scenario Exemplos
Aplicações que requerem atualizações de alta frequência do servidor Jogos, redes sociais, sites de votação, leilões, mapas, GPS
Painéis de controlo e aplicações para monitorização Painéis de controlo da empresa, atualizações instantâneas de vendas, alertas de viagem
Aplicações que apoiam a colaboração Aplicações de quadro branco, software de reuniões de equipa
Aplicações que requerem notificações Redes sociais, email, chat, jogos, alertas de viagem

Este artigo oferece uma introdução ao trabalho com SignalR nas suas aplicações de ASP.NET Core.

Funcionalidades e código-fonte

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

SignalR for ASP.NET Core oferece aos programadores muitas funcionalidades:

  • Gerir automaticamente a gestão da ligação
  • Enviar mensagens para todos os clientes ligados simultaneamente (por exemplo, uma sala de chat)
  • Enviar mensagens para clientes específicos ou grupos de clientes
  • Escale para lidar com tráfego crescente com opções como o Azure SignalR Service e Redis backplane
  • Suporte para corte e compilação nativa antecipada (AOT) para cenários suportados
  • Suportar o tratamento de tipos polimórficos em métodos do hub
  • Suporta rastreamento distribuído com ActivitySource para servidor hub SignalR e cliente .NET
  • Trabalhar com o SignalR protocolo Hub

O código-fonte está alojado no repositório ASP.NET Core SignalR em GitHub.

Transports

SignalR suporta as seguintes técnicas para lidar com a comunicação em tempo real (em ordem de alternância cuidadosamente planejada):

  • WebSockets
  • Eventos enviados pelo servidor
  • Sondagens longas

SignalR escolhe automaticamente o melhor método de transporte dentro das capacidades do servidor e do cliente. O WebSockets é o transporte preferido porque geralmente oferece 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 gere automaticamente o despacho através dos limites da máquina, para que os clientes possam chamar métodos no servidor e vice-versa. Pode passar parâmetros fortemente tipados para métodos e ativar a associação a modelos.

SignalR Suporta dois protocolos hub integrados:

Os hubs chamam 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 corresponder o nome a um método no código do lado do cliente. Quando o cliente encontra uma correspondência, chama o método e passa os dados dos parâmetros deserializados.

O que é o SignalR?

ASP.NET Core SignalR é uma biblioteca open-source que simplifica a adição de funcionalidades web em tempo real às aplicações. A funcionalidade da Web em tempo real permite que o código do lado do servidor envie conteúdo para os clientes instantaneamente.

Bons candidatos a SignalR:

  • Aplicativos que exigem atualizações de alta frequência do servidor. Exemplos são jogos, redes sociais, votação, leilão, mapas e aplicativos de GPS.
  • Painéis e aplicativos de monitoramento. Os exemplos incluem painéis da empresa, atualizações instantâneas de vendas ou alertas de viagem.
  • Aplicações colaborativas. Aplicações de quadro branco e software para reuniões de equipa são exemplos de aplicações colaborativas.
  • Aplicações que requerem notificações. Redes sociais, e-mail, 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. Os RPCs invocam funções nos clientes a partir de código .NET do lado do servidor. Existem várias plataformas suportadas, cada uma com seu respetivo SDK de cliente. Por isso, a linguagem de programação que está sendo invocada pela chamada RPC varia.

Aqui estão algumas funcionalidades do SignalR para ASP.NET Core:

  • Lida com o gerenciamento de conexões automaticamente.
  • Envia mensagens para todos os clientes conectados simultaneamente. Por exemplo, uma sala de chat.
  • Envia mensagens para clientes específicos ou grupos de clientes.
  • Escala para lidar com o aumento do tráfego com opções como o Azure SignalR Service e Redis backplane.
  • Suporta eliminação de partes desnecessárias e compilação nativa antecipada (AOT) para cenários suportados.
  • Suporta tratamento de tipos polimórficos em métodos de hub.
  • Suporta rastreamento distribuído com ActivitySource para servidor hub SignalR e cliente .NET.
  • SignalR Protocolo de Hub

O código-fonte está alojado num repositório SignalR no GitHub.

Transports

SignalR suporta as seguintes técnicas para lidar com a comunicação em tempo real (em ordem de alternância cuidadosamente planejada):

  • WebSockets
  • Eventos enviados pelo servidor
  • Consulta Longa

SignalR escolhe automaticamente o melhor método de transporte que está dentro das capacidades do servidor e do cliente. O WebSockets é o transporte preferido porque geralmente oferece 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 chamem métodos um no outro. SignalR Lida com o despacho através dos limites da máquina automaticamente, permitindo que os clientes chamem métodos no servidor e vice-versa. Você pode passar parâmetros fortemente tipados para métodos, permitindo assim a vinculação de modelo. SignalR suporta dois protocolos hub incorporados: um protocolo de texto baseado em JSON (por defeito) e um protocolo binário baseado em MessagePack. O MessagePack geralmente cria mensagens menores em comparação com o JSON. Para mais informações, consulte Use o Protocolo MessagePack Hub em SignalR para ASP.NET Core.

Os hubs chamam 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 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.

Recursos adicionais

O que é o SignalR?

ASP.NET Core SignalR é uma biblioteca open-source que simplifica a adição de funcionalidades web em tempo real às aplicações. A funcionalidade da Web em tempo real permite que o código do lado do servidor envie conteúdo para os clientes instantaneamente.

Bons candidatos a SignalR:

  • Aplicativos que exigem atualizações de alta frequência do servidor. Exemplos são jogos, redes sociais, votação, leilão, mapas e aplicativos de GPS.
  • Painéis e aplicativos de monitoramento. Os exemplos incluem painéis da empresa, atualizações instantâneas de vendas ou alertas de viagem.
  • Aplicações colaborativas. Aplicações de quadro branco e software para reuniões de equipa são exemplos de aplicações colaborativas.
  • Aplicações que requerem notificações. Redes sociais, e-mail, 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. Os RPCs invocam funções nos clientes a partir de código .NET do lado do servidor. Existem várias plataformas suportadas, cada uma com seu respetivo SDK de cliente. Por isso, a linguagem de programação que está sendo invocada pela chamada RPC varia.

Aqui estão algumas funcionalidades do SignalR para ASP.NET Core:

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

O código-fonte está alojado num repositório SignalR no GitHub.

Transports

SignalR suporta as seguintes técnicas para lidar com a comunicação em tempo real (em ordem de alternância cuidadosamente planejada):

  • WebSockets
  • Eventos enviados pelo servidor
  • Consulta Longa

SignalR escolhe automaticamente o melhor método de transporte que está dentro das capacidades 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 um no outro. SignalR Lida com o despacho através dos limites da máquina automaticamente, permitindo que os clientes chamem métodos no servidor e vice-versa. Você pode passar parâmetros fortemente tipados para métodos, permitindo assim a vinculação de modelo. SignalR fornece dois protocolos de hub internos: 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 suportar XHR nível 2 para fornecer suporte ao protocolo MessagePack.

Os hubs chamam 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 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 que não suportam ECMAScript 6 (ES6)

SignalR visa o padrão ES6. Para navegadores que não suportam ES6, transpile a biblioteca para ES5. Para obter mais informações, consulte Introdução ao ES6 – Transpilando ES6 para ES5 com Traceur e Babel.

Recursos adicionais