Blazor Server vs. Blazor WebAssembly

.NET Blazor

Finalmente sono riuscito a sperimentare un pò più a fondo il mondo Blazor e dopo aver letto diversi articoli, visto e ascoltato diversi video la prima domanda che mi è pervenuta è stata: qual’è la differenza tra Blazor Server e Blazor WebAssemby (WASM) e quando usare quale versione? Quindi ho provato ad analizzare le diverse features, i pro e i contro e trarre le mie conclusioni.

Blazor Server vs. Blazor WebAssembly Features

Blazor WebAssembly Features

  • WASM viene eseguito nel browser sul client
  • La prima richiesta all’applicazione WASM scarica il CLR, gli assembly, JavaScript, CSS
  • Viene eseguita nella sandbox sicura di WASM
  • Il gestore Javascript Blazor accede al DOM (Document Object Model)

Blazor Server

  • Il codice C# viene eseguito sul server
  • Gli Hooks di Javascript sono usati per accedere al DOM
  • I messaggi binari sono usati per passare informazioni tra il browser e il server usando SignalR
  • Se qualcosa è cambiato il server rimanda indietro i messaggi di aggiornamento del DOM

Pro e contro Blazor Server

Vantaggi

  • Caricamento più veloce di WASM
  • Accesso a risorse sicure come database o servizi basati su cloud
  • Supporta i browser che non supportano WASM come IE 11
  • Il codice C# non viene inviato al browser

Svantaggi

  • Latenza extra dovuta all’invio di dati avanti e indietro
  • Nessun supporto offline
  • La scalabilità può essere impegnativa

Pro e contro Blazor WebAssembly

Vantaggi

  • Codice UI più veloce
  • Per prestazioni ottimali usa WASM
  • Supporto offline
  • Può essere distribuito via CDN, nessun server richiesto (eccetto per le API per i dati)
  • Qualsiasi standard .Net 2.0 C# può essere eseguito

Svantaggi

  • È necessario un livello API se si vuole accedere a risorse sicure
  • Debug ancora un po’ limitato

Conclusioni

Blazor Server e l’applicazione WebAssembly hanno entrambi i loro vantaggi e svantaggi. Quale scegliere? Dipende. Per servire un gran numero di utenti dove non abbiamo problemi di sicurezza ha senso usare WASM, offre anche il supporto offline. Blazor Server da usare per un caricamento veloce della prima pagina e se abbiamo del codice sensibile che non vogliamo inviare al browser.