Come abbiamo visto in un precedente articolo (https://www.aspitalia.com/articoli/asp.net-core3/web-ui-interattive-blazor-server.aspx), Blazor Server sfrutta una connessione SignalR per ricevere eventi dal browser e aggiornare il DOM della pagina. Questa architettura ha il vantaggio di funzionare anche con browser legacy, che magari non supportano ancora WebAssembly, ma presenta alcune difficoltà nello scalare il sistema su un gran numero di utenti, visto che il nostro server deve gestire un gran numero di connessioni WebSocket attive.
Una valida alternativa, se siamo su Azure, è quella di sfruttare Azure SignalR Service, di cui ci siamo occupati in questo script: https://www.windowsazureitalia.com/script/113/Scalare-Comunicazioni-Realtime-Azure-SignalR-Service.aspx
Per far sì che Blazor funzioni con questo servizio, dobbiamo innanzi tutto aggiungere il package NuGet Microsoft.Azure.SignalR:
Install-Package Microsoft.Azure.SignalR
A questo punto possiamo configurarlo nella classe di Startup:
public void ConfigureServices(IServiceCollection services) { services.AddRazorPages(); services.AddServerSideBlazor(); services.AddSignalR().AddAzureSignalR(config => { config.ServerStickyMode = ServerStickyMode.Required; config.ConnectionString = "...connectionstring..."; }); services.AddSingleton<WeatherForecastService>(); }
Un aspetto da notare è l'impostazione di ServerStickyMode a Required: questa opzione fa sì che il server a cui vengono inviati i messaggi sia lo stesso con cui è avvenuta l'iniziale negotiation della connessione. Con Blazor è un parametro necessario nel caso in cui abbiamo diverse istanze di web server.
Una volta effettuati questi passaggi, se eseguiamo l'applicazione, vedremo che effettivamente il client si connetterà al servizio SignalR, come previsto:
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Sfruttare i KeyedService in un'applicazione Blazor in .NET 8
Utilizzare Tailwind CSS all'interno di React: primi componenti
Utilizzare politiche di resiliency con Azure Container App
Utilizzare le collection expression in C#
Usare le variabili per personalizzare gli stili CSS
Specificare il versioning nel path degli URL in ASP.NET Web API
Creare gruppi di client per Event Grid MQTT
Inizializzare i container in Azure Container Apps
Eseguire una query su SQL Azure tramite un workflow di GitHub
Effettuare chiamate con versioning da Blazor ad ASP.NET Core
Effettuare delete massive con Entity Framework Core 7
Usare un KeyedService di default in ASP.NET Core 8
I più letti di oggi
- Miglioramenti nelle performance di Angular 16
- Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
- HTML5 con CSS e JavaScript
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Ottimizzazione dei block template in Angular 17
- Disabilitare automaticamente un workflow di GitHub (parte 2)