Panoramica delle ASP.NET Core SignalR

Che cos'è SignalR?

ASP.NET Core è una libreria open source SignalR che semplifica l'aggiunta di funzionalità Web in tempo reale alle app. La funzionalità Web in tempo reale consente al codice lato server di eseguire il push istantaneo del contenuto nei client.

Candidati validi per SignalR:

  • App che richiedono aggiornamenti con frequenza elevata dal server, ad esempio giochi, social network, mappe, aste e app GPS e di voto.
  • Dashboard e app di monitoraggio, ad esempio dashboard aziendali, aggiornamenti di vendite istantanee o avvisi di viaggio.
  • App di collaborazione, ad esempio app per lavagne e software per riunioni in team.
  • App che richiedono notifiche. Social network, posta elettronica, chat, giochi, avvisi di viaggio e molte altre app usano le notifiche.

SignalRfornisce un'API per la creazione di chiamate di routine remota da server a client (RPC). I controller di dominio di dominio richiamano le funzioni nei client dal codice .NET Core lato server. Esistono diverse piattaforme supportate, ognuna con il rispettivo SDK client. A causa di questo, il linguaggio di programmazione richiamato dalla chiamata RPC varia.

Ecco alcune funzionalità di SignalR per ASP.NET Core:

  • Gestisce automaticamente la gestione delle connessioni.
  • Invia messaggi a tutti i client connessi contemporaneamente. Ad esempio, una chat room.
  • Invia messaggi a client o gruppi specifici di client.
  • Scalabilità per gestire l'aumento del traffico.

L'origine è ospitata in un SignalR repository in GitHub.

Trasporti

SignalR supporta le tecniche seguenti per la gestione delle comunicazioni in tempo reale (in ordine di fallback tolleranza):

  • WebSocket
  • SSE (Server-Sent Event)
  • Polling prolungato

SignalR sceglie automaticamente il metodo di trasporto migliore che si trova all'interno delle funzionalità del server e del client.

Hub

SignalR usa hub per comunicare tra client e server.

Un hub è una pipeline di alto livello che consente a un client e al server di chiamare i metodi tra loro. SignalR gestisce automaticamente l'invio tra i limiti del computer, consentendo ai client di chiamare i metodi nel server e viceversa. È possibile passare parametri fortemente tipizzato ai metodi, che consentono l'associazione di modelli. SignalR fornisce due protocolli hub predefiniti: un protocollo di testo basato su JSON e un protocollo binario basato su MessagePack. MessagePack crea in genere messaggi più piccoli rispetto a JSON. I browser meno recenti devono supportare il livello XHR 2 per fornire il supporto del protocollo MessagePack.

Gli hub chiamano il codice lato client inviando messaggi che contengono il nome e i parametri del metodo lato client. Gli oggetti inviati come parametri del metodo vengono deserializzati usando il protocollo configurato. Il client tenta di corrispondere al nome a un metodo nel codice lato client. Quando il client trova una corrispondenza, chiama il metodo e lo passa ai dati dei parametri deserializzati.

Risorse aggiuntive