© Creative Design Studio/shutterstock.com, © S&S Media
Zehn Unterschiede zu Blazor Server

Blazor WebAssembly ist endlich erschienen


Blazor WebAssembly ist am 19. Mai 2020 erstmals in einer stabilen Version erschienen. In diesem Beitrag stelle ich kurz zehn Gemeinsamkeiten mit und ausführlich zehn Unterschiede zu dem bereits im September 2019 erschienenen Blazor Server vor.

Blazor WebAssembly und Blazor Server sind sich grundsätzlich sehr ähnlich:

  1. Beide Architekturen basieren auf .NET. Der Webentwickler schreibt C#, HTML, CSS und in einigen Fällen etwas JavaScript.

  2. Nicht auf alle Funktionen eines Webbrowsers kann man in Blazor direkt per C#-Code zugreifen. Derzeit müssen Entwickler selbst für vermeintlich einfache Funktionen auf die Interoperabilität mit JavaScript zurückgreifen, z. B. für das Lesen und Schreiben von Cookies und anderen lokalen Speichertypen des Webbrowsers. Die Interoperabilität funktioniert jeweils in beide Richtungen: C#-Code kann JavaScript und JavaScript wieder C#-Code aufrufen.

  3. Seiten und Seitenteile definiert man in Razor Components. Diese bestehen wahlweise nur aus einem Razor Template (.razor mit C#-Einschüben nach dem @-Zeichen), aus einem Razor Template plus Code-Behind-Datei in C# oder nur aus einer C#-Klasse. Razor Components sind jedoch keine Web Components gemäß W3C-Standard, sondern nur Komponenten innerhalb von Blazor.

  4. Razor Components sind zustandsbehaftet, d. h., die Werte in Klassenmitgliedern (Fields und Properties) bleiben erhalten, solange die Komponente aktiv (sichtbar) ist.

  5. Razor Components feuern Lebenszyklusereignisse (OnInitialized(), OnAfterRender() usw.) und Benutzerereignisse (@onclick, @onkeyup usw.), auf die der Entwickler im C#-Code reagiert.

  6. Die Razor Components manipulieren ein Virtual Document Object Model (DOM), Blazor synchronisiert es mit dem echtem DOM des Browsers.

  7. Die .NET Core Dependency Injection kommt zum Einsatz (z. B. für den NavigationManager zum Abruf und zur Steuerung des Browser-URL).

  8. Eine Kapselung von Razor Components, C#-Code, JavaScript-Code und statischen Inhalten ist in Razor Class Libraries (DLLs) möglich. Es gibt bereits zahlreiche hilfreiche Razor-Class-Library-Pakete aus der Community. Ein Verzeichnis findet man auf GitHub unter „Awesome Blazor“ [1].

  9. Es gibt in beiden Blazor-Varianten noch kein Konzept für zur Laufzeit nachladbare Module (Lazy Loading), was bedeutet, dass alle Razor Components einer Anwendung bereits beim Anwendungsstart geladen werden müssen.

  10. Die Authentifizierung erfolgt über eine Ableitung der Klasse Microsoft.AspNetCore.Components.Authorization.AuthenticationStateProvider. Es gibt ei...

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