Che cos'è Blazor Web Framework di Microsoft e dovresti usarlo?

0
242

Blazor è un nuovo framework web di Microsoft progettato per competere con i leader del settore piattaforme come React. Tranne, invece di utilizzare JavaScript, viene eseguito sul runtime .NET e consente agli sviluppatori di creare app Web interattive con C# e HTML.

Che cos'è ASP .NET Even?

Se vieni dal mondo dei framework JavaScript, potresti essere confuso sulla relazione di Blazor con ASP.NET. Sono entrambi “framework web,” ma Blazor è solo una parte dell'ecosistema ASP.NET.

Sebbene la piattaforma ASP.NET abbia quasi 20 anni a questo punto, non è un framework di dinosauro, è stato costantemente migliorato insieme a C# e .NET nel suo insieme, poiché Microsoft lo utilizza internamente. È completamente multipiattaforma e più performante che mai.

All'inizio, c'era solo ASP.NET, che può essere utilizzato per creare tutti i tipi di applicazioni web. C'era ASP.NET MVC (Model-View-Controller), che crea pagine Web basate sui dati e ASP.NET WebAPI, specializzato in API di back-end. Questi sono stati recentemente uniti in un pacchetto unificato con ASP.NET Core modernizzato.

Cinque anni fa, Razor Pages (che è una cosa separata da Blazor e dal nome confuso) è stato rilasciato per semplificare la sintassi espressiva di MVC, che richiede un sacco di boilerplate e, come tale, non gioca bene con il componente- progettazione mirata di applicazioni moderne. MVC richiede di creare una vista e un modello per ogni pagina in file separati:

Pubblicità

Nel frattempo, con Razor, puoi creare pagine o componenti più snelli con codice integrato nella pagina stessa. Funziona meglio quando le pagine sono più semplici, ma entrambe sono disponibili come opzioni da utilizzare.

Tutte queste funzionalità fanno parte di “ASP.NET” ecosistema. La parte migliore sono i pacchetti e il supporto. Proprio come NPM per JavaScript, anche C# ha un ambiente di pacchetti sano con il gestore di pacchetti NuGet.

Allora cos'è Blazor?

Blazor non cambia nulla sulla sintassi di queste pagine. Utilizzerai ancora le pagine Razor e/o MVC. Questo in realtà non è nemmeno una cosa negativa, perché ci sono già numerose UI e librerie di componenti create per pagine Razor supportate da C#.

Quello che Blazor aggiunge è l'interattività. Le tradizionali pagine MVC/Razor che utilizzano ASP.NET sono sempre state goffe e hanno faticato a tenere il passo con le applicazioni Web in tempo reale come React. Le app web in tempo reale sono così veloci che stanno iniziando a prendere il sopravvento anche sul desktop, con framework come Electron che eseguono app in un contenitore Chromium, senza che gli utenti se ne accorgano.

Quindi, Blazor è stato creato per soddisfare questa domanda. Funziona in modo molto simile a React, in cui le azioni modificano lo stato e gli oggetti di scena e attivano gli aggiornamenti dell'app. Il framework gestirà l'aggiornamento del DOM per te in base ai componenti che devono essere aggiornati. Ciò consente applicazioni in tempo reale in cui la pagina può essere aggiornata o addirittura completamente ridisegnata senza dover effettivamente aggiornare il browser.

Il vantaggio di Blazor rispetto a un framework consolidato come React è il linguaggio. Ti consente di creare app Web con C# e questo da solo lo rende allettante per molti sviluppatori. Qualunque opinione tu possa avere sul dibattito sulla tipizzazione dinamica e statica, ci sono sicuramente vantaggi per “desktop” linguaggi come C# e il Web è seriamente carente di alternative a JavaScript.

Pubblicità

Se disponi di un backend che richiede prestazioni elevate, C# verrà eseguito anche molto più velocemente di JavaScript. Anche se JS non è affatto lento ed è migliorato molto nel corso degli anni, finirà comunque per essere meno performante di C#, che in realtà si avvicina molto alle prestazioni del C++ nativo.

Blazer consente una migliore interoperabilità. Molte app usano già C# anche nel backend. Ad esempio, potresti avere un'API ASP.NET che interagisce con il tuo frontend React. Avrai bisogno di modelli separati per il lato server e client, nonché di codice separato per interagire con essi. Se sono nella stessa lingua, ti consente di condividere facilmente codice e librerie tra client e server. Questo è l'intero motivo per cui NodeJS esiste sul lato server—anche se JavaScript non è il linguaggio desktop ideale, avere app create in una lingua riduce i tempi di sviluppo.

Il futuro del blazer

Esistono in realtà alcuni tipi diversi di Blazor, poiché Microsoft ha recentemente fatto una grande spinta allo sviluppo per modernizzare l'ecosistema ASP.NET. Attualmente sono state rilasciate due versioni:

  • Blazor Server, che funziona come React Server Side Rendering e svolge la maggior parte dell'elaborazione sul server.
  • Blazor WebAssembly, che utilizza la magia di WebAssembly per eseguire il codice .NET effettivo in un browser Web client effettivo.

Anche Microsoft prevede di rilasciare altre tre versioni di Blazor, ancora in fase di sviluppo e disponibili per l'anteprima:

  • Blazor PWA, progettato per pubblicare il sito come un'app Web progressiva (PWA) installabile.
  • Blazor Desktop/Hybrid, che consente il pacchetto delle app Blazor nelle app desktop ed è fondamentalmente come Electron ma con prestazioni migliori.
  • Blazor Native,che sostituisce l'interfaccia utente basata sul Web con un'interfaccia nativa della piattaforma. Non è chiaro quanto sia utile anche oltre all'interoperabilità con gli strumenti Blazor esistenti, e questa versione è ancora in fase di pianificazione.

Nel loro annuncio per Blazor Desktop, Microsoft ha dichiarato che “Blazor è un modello di programmazione delle applicazioni. È molto adattabile e può essere eseguito in più modi (a seconda delle necessità).”

Microsoft sembra pensare a Blazor come al prossimo standard per creare frontend per le applicazioni. Ne vale la pena anche il loro lavoro, perché poiché le applicazioni diventano sempre più dipendenti dal Web, è più difficile giustificare la creazione di frontend separati per Web e desktop. Blazor ha un futuro brillante e le applicazioni web realizzate oggi su Blazor Server e WebAssembly avranno molto spazio per crescere.

Blazor Server vs. Blazor WebAssembly

Blazor Server usa una connessione SignalR per comunicare tra il client e il server. Questo è solo un livello di fantasia sopra una connessione WebSocket, che può opzionalmente ricorrere ad altre connessioni quando necessario. Ciò mantiene tutta l'elaborazione sul server e lascia il client come una semplice visualizzazione con un modo di base per manipolare il DOM.

Pubblicità

Blazor WebAssembly è dove diventa davvero interessante. WebAssembly (WASM) non è realmente un linguaggio in cui si scrive, ma un obiettivo del compilatore. In realtà funziona quasi esattamente come il Microsoft Intermediary Language (MSIL) in cui vengono compilati tutti i C#, F# e VB.NET. Tranne che, anziché essere eseguito con un runtime .NET, viene eseguito utilizzando il runtime WebAssembly nel browser.

La parte interessante di WebAssembly è che è un obiettivo del compilatore relativamente facile da raggiungere. Proprio come C# può compilare fino a MSIL, C# può anche compilare WebAssembly. Bene, tecnicamente, è MSIL che compila in WebAssembly (dato che è più semplice), ma il punto è lo stesso.

Qualsiasi lingua può essere compilata in WASM, anche linguaggi desktop completamente nativi come C++. Questo non è teorico, in realtà funziona in pratica. AutoDesk è stato in grado di trasferire AutoCAD, una base di codice C++ di 30 anni, su un'app Web basata su WebAssembly, in pochi mesi con relativa facilità. Qualcuno ha persino portato Doom 3.

Blazor WebAssembly prende fondamentalmente l'intero server e il runtime .NET e lo esegue su WASM. Quindi, invece di parlare con il server su SignalR, parla direttamente con il DOM. Questo elimina l'elaborazione lato server, che può essere l'ideale per alcune app.

Ciò lo rende in una posizione unica per competere con framework come React, poiché è essenzialmente il primo vero concorrente di JavaScript per le applicazioni web client. Mentre devi aggiungere alcuni tag di script per caricare il runtime e potresti dover immergere le dita dei piedi nel codice JavaScript per alcune cose, dovresti, per la maggior parte, essere in grado di creare un'intera app Web di produzione senza scrivere una singola riga di JavaScript.

Pubblicità

Se usi Blazor Server o Blazor webassembly dipende da te. Entrambi hanno i loro vantaggi. Blazor Server esegue tutto il codice di elaborazione in un ambiente attendibile e non richiede un'API pubblica. Blazor WASM è reattivo e veloce e può anche essere implementato come sito statico servito solo con NGINX.

Come funziona Blazor con JavaScript?

In entrambi i casi, hai effettivamente la piena interoperabilità JavaScript. Blazor può chiamare funzioni JS dal codice gestito:

private async Task ConvertArray() { text = new(await JS.InvokeAsync<string>(“convertArray”, quoteArray)); }

E viceversa:

DotNet.invokeMethodAsync('{ASSEMBLY NAME}', '{.NET METHOD ID}', {ARGUMENTS});

Tuttavia, tieni presente che questo, ovviamente, utilizzerà la riflessione e certamente non è la cosa più performante al mondo.

Tecnicamente puoi usare tutti i pacchetti NPM con Blazor, anche se configurarlo e interagire con esso dal lato .NET potrebbe essere un po' un grattacapo, quindi dovresti preferire un pacchetto NuGet per la maggior parte del tempo.

Puoi usare Blazor sul desktop (Electron)?

Sorprendentemente, la risposta a questo è sì. Mentre Microsoft prevede di rilasciare Blazor Desktop/Hybrid, che fa la stessa cosa, nel frattempo puoi semplicemente usare il normale Electron. Questo perché Electron non si preoccupa davvero di quale pagina web sta servendo e può servire solo un'app Blazor.

Si potrebbe pensare che utilizzerebbe un'app webassembly Blazor, ma in realtà è più semplice aggiungere Electron a un server ASP.NET Core esistente. WASM ha un sovraccarico, quindi questo metodo è più veloce. Questo è ciò che fa Electron.NET e funziona sorprendentemente bene. Tutto quello che devi fare è installarlo e aggiungere Electron come servizio ASP.NET. Puoi anche chiamare le funzioni native di Electron da C#.

Pubblicità

Microsoft ha però piani più grandi per Blazor Desktop. Hanno in programma di eliminare completamente la dipendenza da un browser e JavaScript ed eseguire semplicemente un contenitore nativo con una visualizzazione Web che sia .NET fino in fondo.

“Blazor desktop funzionerà essere strutturato in modo simile al modo in cui funziona Electron. Sarà disponibile un controllo WebView che esegue il rendering del contenuto da un server Web Blazor incorporato, che può servire sia Blazor che altri contenuti Web (JavaScript, CSS, ecc.).”

Questo la visualizzazione web utilizzerà Safari, WebKitGTK o WebView2, a seconda del sistema operativo. WebView2 utilizza Chromium sotto il cofano, quindi funzionerebbe in modo molto simile a Electron, tranne per essere più performante e utilizzare meno memoria.

Qualunque sia l'implementazione, è emozionante vedere un'altra piattaforma competere con JavaScript ed Electron per la creazione di app Web e desktop multipiattaforma. Blazor Desktop dovrebbe essere rilasciato a novembre del 2021 con la prima anteprima di .NET 6.