Quando usare SignalR ASP.NET Core

Completato

SignalR fornisce funzionalità Web in tempo reale. Occorre ricordare che Contoso Pizza necessita di una mappa dinamica per il monitoraggio dello stato e della consegna degli ordini. La perdita di vendite durante gli orari di picco sta spingendo il team a cercare una soluzione migliore rispetto al polling lato client.

Criteri decisionali

Sapere quando non scegliere SignalR è importante quanto sapere quando sceglierlo. Grazie alla funzionalità Web in tempo reale, l'esperienza utente di un'app si basa sulla rispettiva velocità di risposta. È consigliabile comprendere quali parti di un'applicazione necessitano di aggiornamenti in tempo reale.

Quando non usare SignalR

SignalR è durevole solo quanto la rispettiva connessione sottostante. Se la connettività di un'applicazione client non è affidabile, SignalR non è l'opzione ottimale.

Un'altra considerazione è costituita dalla scalabilità di SignalR. In base al numero di client connessi simultaneamente, è possibile che nel server Web si verifichi un conflitto di risorse quando vengono raggiunti i rispettivi limiti. In situazioni analoghe a questa, è probabile che sia necessario distribuire l'applicazione in una server farm e usare un backplane. L'implementazione autonoma di questo approccio può risultare complessa.

In alternativa, è possibile risolvere il problema usando il Servizio Azure SignalR. È anche possibile contribuire alla riduzione del problema sfruttando i diversi meccanismi per resilienza e ripristino di emergenza.

Modalità SignalR di esempio

È possibile usare SignalR in locale, sul cloud o con il Servizio Azure SignalR.

  • In locale:

    Diagram of ASP.NET Core SignalR being used on-premises.

  • Sul cloud:

    Diagram of ASP.NET Core SignalR being used in the cloud.

  • Con il Servizio Azure SignalR:

    Diagram of using Azure SignalR Service.

Casi d'uso validi

SignalR non sostituisce le richieste HTTP tradizionali. Le applicazioni possono usare SignalR per sapere quando effettuare richieste HTTP specifiche. Da questo punto di vista sono complementari.

Esistono molti casi d'uso validi per SignalR. L'elenco seguente rappresenta candidati validi per SignalR:

  • App che richiedono aggiornamenti con frequenza elevata dal server:
    • Giochi
    • Social network
    • Operazioni di voto
    • Aste
    • App GPS
  • Dashboard e app di monitoraggio:
    • Dashboard aziendali
    • Mappe dinamiche
    • Aggiornamenti immediati delle vendite
    • Avvisi di viaggio
    • Pagine di pipeline di integrazione continua e recapito continuo (CI/CD)
  • App collaborative e interattive multiutente:
    • App di lavagna
    • App per riunioni di team
    • App di condivisione di documenti
    • Visual Studio Live Share
  • App che richiedono notifiche istantanee:
    • App di posta elettronica
    • App di chat
    • Giochi basati su turni
    • Creazione di report basati su serie temporali
    • GitHub Actions, sistemi relativi a problemi e richieste pull

Scenario di Contoso Pizza

Se si sta considerando una soluzione con polling lato client nella mappa dinamica degli ordini di Contoso Pizza, SignalR può essere un'alternativa valida. Come per tutte le decisioni di programmazione e architettura, è fondamentale valutare i vantaggi e gli svantaggi di SignalR.