Elementos internos do Azure SignalR Service
O Serviço Azure SignalR foi criado com base em ASP.NET estrutura Core SignalR. Ele também suporta ASP.NET SignalR reimplementando ASP.NET protocolo de dados do SignalR sobre a estrutura ASP.NET Core.
Você pode migrar facilmente um ASP.NET local Core SignalR ou um aplicativo ASP.NET SignalR para trabalhar com o Serviço SignalR, alterando algumas linhas de código.
O diagrama descreve a arquitetura típica quando você usa o serviço SignalR com seu servidor de aplicativos.
As diferenças do aplicativo ASP.NET Core SignalR auto-hospedado também são discutidas.
Conexões do servidor de aplicativos
Um servidor de aplicativos ASP.NET Core SignalR auto-hospedado escuta e conecta os clientes diretamente.
Com o SignalR Service, o servidor de aplicativos não aceita mais conexões de cliente persistentes, em vez disso:
- Um
negotiate
ponto de extremidade é exposto pelo SDK do Serviço Azure SignalR para cada hub. - O ponto de extremidade responde às solicitações de negociação do cliente e redireciona os clientes para o Serviço SignalR.
- Os clientes se conectam ao Serviço SignalR.
Para obter mais informações, consulte Conexões de cliente.
Depois que o servidor de aplicativos for iniciado:
- Para ASP.NET Core SignalR: o SDK do Serviço Azure SignalR abre cinco conexões WebSocket por hub para o Serviço SignalR.
- Para ASP.NET SignalR: o SDK do Serviço SignalR do Azure abre cinco conexões WebSocket por hub para o Serviço SignalR e uma conexão WebSocket por aplicativo.
O número inicial de conexões tem como padrão 5 e é configurável usando a InitialHubServerConnectionCount
opção no SDK do Serviço SignalR. Para obter mais informações, consulte configuração.
Enquanto o servidor de aplicativos está conectado ao serviço SignalR, o serviço Azure SignalR envia mensagens de balanceamento de carga para o servidor. Em seguida, o SDK inicia novas conexões de servidor com o serviço para um melhor desempenho. As mensagens de e para clientes são multiplexadas nessas conexões.
As conexões de servidor são persistentemente conectadas ao serviço SignalR. Se uma conexão de servidor estiver desconectada devido a um problema de rede:
- Todos os clientes atendidos por essa conexão de servidor se desconectam. Para obter mais informações, consulte Transmissão de dados entre cliente e servidor.
- O servidor reconecta automaticamente os clientes.
Ligações de cliente
Quando você usa o serviço SignalR, os clientes se conectam ao serviço em vez do servidor de aplicativos. Há três etapas para estabelecer conexões persistentes entre o cliente e o Serviço SignalR.
O cliente envia uma solicitação de negociação para o servidor de aplicativos.
O servidor de aplicativos usa o SDK do Serviço SignalR do Azure para retornar uma resposta de redirecionamento contendo a URL do Serviço SignalR e o token de acesso.
- Para ASP.NET Core SignalR, uma resposta de redirecionamento típica se parece com:
{ "url":"https://test.service.signalr.net/client/?hub=chat&...", "accessToken":"<a typical JWT token>" }
- Para ASP.NET SignalR, uma resposta de redirecionamento típica se parece com:
{ "ProtocolVersion":"2.0", "RedirectUrl":"https://test.service.signalr.net/aspnetclient", "AccessToken":"<a typical JWT token>" }
- Para ASP.NET Core SignalR, uma resposta de redirecionamento típica se parece com:
Depois que o cliente recebe a resposta de redirecionamento, ele usa a URL e o token de acesso para se conectar ao Serviço SignalR.
Para saber mais sobre ASP.NET Core SignalR's, consulte Protocolos de transporte.
Transmissão de dados entre cliente e servidor
Quando um cliente está conectado ao serviço SignalR, o tempo de execução do serviço encontra uma conexão de servidor para atender esse cliente.
- Esta etapa acontece apenas uma vez e é um mapeamento um-para-um entre a conexão cliente e servidor.
- O mapeamento é mantido no Serviço SignalR até que o cliente ou servidor se desconecte.
Neste ponto, o servidor de aplicativos recebe um evento com informações do novo cliente. Uma conexão lógica com o cliente é criada no servidor de aplicativos. O canal de dados é estabelecido do cliente para o servidor de aplicativos, via SignalR Service.
O Serviço SignalR transmite dados do cliente para o servidor de aplicativos de emparelhamento. Os dados do servidor de aplicativos são enviados para os clientes mapeados.
O Serviço SignalR não salva nem armazena dados do cliente, todos os dados do cliente recebidos são transmitidos para o servidor ou clientes de destino em tempo real.
O Serviço SignalR do Azure atua como uma camada de transporte lógico entre o servidor de aplicativos e os clientes. Todas as conexões persistentes são descarregadas para o Serviço SignalR. Como resultado, o servidor de aplicativos só precisa lidar com a lógica de negócios na classe hub, sem se preocupar com conexões de cliente.
Próximos passos
Para saber mais sobre os SDKs do Azure SignalR, consulte: