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

 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 drei Architekturmodelle in Blazor:
  • Blazor WebAssembly: Die Ausführung von in C# geschriebenen .NET-Anwendungen direkt im Webbrowser war der ursprüngliche Gedanke. Die DLLs werden in Intermediate Language in den Browser geladen und dort interpretiert im Rahmen der WebAssembly Virtual Machine (Ein Ahead-of-Timer-Compiler zu WebAssembly-Bytecode ist schon lange in Arbeit und soll in .NET 6 erscheinen). Da es keinen direkten Zugang zum Document Object Model (DOM) des Browsers gibt, manipulieren Razor Components und C#-Code das Virtual DOM, welches Microsoft dann via JavaScript mit dem echten DOM synchronisiert.
  • Blazor Server: Hierbei läuft der C#-Code nicht im Browser, sondern im Webserver. Zwischen dem Virtual DOM und dem echten DOM liegt das Netzwerk. Microsoft synchronisiert beide via Blazor Pack-Protokoll über Websockets. Blazor Server funktioniert aber folglich nur bei kontinuierlicher Netzwerkwerkverbindung (Offline-Fähigkeit ist per se nicht möglich) und bietet auch keine gute Skalierbarkeit, denn der Zustand aller Komponenten und das Virtual DOM für alle Benutzer liegt auf dem Webserver. Eigentlich nur als Nebenprodukt von Blazor WebAssembly entstanden, hat Blazor Server dennoch inzwischen einige Anhänger gefunden, denn eine WebAPI-Middle-Tier braucht man hier nicht.
  • Blazor Desktop, eine hybride Anwendung. Eine Blazor-basierte Webanwendung ist einbettbar in eine Desktop-Anwendung oder mobile App. Die Blazor-Webanwendung läuft im gleichen Prozess wie die Rahmen-Anwendungen und teilt sich Zustände mit dieser. Es gibt keinen Webserver und keine WebAssembly-VM: Der .NET-Prozess selbst rendert die Razor Components und integriert einen Webbrowser-Steuerelement für die Darstellung.
In allen drei Fällen erlebt der Benutzer das Verhalten einer Single-Page-Web-Application (SPA).

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

 Moderne Web-Anwendungen mit Blazor (Blazor United und/oder Blazor SSR und/oder Blazor WebAssembly und/oder Blazor Server und/oder Blazor Hybrid)
 .NET Akademie: Blazor-Hands-On: Echte Single-Page-Web-Apps mit .NET und C# entwickeln (3-Tages-Agenda des öffentlichen Seminars)
 ASP.NET Core 8.0/9.0: komplettes Wissen - mit MVC, Razor Pages, Blazor, WebAPIs und gRPC
 Umstieg auf ASP.NET Core 8.0/9.0-Webanwendungen in .NET 6.0/7.0/8.0 (Umstellung/Migration von klassischen ASP.NET-Webanwendungen auf ASP.NET Core)
 Umstieg von .NET-Desktop-Entwicklung (WPF/Windows Forms) auf Webentwicklung (ASP.NET/ASP.NET Core + JavaScript/TypeScript mit Webframeworks wie Angular, Vue.js oder React)
 Umstieg auf .NET 8.0/9.0 - Entwicklerworkshop mit allen Anwendungsgebieten (Umstellung/Migration von klassischem .NET Framework zu .NET 6.0/8.0/9.0)
 ASP.NET Core WebAPI 8.0/9.0: REST Services/HTTP Services/Microservices
 .NET und C# für Umsteiger von C++
 .NET-Sicherheit (.NET Security)
 .NET 8.0 - Änderungen und Neuerungen gegenüber .NET 7.0
 ASP.NET Core 8.0 - Änderungen und Neuerungen gegenüber ASP.NET Core 7.0
 Entity Framework Core 8.0/9.0 (EF Core 8.0/9.0): Objekt-Relationales Mapping (ORM) für .NET 8.0/9.0 (komplettes Wissen)
 Neuerungen in .NET Core 3.0/3.1 gegenüber Version 2.x (inkl. ASP.NET Core, Entity Framework Core, WPF und Windows Forms)
 .NET und C# für Umsteiger von Java
 Umstieg auf .NET Multi-Platform App UI (MAUI) (Umstellung/Migration von Xamarin Forms-Apps auf .NET MAUI)
 .NET-Entwickler-Update 2023
 ASP.NET Core 9.0 - Änderungen und Neuerungen gegenüber ASP.NET Core 8.0
 Umstieg auf .NET 8.0/9.0 - Entwicklerworkshop (Umstellung/Migration von klassischem .NET Framework zu .NET 6.0/8.0/9.0)
 .NET-Performance (Leistungsprobleme/Leistungsengpässe)
 .NET 5.0 - Änderungen und Neuerungen gegenüber .NET Core 3.x
 .NET für Einsteiger
 .NET Akademie: Datenbankprogrammierung mit Entity Framework Core (3-Tages-Agenda des öffentlichen Seminars)
 .NET 9.0 - Änderungen und Neuerungen gegenüber .NET 8.0
 .NET-Überblick für .NET-Einsteiger und .NET-Entscheider (wahlweise für das klassische .NET Framework und/oder das moderne .NET)
 Lokalisierung/Globalisierung in .NET (System.Globalization)
 ASP.NET Webforms-Crashkurs (3 Tage)
 .NET-Entwickler-Update 2024
 .NET 6.0 - Änderungen und Neuerungen gegenüber .NET 5.0
 .NET 7.0 - Änderungen und Neuerungen gegenüber .NET 6.0
 Anfrage für eine individuelle Schulung zum Thema ASP.NET Core Blazor Blazor  Gesamter Schulungsthemenkatalog