.NET 5.0 biegt auf die Zielgerade ein

Im ersten Release Candidate bietet Microsoft neue Funktionen für Blazor und Entity Framework Core.

In Pocket speichern vorlesen Druckansicht 16 Kommentare lesen
.NET 5.0 biegt auf die Zielgerade ein

(Bild: ArliftAtoz2205/Shutterstock.com)

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

Auch wenn Microsoft die achte Vorschauversion im August 2020 schon als "Feature Complete" tituliert hatte, findet man in der nun erschienenen ersten Release-Candidate-Version viele neue Funktion für das Webframework ASP.NET Core Blazor und den OR-Mapper Entity Framework Core. Die RC1-Version gibt es mit Go-Live-Lizenz, das heißt, der Einsatz in produktiver Software ist offiziell von Microsoft erlaubt.

.NET – Reise hin zum finalen Release

Blazor bietet nun eine Komponente <Virtualize>, die aus einer Objektmenge nur die sichtbaren Elemente rendert. Beim Rendering bei Blazor WebAssembly-basierten Anwendungen können Entwickler nun grundsätzlich 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 dazugehörigen Blogeintrag).

JavaScript-Code, der sich bisher nur global einbinden ließ, kann nun in Module isoliert werden. Das Hochladen von Dateien erlaubt die neue Komponente <InputFile>. Ebenso unterstützt Blazor nun das Browser-Ereignis ontoggle für das Tag <details>.

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

Der ORM-Mapper bekommt im ersten Release Candidate nochmals einen großen Schub. Besonders hervorzuheben ist dabei die Abstraktion von N:M-Zwischentabellen. Bisher mussten Entwickler N:M-Beziehungen im Objektmodell wie im Datenbankmodell als zwei 1:N-Beziehungen modellieren. Nun kehrt die aus dem klassisches Entity Framework bekannte Abstraktion zurück, dass zwei Objekte direkt eine Many-to-Many-Beziehung besitzen dürfen und der OR-Mapper das transparent auf eine Zwischentabelle abbildet. Das erleichtert insbesondere die Migration bestehender Anwendungen von Entity Framework 6.x.

Eine .NET-Klasse kann jetzt durch Indexer Properties Basis für mehrere Entitätstypen sein. Solche Shared Type Entities erlauben zur Laufzeit der Anwendung Tabellen aus der Datenbank abzubilden, die es zur Entwicklungszeit noch nicht gab. Die vorher schon mögliche Abbildung von Typen auf beliebige SQL-Befehle (Defining Queries) ist mit ToSqlQuery()mächtiger geworden.

Neu ist auch, dass sich Tabellen mit ExcludeFromMigrations() aus den Schemamigrationen ausschließen lassen. Schemamigrationen führt der OR-Mapper nun in Transaktionen aus. Per Kommandozeilenbefehl können sich Entwickler ausstehende Migrationen ansehen.

Ebenso hat Microsoft noch Ereignisse ergänzt, die beim Speichern ausgelöst werden: SavingChanges(), SavedChanges() und SaveChangesFailed(). Einfluss auf den Speichervorgang können Entwickler in einem SaveChangesInterceptor nehmen.

Die maximale Größe der in einem Batch zur Datenbank gesendeten Befehle hat Microsoft auf 42 gesetzt. Diese Zahl ist nicht willkürlich, sondern ist tatsächlich das gemessene Optimum. Zur Diagnose können Betreiber einer Anwendung nun Event Counter des OR-Mappers abrufen, und zwar mit dotnet counters monitor Microsoft.EntityFrameworkCore.

Der offizielle Blogeintrag zu .NET 5.0 RC1 beschäftigt sich mit Neuerungen in C# 9.0 und Verbesserungen im JSON-Serializer System.Text.Json. Ein weiterer Blog-Beitrag geht auf die Änderungen im Entity Framework Core ein.

Die endgültige Version von .NET 5.0 soll am 10. November 2020 im Rahmen der virtuellen .NET Conf erscheinen. heise Developer, iX und dpunkt.verlag werden darüber hinaus gemeinsam mit www.IT-Visions.de am 3. Dezember eine Online-Konferenz zu den Neuerungen von .NET 5.0 ausrichten. Die dazugehörige Website wird in Kürze online gehen.

(ane)