© deomis/Shutterstock.com
Teil 2: Blazor-Syntax, Zustände, Interoperabilität und Libraries

Blazor unter der Haube


Im ersten Teil des Beitrags wurden die architektonischen Unterschiede zwischen Blazor Server und Blazor WebAssembly geklärt. Nun geht es um die Razor-Syntax, Komponentenzustände, Razor Class Libraries und die Interoperabilität mit JavaScript.

Webanwendungsentwickler nutzen in der .razor-Datei einer Razor Component – sowohl in Blazor Server als auch Blazor WebAssembly – im Wesentlichen die gleiche Razor-Syntax wie bei Views im Model-View-Controller-Modell (MVC) und Razor Pages. Im Detail gibt es aber dennoch einige Unterschiede zwischen den Razor-Anwendungsgebieten, siehe dazu die ausführliche Tabelle 1.

In Razor Components ist die Syntaxprüfung strenger; während in MVC und Razor Pages ein fehlendes schließendes Tag nur zu einer Warnung führt („Element 'xy' requires end tag“), kommt es in Razor Components zu einem Kompilierungsfehler RZ9980 „Unclosed tag 'xy' with no matching end tag“.

Zustandshaftigkeit

Klassische Webanwendungen mit Server-side Rendering sind zustandslos: Ein HTTP-Request geht ein, wird verarbeitet und eine Antwort wird erzeugt. Danach werden alle gesetzten Variablen vernichtet. Konkret in ASP.NET und ASP.NET Core wird bei jedem Aufruf immer wieder eine neue Instanz der Page-Klasse (bei Web Forms), der Controller-Klasse (bei MVC) bzw. des Page Models (bei Razor Pages) erzeugt. Man braucht Techniken wie Cookies, Hidden Fields oder URL-Parameter bzw. darauf aufsetzende Abstraktionen wie Session-Variablen oder Viewstate, um Werte von einem zum nächsten HTTP-Aufruf weiterzugeben.

Nichts davon ist in Blazor Server und Blazor WebAssembly notwendig, denn eine Razor Component lebt solange sie angezeigt wird (auch wenn sich nichts rendert oder ihr Inhalt per CSS unsichtbar gemacht wurde). Dass Cookies, Hidden Fields oder URL-Parameter nicht notwendig sind, zeigt schon das Zählerbeispiel (Counter.razor), das Microsoft in der Standardprojektvorlage mitliefert. Wegen der Zustandshaftigkeit wird der Counter bei jedem Klick erhöht. In klassischen Webanwendungen...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang