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

Contenuti

Logo blazer

blazer è un nuovo framework Web Microsoft progettato per competere con piattaforme leader del settore come React. Salvo che, invece di usare JavaScript, viene eseguito sul runtime .NET e consente agli sviluppatori di creare applicazioni Web interattive con C # e HTML.

Che cos'è ASP.NET incluso??

Se vieni dal mondo dei framework JavaScript, potresti essere confuso riguardo al collegamento di Blazor ad ASP.NET. Entrambi sono “frame web”, ma Blazor è solo una parte dell'ecosistema ASP.NET.

Mentre il Piattaforma ASP.NET ha quasi 20 anni in questo momento, non una cornice di dinosauro; è costantemente migliorato insieme a C # e .NET nel suo insieme, poiché Microsoft lo utilizza internamente. È assolutamente multipiattaforma e più efficiente che mai.

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

Cinque anni fa, Razor Pages (che è qualcosa di diverso da Blazor e ha un nome confuso) è stato rilasciato per semplificare la sintassi espressiva di MVC, che richiede molto testo standard e, come tale, non funziona bene con la progettazione incentrata sui componenti delle applicazioni moderne. MVC ha bisogno che tu crei vista e modello per ogni pagina in file separati:

MVC richiede di creare una vista e un modello per ogni pagina in file separati:

Intanto, con il rasoio, puoi creare pagine o componenti più ottimizzati con codice incorporato nella pagina stessa. Funziona meglio quando le pagine sono più semplici, ma entrambi sono disponibili come opzioni per il tuo utilizzo.

Intanto, con il rasoio, puoi creare pagine o componenti più ottimizzati con codice incorporato nella pagina stessa.

Tutte queste caratteristiche fanno parte dell'ecosistema “ASP.NET”. La parte importante sono i pacchetti e il supporto. Allo stesso modo di NPM per JavaScript, C # ha anche un ambiente di pacchetti sano con il gestore di pacchetti NuGet.

Quindi, Cos'è il blazer??

blazer non cambia nulla sulla sintassi di queste pagine. Continuerai a utilizzare le pagine Razor e / o MVC. In realtà, questa non è nemmeno una brutta cosa, perché ci sono già numerose interfacce utente e librerie di componenti create per pagine Razor con supporto C #.

Quello che Blazor aggiunge è interattività. Pagine MVC tradizionali / Razor che utilizza ASP.NET è sempre stato goffo e ha avuto problemi a tenere il passo con applicazioni web in tempo reale come React. Le applicazioni web in tempo reale sono così veloci che iniziano anche a prendere il controllo del desktop, con framework come Electron che eseguono app in un contenitore Chromium, senza che gli utenti se ne accorgano.

Quindi, Blazer è stato creato per soddisfare questa esigenza. Funziona in modo molto equivalente a React, dove le azioni modificano lo stato e gli accessori e attivano gli aggiornamenti delle app. Il framework si occuperà di aggiornare il DOM in base ai componenti che devono essere aggiornati. Ciò consente applicazioni in tempo reale in cui la pagina può essere aggiornata o addirittura ridisegnata completamente senza dover aggiornare il browser..

Il vantaggio di Blazor su un framework consolidato come React è il linguaggio. Ti permette di creare applicazioni web con C #, e questo da solo lo rende attraente per molti sviluppatori. Qualunque sia la tua opinione sul dibattito tra scrittura dinamica e scrittura statica, ci sono sicuramente vantaggi per “scrivania” come C #, e il web manca seriamente di alternative a JavaScript.

Se hai un backend che necessita di alte prestazioni, C # inoltre funzionerà molto più velocemente di JavaScript. Anche se JS non è affatto lento ed è migliorato molto negli anni, eseguirà comunque meno di C #, che in realtà è abbastanza vicino alle prestazioni del C nativo ++.

Blazer consente una migliore interoperabilità. Molte applicazioni usano anche C # e il backend. Come esempio, puoi avere un'API ASP.NET che interagisce con la tua interfaccia React. Avrai bisogno di modelli separati per il server e il lato client, così come un codice separato per interagire con loro. Se sono della stessa lingua, consente di condividere facilmente codice e librerie tra client e server. Questo è il motivo per cui NodeJS esiste sul lato server, anche se JavaScript non è il linguaggio desktop ideale, avere applicazioni integrate in un unico linguaggio riduce i tempi di sviluppo.

Il futuro di Blazer

In realtà, ci sono diversi tipi di blazer, dal momento che Microsoft ha recentemente fatto una grande spinta allo sviluppo per modernizzare l'ecosistema ASP.NET. Oggi, ci sono due versioni che sono state rilasciate:

  • Blazer server, che funziona come React Server Side Rendering e fa la maggior parte del rendering sul server.
  • Blazor WebAssembly, che utilizza la magia di WebAssembly per eseguire codice .NET reale in un browser Web client reale.

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

  • Blazer PESO, che è progettato per pubblicare il sito come un'applicazione web progressiva (IL PESO) installabile.
  • Blazer Desktop / Ibrido, che rende possibile impacchettare le applicazioni Blazor in applicazioni desktop ed è semplicemente come Electron ma con prestazioni migliori.
  • Blazer nativo, che sostituisce l'interfaccia utente basata sul web con un'interfaccia nativa della piattaforma. Non è chiaro quanto sia utile, mentre l'interoperabilità con gli strumenti Blazor esistenti, e questa versione è ancora in fase di progettazione.

Nel tuo annuncio Blazer Desktop, Microsoft ha dichiarato che "Blazor è un modello di programmazione delle applicazioni. È molto adattabile e può essere eseguito in vari modi (Secondo la necessità) “.

Microsoft sembra pensare a Blazor come al suo prossimo standard per la creazione di interfacce applicative.. Anche il suo lavoro è importante da evidenziare, perché man mano che le applicazioni diventano sempre più dipendenti dal web, più difficile giustificare la creazione di interfacce separate per web e desktop. Blazor ha un futuro brillante e le applicazioni Web create oggi su Blazor Server e WebAssembly avranno molto spazio per crescere..

Blazor Server si confronta con un webassembly Blazor

Blazer Server utilizza un Connessione SignalR per comunicare tra client e 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.

Blazor Server usa una connessione SignalR per comunicare tra il client e il server.

Blazor WebAssembly è dove diventa davvero fantastico. WebAssembly (WASM) non è proprio una lingua che scrivi, ma un obiettivo del compilatore. In realtà, funziona quasi esattamente come il linguaggio intermedio di Microsoft (MSIL) in cui tutte le C sono compilate #, F # e VB.NET. Salvo che, invece di eseguire con un runtime .NET, viene eseguito utilizzando il runtime WebAssembly nel browser.

Wasm può essere utilizzato come destinazione di compilazione portatile per altre lingue

La cosa grandiosa di WebAssembly è che è un obiettivo del compilatore relativamente facile da raggiungere. Allo stesso modo di C # può essere compilato in MSIL, C # può anche essere compilato in WebAssembly. Bene, tecnicamente, sta compilando MSIL in WebAssembly (visto che è più semplice), ma il punto è lo stesso.

Qualsiasi lingua può essere compilata in WASM, inclusi linguaggi desktop assolutamente nativi come C ++. Questo non è teorico, funziona davvero in pratica. AutoDesk è stato in grado di eseguire il porting di AutoCAD, una base di codice C ++ a partire dal 30 anni, a un'applicazione web basata su WebAssembly, in pochi mesi con relativa facilità. qualcuno anche portato Destino 3.

Blazor WebAssembly prende solo l'intero server, così come il runtime .NET e lo esegue su WASM. Successivamente, invece di parlare con il server tramite SignalR, parla direttamente con il DOM. Ciò elimina l'elaborazione lato server, che può essere l'ideale per alcune applicazioni.

Invece di parlare con il server tramite SignalR, Blazor WebAssembly parla direttamente al DOM.

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

Blazor WASM ha tempi di caricamento iniziali lenti, ma questo può effettivamente essere risolto attraverso l'uso di una modalità ibrida che utilizza il pre-rendering per generare il rendering iniziale sul server, ma esegui tutti gli aggiornamenti successivi tramite WASM. Questo ha un sacco di stranezze ed è ancora in beta, ma se vuoi maggiori informazioni, Maggio guarda queste guide di Jon Hilton.

Si utilizza Blazor Server o Blazor WebAssembly, tocca a voi. Entrambi hanno i loro vantaggi. Blazor Server esegue tutto il codice di elaborazione in un ambiente affidabile e non richiede di disporre di un'API pubblica. Blazer WASM è reattivo e veloce, e può anche essere implementato come sito statico servito solo con NGINX.

Come funziona Blazer con JavaScript??

In ogni caso, ha una completa interoperabilità JavaScript. Blazer può chiamare funzioni JS dal codice gestito:

Attività asincrona privata ConvertArray()
{
    testo = nuovo(attendere JS.InvokeAsync<corda>("convertArray", citazioneArray));
}

E viceversa:

DotNet.invokeMethodAsync('{NOME ASSEMBLEA}', '{.ID METODO NETTO}', {ARGOMENTI});

Nonostante questo, nota che questo, Certo, userò la riflessione, e non è certo la cosa più efficace al mondo.

tecnicamente, puoi usare tutti i pacchetti NPM con Blazor, anche quando si configura e si interagisce con esso dal lato .NET può essere un mal di testa, quindi dovresti preferire un pacchetto NuGet per la maggior parte del tempo.

Puoi usare Blazor sul desktop? (elettrone)?

Puoi usare Blazer sul desktop.

Sorprendentemente, la soluzione è si. Anche se Microsoft prevede di rilasciare Blazor Desktop / Ibrido, che fa lo stesso, Intanto, può usare normale Electron. Questo perché a Electron non interessa veramente quale pagina web sta servendo e solo un'applicazione Blazor può servire.

Potresti pensare di usare un'app Blazor WebAssembly, ma in realtà è più semplice aggiungere Electron a un server ASP.NET Core esistente. WASM ha qualche sovraccarico, quindi questo metodo è più veloce. Quello è ciò che Electron.NET lo fa?, e funziona sorprendentemente bene. Tutto quello che devi fare è installarlo e aggiungere Electron come servizio ASP.NET. Inoltre puoi chiamare funzioni elettroniche native da C #.

Nonostante questo, Microsoft ha piani più grandi per Blazer 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..

“Il desktop Blazor sarà strutturato in modo equivalente a come funziona Electron. Ci sarà un controllo WebView che elabora il contenuto da un server Web Blazor integrato, che può servire sia Blazer che altri contenuti web (JavaScript, CSS, eccetera.) “.

Questa visualizzazione web userebbe Safari, WebKitGTK o WebView2, a seconda del sistema operativo. WebView2 utilizza Chromium sotto il cofano, quindi funzionerebbe in modo molto equivalente a Electron, tranne per essere più efficiente e utilizzare meno memoria.


Qualunque sia l'implementazione, è emozionante vedere un'altra piattaforma in competizione con JavaScript ed Electron per creare applicazioni desktop e web multipiattaforma. Blazer Desktop dovrebbe essere lanciato a novembre 2021 con la prima anteprima .NET 6.

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.