Neu in .NET 8.0 [2]: Neue Anwendungsarten

Blazor bekommt in .NET 8.0 einen Auto-Rendering-Modus und Blazor Static-Server-Rendering.

In Pocket speichern vorlesen Druckansicht 4 Kommentare lesen

(Bild: Andrey Suslov/Shutterstock.com)

Lesezeit: 4 Min.
Von
  • Dr. Holger Schwichtenberg
Inhaltsverzeichnis

.NET 8.0 umfasst – genau wie die Vorgängerversion – zahlreiche Anwendungsarten auf Basis eines gemeinsamen Software Development Kit (SDK), einer gemeinsamen Basisklassenbibliothek, den Sprachen C#, F# und Visual Basic .NET sowie dem in (fast) allen Anwendungsarten verwendbaren Objekt-Relationalen Mapper Entity Framework Core (siehe Abbildung 1).

Der Dotnet-Doktor – Holger Schwichtenberg

Dr. Holger Schwichtenberg ist technischer Leiter des Expertennetzwerks www.IT-Visions.de, das mit 53 renommierten Experten zahlreiche mittlere und große Unternehmen durch Beratungen und Schulungen sowie bei der Softwareentwicklung unterstützt. Durch seine Auftritte auf zahlreichen nationalen und internationalen Fachkonferenzen sowie mehr als 90 Fachbücher und mehr als 1500 Fachartikel gehört Holger Schwichtenberg zu den bekanntesten Experten für .NET und Webtechniken in Deutschland.

Im Untergrund wirken weiterhin zwei verschiedene Runtimes, abhängig von Anwendungsart und Betriebssystem: die .NET Core Runtime und die Mono Runtime.

Neu in .NET 8.0 bei den Anwendungsarten sind folgende Varianten von Blazor:

  • Blazor-Auto-Rendering-Modus
  • Blazor Static-Server-Rendering (Blazor SSR)

.NET 8.0 bietet zahlreiche Anwendungsarten auf einer gemeinsamen Basis.

(Bild: Holger Schwichtenberg)

Vor .NET 8.0 hatten Entwicklerinnen und Entwickler für Single-Page-Webanwendungen die Qual der Wahl zwischen Blazor Server und Blazor WebAssembly, die sich aufgrund der Vor- und Nachteile beider Architekturen in einigen Praxisfällen wie die Wahl zwischen Pest und Cholera anfühlte. Behelfen konnte man sich, indem man eine Webanwendung in beiden Architekturen anbot für verschiedene Nutzergruppen oder Standorte.

.NET 8.0 erlaubt nun, beide Architekturen in einer einzigen Webanwendung zu vereinen. Der neue Rendering-Modus "Auto" rendert eine Webanwendung in drei Stufen (siehe Abbildung 2): Zunächst findet ein Pre-Rendering mit Blazor SSR auf dem Webserver statt. Dann erfolgt eine Hydrierung der Seite per JavaScript und Blazor Server mit Interaktivität per Websocket-Verbindung. Nachdem im Hintergrund die umfangreichen Dateien für Blazor WebAssembly nachgeladen wurden, geht die Webanwendung schließlich zum rein lokalen Rendering im Browser über und beendet die Websocket-Verbindung. Es ist möglich, dass Blazor die erste Hydrierung übergeht und direkt von dem Blazor SSR-Pre-Rendering auf Blazor WebAssembly umschaltet, wenn Blazor erkennt, dass Blazor WebAssembly schnell genug (laut dem Developer-Blog bei Microsoft 100 Millisekunden) geladen werden kann. Im Rahmen der Vorschauphase von .NET 8.0 nannte Microsoft diesen Automatismus noch "Blazor United".

Hydrierung beim Blazor-Auto-Rendering-Modus (Abb. 2)

(Bild: Holger Schwichtenberg)

Blazor Static-Server-Rendering (Blazor SSR) ist eine Variante von Blazor, bei der die Razor-Komponenten rein auf dem Webserver rendern; es entsteht im Gegensatz zu den Blazor-Single-Page-Web-Anwendungen bei Blazor SSR eine Multi-Page-Anwendung (siehe Abbildung 3). Blazor SSR lässt sich als bessere Alternative zu ASP.NET Core Model View Controller (MVC) und ASP.NET Razor Pages ansehen, weil es in Blazor SSR ein echtes Komponentenmodell, eine bessere Razor-Syntax und in einigen Situationen eine partielle Seitenaktualisierung (Enhanced Navigation und Streaming) gibt. Für die Enhanced Navigation und Streaming benötigt Blazor SSR die mitgelieferte JavaScript-Bibliothek blazor.web.js. Bei Verzicht auf diese Features läuft Blazor SSR auch ohne JavaScript.

Microsoft nannte dieses Architekturmodell in der Preview-Phase noch "Blazor Server-Side-Rendering" (SSR), hat sich aber zur endgültigen Version entschlossen, SSR für "Static-Server-Rendering" stehen zu lassen – mit dem Ziel, eine klarere Abgrenzung zu Blazor Server zu schaffen. Zu Verwirrungen ist aber auch die neue Wortwahl geeignet, weil einige Webframeworks unter dem Begriff "Static Site Generation" ein Rendering zur Entwicklungszeit anbieten. Blazor SSR rendert aber nicht zur Entwicklungszeit, sondern zur Laufzeit. Static Site Generation plant Microsoft erst für .NET 9.0. Als Vorstufe dazu ist es in .NET 8.0 bereits möglich, Razor-Komponenten in beliebigen Anwendungsarten zu rendern. Somit steht die gleiche Syntax, die in Blazor für Web- und Hybridanwendungen zum Einsatz kommt, nun auch für HTML-Rendering für E-Mails im HTML-Format oder andere HTML-Einsatzgebiete zur Verfügung (siehe neue Klasse Microsoft.AspNetCore.Components.Web.HtmlRenderer).

Blazor-basierte Webanwendungen im Vergleich zu ASP.NET Core MVC und ASP.NET Core Razor Pages (Abb. 3)

(Bild: Holger Schwichtenberg)

Projekte mit Blazor SSR und den Auto-Render-Modus startet man in Visual Studio mit der neuen Projektvorlage "Blazor Web App" (siehe Abbildung 4). An der Kommandozeile verwendet man

dotnet new blazor --interactivity none

und

dotnet new blazor --interactivity auto

Blazor SSR und der Auto-Render-Modus zusammen mit Blazor Server und Blazor WebAssembly in der Projektvorlage "Blazor Web App" (Abb. 4)

(Bild: Screenshot / Holger Schwichtenberg)

(rme)