in blazor, Informatica

Blazor – Come funziona?

Reading Time: 2 minutes

Un’ introduzione a Blazor scritta per la community DotNet Tortona.

Lo sviluppo di applicazioni frontend, praticamente passa dall’utilizzo di javascript (o di uno dei framework che ne fanno uso). Uno dei sogni dei programmatori .NET è quello di realizzare Single Page Application (SPA) e progressive webapp (PWA) direttamente tramite il framework. Questo tipo di approccio è stato per anni un’utopia ed ha portato gli sviluppatori a dover impare linguaggi per lo sviluppo di UI e frontend (es. javascript, angular, react, ecc…). In questo scenario, alcuni anni fa, ha fatto la sua comparsa Blazor.

Cos’è Blazor?

Blazor è un framework per lo sviluppo di applicazioni Web interattive, lato client, usando C# anziché Javascript. Blazor non necessita l’installazione di plugin sul browser, utilizzando Web Assembly che è supportato da tutti i browser di ultima generazione. In pratica, se il codice può essere convertito in web assembly può essere eseguito dal browser come se si trattasse di codice nativo.

Microsoft ha investito parecchio in questa tecnologia, ed oggi è possibile realizzare applicazione e pubblicarle direttamente in ambiente di produzione senza doversi preoccupare delle performance e della compatibilità.

La realizzazione di applicazioni tramite blazor può avvenire attraverso due modalità: blazor server e blazor client (wasm). Al momento della scrittura di questo post sono presenti anche alcune altre versioni piu’ o meno sperimentali di blazor: facciamo riferimento alle versioni ufficiali distribuite da microsoft.

Come funziona Blazor client (wasm) ?

In maniera piuttosto semplice, analizziamo il funzionamento di blazor client. Quando il browser invia una richiesta all’applicazione blazor, il contenuto del file blazor.webassembly.js viene eseguito, quindi scarica il runtime Mono DotNet e tutte le librerie dell’applicazione utilizzate dall’applicazione. Dopo aver scaricato tutte le risorse richieste, blazor.webassembly.js imposta il DOM vincolando tutta l’interoperabilità javascript tra le nostre DLL delle applicazioni e i componenti dell’interfaccia utente nel browser. Una volta completati tutti i passaggi precedenti, blazor.webassembly.js inizializza il runtime per iniziare l’esecuzione del programma.

La dimensione del runtime Mono DotNet è di circa 2,46 MB e il team di blazor si sta concentrando sulla riduzione delle dimensioni nella prossima versione anche se possiamo superare il problema utilizzando blazor server.

Vantaggi

  • Connessione al server sempre attiva non richiesta
  • Vengono utilizzate le risorse del client
  • Server Web ASP.NET Core completo non richiesto
  • Può essere ospitato sul proprio server, cloud, rete CDN di Azure
  • Permette di creare applicazioni Web progressive utilizzando C#

Svantaggi

  • La prima richiesta di solito richiede più tempo delle richieste successive
  • Limitato alle capacità del browser
  • Più grande è l’applicazione, più pesante diventa il carico di lavoro dell’applicazione
  • Impossibile lavorare con browser Web che non supportano l’assembly Web

Come funziona Blazor Server?

Blazor server esegue le dll e i componenti razor direttamente lato server.  Gli eventi dell’interfaccia utente che si verificano nel browser vengono inviati al server tramite una connessione bidirezionale in tempo reale utilizzando SignalR. .

Sfruttando le funzionalità di SignalR il canale di comunicazione (es. websocket…) viene gestito automaticamente senza che lo sviluppatore intervenga da codice.

Questo tipo di approccio ha, almeno sulla carta, maggiori performance.

Vantaggi

  • L’applicazione si carica molto più velocemente
  • Può sfruttare appieno le funzionalità del server
  • Tutto ciò di cui il cliente ha bisogno per utilizzare l’app è un browser web
  • Più sicuro in quanto il codice dell’app non viene inviato al client

Svantaggi

  • È richiesto il server ASP.NET Core
  • È richiesta una connessione attiva al server
  • Latenza più elevata a causa di una comunicazione bidirezionale con il server
  • La scalabilità può non essere banale

  • Articoli Correlati per Tag :