Panoramica di ASP.NET Core SignalR
Cos’è SignalR?
ASP.NET Core SignalR è una libreria open source 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 immediatamente il push del contenuto ai 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 rpc (Remote Procedure Call) da server a client. Le rpc richiamano le funzioni nei client dal codice .NET Core sul lato server. Esistono diverse piattaforme supportate, ognuna con il rispettivo SDK client. Per questo motivo, 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 di client specifici.
- Scalabilità per gestire l'aumento del traffico.
- SignalR Protocollo hub
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 normale):
- WebSocket
- SSE (Server-Sent Event)
- Polling lungo
SignalR sceglie automaticamente il metodo di trasporto migliore 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 a un server di chiamare i metodi l'uno sull'altro. SignalR gestisce automaticamente l'invio attraverso i limiti del computer, consentendo ai client di chiamare metodi sul server e viceversa. È possibile passare parametri fortemente tipizzato ai metodi, che abilitano 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 in genere crea messaggi più piccoli rispetto a JSON. I browser meno recenti devono supportare il livello XHR 2 per fornire il supporto del protocollo MessagePack.
Hub chiama 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 associare il 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.
Browser che non supportano ECMAScript 6 (ES6)
SignalR è destinato a ES6. Per i browser che non supportano ES6, transpilare la libreria in ES5. Per altre informazioni, vedere Getting Started with ES6 – Transpiling ES6 to ES5 with Traceur and Babel (Introduzione a ES6 - Transpiling ES6 to ES5 con Traceur e Babel).