Sie sind hier: Startseite | Wissen
Begriff ASP.NET Core Blazor
Abkürzung Blazor
Eintrag zuletzt aktualisiert am 12.03.2020

 Zur Stichwortliste unseres Lexikons

Was ist ASP.NET Core Blazor?

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

Es gibt zwei Architekturmodelle in Blazor:

1. Das ursprünglich im Februar 2018 gezeigte Blazor ist weiterhin im Preview-Stadium und wird auch kurzfristig nicht erscheinen. Diese Form von Blazor nennt Microsoft zur Abgrenzung inzwischen Blazor Webassembly (zwischenzeitlich: Client Side Blazor). Bei Blazor Webassembly läuft der .NET-Programmcode im Webbrowser auf Basis der Mono-Runtime (in Zukunft .NET 5). Der .NET-Programmcode liegt in MSIL vor, die Mono-Runtime in Webassembly (WASM) interpretiert das MSIL. Eine Ahead-of-Time-Kompilierung von MSIL nach WASM ist geplant, aber noch nicht verfügbar.

2. Seit August 2018 gibt es auch "Server Side Blazor", das inzwischen "Blazor Server" heißt. Diese Variante ist am 23.9.2019 als Teil von ASP.NET Core 3.0 erschienen und wird am 3.12.2019 (geplant) auch als Teil von ASP.NET Core 3.1 in einer aktualisierten Form erscheinen. Eine Blazor Server-Anwendung läuft nicht auf Basis von Webassembly im Browser, sondern – wie der Name auch ausdrückt – auf dem Webserver in einem ASP.NET Core-Prozess auf der .NET Core Runtime. Dass der Benutzer dennoch das Erlebnis einer Single-Page-Web-Application bekommt, liegt am Einsatz von ASP.NET Core SignalR, das die Benutzerinteraktionen mit der Webseite per Websocket zum Server sendet und die auf dem Server vorgenommenen Änderungen auf Document Object Model (DOM) zum Browser überträgt. Das dazu notwendige Virtual DOM auf dem Webserver für jeden angeschlossenen Browser schränkt allerdings die Skalierbarkeit ein und verhindert die Offline-fähig der Anwendung.

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
Blazor Webassembly, alias: Client Side Blazor
Blazor Server, alias: Server Side Blazor

Zeitplan
Erste Vorschauversion war am: 22.3.2018
28.4.2019: Blazor offizielles Projekt (nicht mehr experimentell)
Blazor Server erschienen in .NET Core 3.0 am 23.9.2019, Update in ASP.NET Core 3.1 am 3.12.2019
Blazor WebAssembly wird im Mai 2020 erscheinen.

Blazor Server (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 Virtual-DOM des Browserinhalts für jeden angeschlossenen Webbrowser
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

Blazor WebAssembly (Blazor Client App) vs. Blazor Server (Server 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.

Beratung & Support:

Schulungen zu diesem Thema:

 Anfrage für eine individuelle Schulung zum Thema ASP.NET Core Blazor;Blazor  Gesamter Schulungsthemenkatalog