Ridimensionare le applicazioni ASP.NET Core SignalR con il servizio Azure SignalR

Sviluppo di app SignalR

SignalR è attualmente disponibile in due versioni per l'uso con le applicazioni Web:

  • ASP.NET SignalR
  • nuovo ASP.NET Core SignalR

ASP.NET Core SignalR è una riscrittura della versione precedente. Di conseguenza, ASP.NET Core SignalR non è compatibile con la versione precedente di SignalR. Le API e i comportamenti sono diversi. Il Servizio Azure SignalR supporta entrambe le versioni.

Servizio Azure SignalR consente di ospitare l'applicazione Web effettiva su più piattaforme (Windows, Linux e macOS) app Azure Service, IIS, Nginx, Apache, Docker. È inoltre possibile usare il self-hosting in un processo personalizzato.

Servizio Azure SignalR è la scelta migliore se gli obiettivi per l'applicazione includono:

  • supporto delle funzionalità più recenti per l'aggiornamento dei client Web con aggiornamenti del contenuto in tempo reale,
  • esecuzione su più piattaforme (Azure, Windows, Linux e macOS)
  • hosting in ambienti diversi

Perché non distribuire direttamente SignalR?

È comunque un approccio valido per distribuire la propria app Web di Azure che supporta SignalR come componente back-end nell'applicazione Web complessiva.

Uno dei motivi principali per usare il servizio Azure SignalR è la semplicità. Con il servizio Azure SignalR, non è necessario gestire problemi di prestazioni, scalabilità e disponibilità. Questi problemi vengono gestiti automaticamente con un contratto di servizio con disponibilità del 99,9%.

I WebSocket sono inoltre la tecnologia generalmente preferita per supportare gli aggiornamenti dei contenuti in tempo reale. Tuttavia, il bilanciamento del carico di un numero elevato di connessioni WebSocket permanenti diventa un problema complesso da risolvere in caso di ridimensionamento. Soluzioni comuni usano: bilanciamento del carico DNS, servizi di bilanciamento del carico hardware e bilanciamento del carico software. Il servizio Azure SignalR gestisce questo problema automaticamente.

Per ASP.NET Core SignalR, un altro motivo potrebbe non essere necessario per ospitare effettivamente un'applicazione Web. La logica dell'applicazione Web potrebbe usare l'elaborazione serverless. Ad esempio, il codice potrebbe essere solo ospitato ed eseguito su richiesta con trigger di Funzioni di Azure. Questo scenario può risultare complesso perché il codice viene eseguito solo su richiesta e non mantiene connessioni lunghe con i client. Il servizio Azure SignalR può gestire questa situazione dal momento che il servizio gestisce già automaticamente le connessioni. Per altre informazioni, vedere panoramica su come usare Servizio SignalR con Funzioni di Azure. Poiché ASP.NET SignalR usa un protocollo diverso, tale modalità serverless non è supportata per ASP.NET SignalR.

Come avviene il ridimensionamento?

È comune ridimensionare SignalR con SQL Server, bus di servizio di Azure o cache di Azure per Redis. Il servizio Azure SignalR gestisce automaticamente l'approccio di ridimensionamento. Le prestazioni e i costi sono paragonabili a questi approcci senza la complessità di gestione di questi altri servizi. È sufficiente aggiornare il numero di unità per il servizio. Ogni unità supporta fino a 1000 connessioni client.

Passaggi successivi