ASP.NET Blazor

Eintrag zuletzt aktualisiert am: 10.11.2019


ASP.NET Blazor Ist ein Single-Page-Web-Application (SPA) Framework im Browser von Microsoft

Eigenschaften
Open Source (https://github.com/aspnet/Blazor/)
Verwendet C# und die Template-Syntax von ASP.NET Razor
Benutzeroberflächenbeschreibung in HTML und CSS

Architekturmodelle
Client Side Blazor (alias Blazor Webassembly App)
Server Side Blazor (alias Blazor Server App)

Zeitplan
Preview 1: 22.3.2018
Client Side Blazor seit 28.4.2019 offizielles Projekt (nicht mehr experimentell, aber wird nicht in .NET Core 3.0 erscheinen!)
Server Side Blazor erschienen in .NET Core 3.0 am 23.9.2019

Server Side Blazor / Blazor Server App
Zwischenzeitlicher Name: "Razor Components"
Enthalten in ASP.NET Core 3.0 seit Preview 2
Code läuft auf Server: .NET Core, C#, ASP.NET Core, Razor-Templates
Client: HTML, CSS, etwas JavaScript von Microsoft, optional etwas eigenes
Component = .razor-Datei, optional mit .razor.cs
Component Packages, auch mit Templated Components
Server hat ein Shadow-DOM
Einzelne UI-Updates per ASP.NET SignalR (über Websockets)
"SPA light" (SPA-UI-Erlebnis)
Interaktion mit JS/TS + Zugriff auf Browser-APIs möglich

Client Side Blazor / Blazor Webassembly App
Basiert auf WebAssembly und Mono
Ausführung in Sandbox
Ist ein echtes, offline-fähiges Single-Page-Web-Application (SPA) Framework im Browser von Microsoft
Open Source [github.com/aspnet/Blazor]
Programmierung in C# und Template-Syntax von ASP.NET Razor
Laufen wirklich im Browser, ohne Plugin, ohne Transpilation!
auf Basis WebAssembly und Mono
  • Mono CLR in WebAssembly kompiliert
  • Virtual DOM/Spiegel-DOM zwischen WASM<->JS

Benutzeroberflächenbeschreibung in HTML und CSS (nicht XAML!)
Ausführung in Sandbox
Kann, aber muss nicht mit ASP.NET Core auf Server eingesetzt werden

Server Side Blazor vs. Client Side Blazor
Nachdem Blazor lange Zeit den Status "experimentell" hatte, ist nun in ASP.NET Core 3.0 (ein Teil von .NET Core 3.0) ein Teil des Projekts erschienen: Server Side Blazor. Der Name stellt aber schon klar, dass die Razor-Vorlagen und der übrige Programmcode auf dem Server läuft. Dennoch sieht der Benutzer der Webseite keine Seitenwechsel, sondern eine SPA. Dies erreicht Microsoft mit seiner JavaScript-Bibliothek blazor.server.js, die die Benutzerinteraktion per Websocket (realisiert via ASP.NET Core SignalR) zum Webserver funkt. Der Webserver unterhält eine Kopie des Document Object Models eines jeden angeschlossenen Webbrowser. Der Servercode manipuliert dieses Schatten-DOM und Blazor sendet alle Änderungen am DOM zum Browser, die blazor.server.js dann in die sichtbare Seite einbaut. Eine Server Side Blazor-Anwendung ist folglich weder offline-fähig noch gut skalierbar, da der Webserver entspricht viel Speicher- und Rechenlast hat. Dennoch zeigen erste Praxisprojekte, dass sich diese neue Architektur eignet für Webanwendungen mit kleinerer Benutzerzahl. Zudem besteht die Perspektive einer Umstellung auf Client-Side Blazor. Hier läuft dann der (fast) derselbe .NET-Programmcode auf Basis einer in Webassembly geschriebenen Variante von Mono im Webbrowser und belastet nicht mehr den Webserver. Zudem ist Client-Side Blazor offline-fähig. Von Client-Side Blazor gibt weiterhin eine Preview-Version und noch keinen verkündeten Erscheinungstermin.