ASP.NET Core Blazor 5.0 (Blazor 5.0)
Eintrag zuletzt aktualisiert am: 15.11.2020
Blazor 5.0 ist im Rahmen von
.NET 5.0 am 10.11.2020 als Nachfolger von
Blazor Server 3.1 und
Blazor WebAssembly 3.2 erschienen. Erstmals sind
Blazor WebAssembly und
Blazor Server, die bisher immer getrennt veröffentlicht wurden, zusammen erschienen und tragen die gleiche Versionsnummer.
Ab
.NET 5.0 werden
Blazor WebAssembly und
Blazor Server jeweils zusammen mit einer Veröffentlichung einer neuen .NET-Version erscheinen und dann beide jeweils die entsprechende .NET-Versionsnummer tragen. 2021 wird dann Blazor 6.0 in
.NET 6.0 folgen. Danach kommen weitere Hauptversionen einmal pro Jahr (angekündigt jeweils im November des Jahres). Innerhalb des Jahres kann es Unterversionen geben.
Hinweis: Für Blazor 5.0 brauchen Sie
Visual Studio Version 2019 / 16.8 oder höher.
Blazor WebAssembly-basierte Anwendungen melden sich in
.NET 5.0 (seit Preview 7) nun nicht mehr mit
Mono 6.13.0 (3.2-wasm/1a6e64a9381), sondern mit "
.NET 5.0.0", wenn man
System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription abfragt. Dies liegt daran, dass
Blazor WebAssembly nun die Klassenbibliotheken von
.NET 5.0 verwendet. Die Runtime ist aber immer noch
Mono, was man beim Kompilieren sieht: " mono
wasm_runtimeready".
Hinweis: Die Angleichung der Klassenbibliotheken bedeutet aber nicht, dass nun alle .NET-Klassen in
Blazor WebAssembly funktionieren: Weiterhin wirken die Einschränkungen der Browser-Sandbox und der WebAssembly-VM. So sind zum Beispiel
Dateisystemzugriffe, Multi-
Threading, direkte
Datenbankzugriffe und andere
Netzwerkprotokolle als HTTP/HTTPS weiterhin nicht erlaubt.
Zur Leistungssteigerung von
Blazor WebAssembly hat Microsoft das
Komponentenrendering, die
JSON-
Serialisierung und die Interoperabilität mit
JavaScript in Preview 7 beschleunigt. Neue Funktionen gibt es erst seit
.NET 5.0 Preview 8.
Wichtigste Neuerungen für
Blazor WebAssembly 5.0 ist die in der ersten (hatte die Versionsnummer 3.2) schmerzlich Möglichkeit, Anwendungsteile nachzuladen.
Lazy Loading von
DLLs aus referenzierten Projekten ist nun möglich. Beim Rendering in
Blazor WebAssembly-basierten Anwendungen kann der Entwickler nun wählen, ob eine statische
HTML-Seite vorab erzeugt werden soll. Microsoft hat die Ausführungsgeschwindigkeit von
Blazor WebAssembly insgesamt deutlich verbessert (vgl. Leistungsmessungen im Blogeintrag [
https://devblogs.microsoft.com/aspnet/asp-net-core-updates-in-net-5-release-candidate-1/]).
Alle weiteren Verbesserungen betreffen auch
Blazor Server. So kann der Entwickler
JavaScript-Code, der bisher nur global eingebunden werden konnte, nun bei Bedarf nachladen.
Razor Components können jeweils eine eigene
CSS-Datei besitzen, die nur für die jeweilige
Komponente gilt.
Für beide Blazor-Varianten gibt neue
Steuerelemente: <InputRadio> und <InputRadioGroup> sowie <InputFile> zum Dateiupload. Auch kann man nun den Fokus auf ein
HTML-Element über ElementRef.FocusAsync() setzen; bisher brauchte man dazu
JavaScript. Mit dem Zusatzpaket Microsoft.AspNetCore.Components.Web.Extensions kann man auch die Inhalte des <head>-Tags (z.B. Title, Link und Meta) beeinflussen. Die Schnittstelle IAsyncDisposable wird unterstützt. Neu ist auch die Schnittstelle
IComponentActivator. Das Paket Microsoft.AspNetCore.ProtectedBrowser
Storage, das es schon seit August 2019 als "experimentelles" Paket gibt, soll offiziell einsatzreif werden (aber nur für
Blazor Server).
Blazor 5.0 bietet seit "Release Candidate 1" eine
Komponente <Virtualize>, die aus einer
Objektmenge nur die sichtbaren Elemente rendert. Ebenso unterstützt Blazor nun das Browser-Ereignis ontoggle für das
HTML-Tag <details>.
Blazor WebAssembly 5.0 und
Blazor Server 5.0 unterstützen Hot Reloading (Automatisches Neukompilieren und Reload im Browser bei Änderungen) per Kommandozeilenbefehl dotnet watch run.
Weitere Funktionen, die für Blazor 5.0 ursprünglich geplant waren (z.B.
AOT-Kompilierung,
SVG-Unterstützung, Pflichtparameter in
Komponenten), wurden leider gestrichen. Die
AOT-Kompilierung soll in Blazor 6.0 kommen: "For .NET 6, we expect to ship support for ahead-of-time (AoT) compilation to WebAssembly, which should further improve performance." [
https://devblogs.microsoft.com/aspnet/asp-net-core-updates-in-net-5-release-candidate-1].