.NET 5.0 ist erschienen

Seite 2: Viele Verbesserungen im ORM-Mapper

Inhaltsverzeichnis

Die meisten und gravierendsten Verbesserungen in .NET 5.0 haben Entity Framework Core und ASP.NET Core Blazor erhalten.

Entity Framework Core 5.0 beherrscht nun wie sein klassischer Vorgänger die Abstraktion von N:M-Beziehungen und das Table-per-Type-Mapping (TPT), mit dem jede Klasse in Vererbungshierarchie auf eine eigene Datenbanktabelle abbildbar ist. Bisher setzte Microsoft auf explizite Klassen für Zwischentabellen und die Zusammenfassung einer ganzen einer Vererbungshierarchie in einer Tabelle (Table-per-Hierarchy – TPH), was die Migration vom klassischen Entity Framework zu Entity Framework Core erschwerte und die Nutzung bestehender Datenbankschemata nicht unmöglich, aber zuweilen unschön machte.

Darüber hinaus bietet Entity Framework Core über 80 weitere Verbesserungen in den Bereichen Mapping, Abfragen mit LINQ und SQL, Persistierung von Änderungen und den Kommandozeilenwerkzeug. Die wichtigsten Verbesserungen sind in einem Blogeintrag aufgelistet.

Blazor WebAssembly 5.0 bietet nun auch das bisher sehr vermisste Lazy Loading von Komponenten, wodurch man die Startzeit deutlich verringern kann. Beim Rendering in Blazor WebAssembly-basierten Anwendungen können 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).

Alle weiteren Überarbeitungen betreffen auch die Schwestertechnik Blazor Server. So können Entwickler JavaScript-Code, der sich bisher nur global einbinden ließ, nun bei Bedarf nachladen. Razor Components können jeweils eine eigene CSS-Datei besitzen, die nur für die jeweilige Komponente gilt.

Als neue Steuerelemente liefert Microsoft InputRadio und InputRadioGroup sowie InputFile zum Datei-Upload. Den Fokus auf ein Steuerelement sowie die Elemente in <head> des HTML-Dokuments können Entwickler nun auch ohne JavaScript-Einsatz setzen. Ebenso unterstützt Blazor 5.0 nun das Browser-Ereignis ontoggle für das HTML-Tag <details>. Blazor bietet nun eine Komponente <Virtualize>, die aus einer Objektmenge allein die sichtbaren Elemente rendert.

Die seit langem im Preview-Status verweilenden Zusatzdienste ProtectedLocalStorage und ProtectedSessionStorage gehören nun offiziell zum Blazor-Produkt. Weitere Funktionen, die für Blazor 5.0 ursprünglich geplant waren (z. B. AOT-Kompilierung, SVG-Unterstützung, Pflichtparameter in Komponenten), wurden allerdings leider gestrichen.

Ungünstig für einige Blazor-Fans ist die Entscheidung von Microsoft, in Blazor Server sowohl den Internet Explorer (bisher per Polyfill möglich) als auch den klassischen Edge-Browser (vor Version 79) nicht mehr zu unterstützen. Bei Blazor WebAssembly war der Internet Explorer sowieso außen vor, weil es keine WebAssembly-Umgebung anbietet. Hier entfällt aber nun auch der alte Edge.

Auch für klassische ASP.NET-basierte, serverseitige Techniken wie MVC und Razor Pages gibt es Verbesserungen, zum Beispiel Unterstützung für die C# 9.0 Records bei Model Binding und Validation. In Razor Pages können Entwickler jetzt Properties mit der Annotation [CompareAttribute] vergleichen. In Web APIs sind bei der Annotation [FromBody] nun auch optionale Parameter möglich.

In allen Projektenvorlagen für ASP.NET Core WebAPIs bietet Microsoft nun im Standard das Community-Paket Swashbuckle.AspNetCore für die Open API Specification (OAS) der Dienste an (s. Abb. 2). Beim Start eines WebAPI-Projekts im Visual Studio Debugger öffnet sich jetzt automatisch die OAS-Hilfeseite.

OpenAPI-Unterstützung in der WebAPI-Projektvorlage (Abb. 2)

Der integrierte Webserver Kestrel unterstützt nun HTTP/2 Ping Frames. Header, die bisher in UTF-8 erwartet wurden, können jetzt auch andere Encodings verwenden. Die Authentifizierung mit Zertifikaten ist beschleunigt.