Blazor WebAssembly (Blazor WASM)
Eintrag zuletzt aktualisiert am: 19.02.2025
Blazor
WebAssembly (Blazor
WASM) ist die Variante von Blazor, die auf Basis von
WebAssembly läuft.
Alias: "
Client Side Blazor"
Alias: "Blazor Client Side Rendering"
Bei Blazor Webassembly läuft der .NET-Programmcode im
Webbrowser auf Basis der
Mono-Runtime.
Zwei Ausführungswege
1. Der .NET-Programmcode liegt im Browser in
MSIL vor, die
Mono-Runtime in Webassembly (
WASM) interpretiert das
MSIL.
2. Ahead-of-Time-Kompilierung von
MSIL nach
WASM zur Entwicklungszeit. Der Browser erhält
WASM-Bytecode.
Herausforderungen von Blazor Webassembly
Blazor Webassembly hat (genau wie
Blazor Server) auch seine Herausforderungen, denn man muss zu Beginn nicht nur die selbstentwickelte Anwendung, sondern auch die .NET-Laufzeitumgebung inklusive
Garbage Collector, ggf. auch noch einen Interpreter von Intermediate Language (IL) zu
WebAssembly Bytecode sowie die Basisklassen in den Browser laden. Trotz Trimming (
Tree Shaking) und aller implementierten Optimierungen: Das dauert zu lang für Gelegenheitsnutzer aus dem öffentlichen Internet, denn diese haben keine Geduld mehrere Sekunden auf die erste Seite einer Webanwendung zu warten. Es gibt zwar auch eine
AOT-Kompilierung, aber die lässt tatsächlich das Deployment noch größer werden, denn der
WebAssembly Bytecode ist weniger mächtig als
Microsoft Intermediate Language, was mehr Befehle erfordert und auch gewisse
Metadaten müssen trotzdem gesendet werden, damit .NET funktionieren kann. Blazor
WebAssembly im
AOT-Modus läuft aber nach dem Start schneller als die Interpretervariante.
Eigenschaften von Blazor WebAssembly
- Hersteller: Microsoft
- Die erste stabile Version von Blazor WASM ist am 19.5.2020 erschienen als Nachtrag zu .NET Core 3.1 erschienen
- Modernem .NET SDK, modernen .NET-Klassenbibliothek und Mono Runtime
- Ausführung per WebAssembly im Browser
- Ausführung in Sandbox des Browsers
- Ist ein echtes, offline-fähiges Single-Page-Web-Application (SPA) Framework
- Anwendung läuft wirklich im Browser, ohne Plugin, ohne Transpilation!
- Open Source [github.com/aspnet/Blazor]
- Programmierung in C# und Razor-Template-Syntax
- Virtual DOM/Spiegel-DOM zwischen WASM<->JavaScript
- Benutzeroberflächenbeschreibung in HTML und CSS (nicht XAML!)
- Kann, aber muss nicht mit ASP.NET Core auf Server eingesetzt werden
- Muss zu Beginn viel in den Browser laden
- Ist weniger performant in der Codeausführung als JavaScript-basierte Webframeworks
Alternativen zu Blazor WebAssembly