Blazor vs Razor

asp.net-core blazor c# razor

Domanda

Con l'invenzione di Blazor, mi chiedo se ci siano significative efficienze (sia nella creazione del codice che nella compilazione / esecuzione effettiva del codice) tra queste due lingue?

https://github.com/SteveSanderson/Blazor

Se qualcuno lo ha effettivamente implementato, hai intrapreso qualche test delle prestazioni, o hai aneddotico (sì mi dispiace, scusa se lo chiedo) un feedback sul processo di scrittura del codice, se confrontato con il semplice vecchio rasoio?

Risposta accettata

Le informazioni che presento qui sotto sono per lo più parafrasate dal blog di Steven Anderson del 2 febbraio e la mia comprensione degli obiettivi del progetto:

Blazor ha lo scopo di combinare le idee dell'attuale stack .NET Razor con la moderna architettura del framework SPA.

Creazione del codice

è pensato per essere flessibile e incoraggia i layout basati su componenti, come mostrato in questo esempio:

<div class="my-styles">
   <h2>@Title</h2>
   @RenderContent(Body)
   <button onclick=@OnOK>OK</button>
</div>

@functions {
    public string Title { get; set; }
    public Content Body { get; set; }
    public Action OnOK { get; set; }
}

che crea un componente riutilizzabile nel markup html:

<div class="my-styles">
   <h2>@Title</h2>
   @RenderContent(Body)
   <button onclick=@OnOK>OK</button>
</div>

@functions {
    public string Title { get; set; }
    public Content Body { get; set; }
    public Action OnOK { get; set; }
}

Esecuzione

Blazor dovrebbe essere veloce, perché webAssembly è veloce. Compilano il bytecode che viene eseguito direttamente dal caricatore di wasm del browser. In javascript, ad esempio, i file .js devono essere caricati per la prima volta e i file separati vengono combinati, quindi analizzati e tokenizzati e integrati in una struttura ad albero, che può quindi essere interpretata dal motore javascript di un browser ( motore v8 di Chrome , ad esempio) .

Per un confronto approfondito di webAssembly e l'esecuzione di JavaScript, vedi questo post .

SPA Architettura e design

Poiché esistono già ottimi framework già costruiti in javascript per il web, Blazor è stato ispirato dalle idee già utilizzate in framework moderni come React, Vue e Angular e presenterà concetti dettagliati nel post come:

  • layout
  • Routing
  • Iniezione di dipendenza
  • Caricamento pigro
  • Test unitario

Si noti che mentre questi concetti esistono per il lato server in Razor, non tutti esistono sul lato client. Il routing front-end non è disponibile in Razor ed è stato spesso combinato con un framework javascript per riempire lo scenario.

Ho lavorato personalmente su applicazioni aziendali che servono pagine Razor insieme a AngularJs. A volte può essere complicato e non si è mai sentito "pulito".

In sintesi

Razor è una soluzione per l'architettura basata su server che può gestire la logica API e il modello sul lato server, ma non può offrire la logica lato client al di fuori di javascript.

Blazor è il prossimo passo (e si spera che succederà) che consentirà la stessa funzionalità lato server di Razor, ma integrerà la logica lato client usando C# invece di javascript.

Sto lavorando a un piccolo progetto di test al momento con Blazor, e fino ad ora lo trovo facile da usare. Ma come affermano le avvertenze sul blog e sulla pagina GitHub, non è nemmeno vicino alla produzione pronta.

Modifica di terze parti dal 2018-09 al 26-26

Nel .NET Conf 2018 è stato annunciato che i componenti di Razor ("lato server Blazor") faranno parte di .NET Core 3.0 . Questo codice è stato mostrato:

<div class="my-styles">
   <h2>@Title</h2>
   @RenderContent(Body)
   <button onclick=@OnOK>OK</button>
</div>

@functions {
    public string Title { get; set; }
    public Content Body { get; set; }
    public Action OnOK { get; set; }
}



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché