Blazor gegen Rasiermesser

asp.net-core blazor c# razor

Frage

Mit der Erfindung von Blazor frage ich mich, ob es signifikante Effizienzen (sowohl bei der Erstellung von Code als auch bei der eigentlichen Kompilierung / Ausführung von Code) zwischen diesen beiden Sprachen gibt?

https://github.com/SteveSanderson/Blazor

Wenn jemand es tatsächlich implementiert hat, haben Sie irgendwelche Leistungstests durchgeführt oder Anekdotische (ja Entschuldigung, Entschuldigung, ich fordere dies) Feedback zum Code-Schreiben-Prozess, im Vergleich zu einfachen alten Razor?

Akzeptierte Antwort

Die Informationen, die ich hier vorstelle, sind größtenteils von Steven Andersons Blogeintrag vom 2. Februar und meinem eigenen Verständnis der Ziele für das Projekt umschrieben:

Blazor soll Ideen aus dem aktuellen .NET Razor-Stack mit moderner SPA-Framework-Architektur kombinieren.

Code-Erstellung

soll flexibel sein und baut auf komponentenbasierten Layouts auf, wie in diesem Beispiel gezeigt:

<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; }
}

Das erstellt eine wiederverwendbare Komponente in HTML-Markup:

<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; }
}

Ausführung

Blazor wird voraussichtlich schnell sein, da webAssembly schnell ist. Es kompiliert zu Bytecode, der direkt vom Wasmloader des Browsers ausgeführt wird. In JavaScript müssen zum Beispiel die .js Dateien zuerst geladen und separate Dateien kombiniert, dann analysiert und in eine Baumstruktur eingebaut werden, die dann von der JavaScript-Engine eines Browsers interpretiert werden kann (zum Beispiel die v8-Engine von Chrome ). .

Einen ausführlichen Vergleich der Ausführung von webAssembly und Javascript finden Sie in diesem Beitrag .

SPA Architektur und Design

Da es bereits gute JavaScript-Frameworks für das Web gibt, hat sich Blazor von den Ideen inspirieren lassen, die bereits in modernen Frameworks wie React, Vue und Angular verwendet wurden.

  • Layouts
  • Routing
  • Abhängigkeitsspritze
  • Faules Laden
  • Komponententest

Beachten Sie, dass, während diese Konzepte für die Server-Seite in Razor existieren, nicht alle auf der Client-Seite existieren. Das Front-End-Routing ist in Razor nicht verfügbar und wurde oft mit einem JavaScript-Framework kombiniert, um dieses Szenario zu füllen.

Ich habe persönlich an Unternehmensanwendungen gearbeitet, die Razor-Seiten zusammen mit AngularJs anbieten. Es kann manchmal unordentlich werden und fühlte sich nie "sauber".

Zusammenfassend

Razor ist eine Lösung für serverbasierte Architektur, die API-Logik und Server-seitiges Templating verarbeiten kann, aber keine Client-seitige Logik außerhalb von Javascript bieten kann.

Blazor ist der nächste Schritt (und hoffentlich Nachfolger), der die gleiche serverseitige Funktionalität wie Razor ermöglicht, aber clientseitige Logik mit C# anstelle von Javascript integriert.

Ich arbeite gerade an einem kleinen Testprojekt mit Blazor, und bisher finde ich es einfach zu benutzen. Aber wie die Warnungen auf dem Blog und der GitHub-Seite sagen, ist es noch nicht einmal produktionsbereit.

3rd-Party-Bearbeitung von 2018-09-26

In der .NET Conf 2018 wurde bekannt gegeben, dass Razor-Komponenten ("serverseitige Blazor") Teil von .NET Core 3.0 sein werden . Dieser Code wurde angezeigt:

<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; }
}



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum