.NET Core 2.1: Microsoft kündigt neue Funktionen an

Die Entwicklungsteams von .NET Core, ASP.NET Core und Entity Framework Core haben für die kommende Version 2.1 zahlreiche Verbesserungen angekündigt. Insbesondere im OR-Mapper schließt Microsoft einige der gravierenden Lücken.

In Pocket speichern vorlesen Druckansicht 7 Kommentare lesen
.NET Core 2.1: Microsoft kündigt neue Funktionen an
Lesezeit: 6 Min.
Von
  • Dr. Holger Schwichtenberg
Inhaltsverzeichnis

Mit drei gleichzeitig erschienenen Blogeinträgen (zu .NET Core 2.1, ASP.NET Core 2.1 und Entity Framework Core 2.1) sowie einem Video auf Channel 9 kündigt Microsoft nun konkrete Roadmaps für die Versionen 2.1 seiner Core-Produkte an, die aktuell auf GitHub entwickelt werden. Ursprünglich sollten sie noch im ersten Quartal 2018 erscheinen. Nun sieht der revidierte Zeitplan vor, dass es im Februar eine erste Vorschauversion gibt, im März eine zweite, danach im April ein erster Release Candidate und die "RTM"-Version im Sommer 2018 erreicht werden soll. Gemäß dem Prinzip des SemanticVersioning wird es keine Breaking Changes gegenüber Version 2.0 geben.

Am deutlichsten profitiert Entity Framework Core. Gruppierungen werden in Version 2.1 nun tatsächlich zur Datenbank gesendet und nicht mehr im RAM ausgeführt, was bisher eine gravierende Lücke in Microsofts OR-Mapper war. Auch das von vielen 2-Tier-Anwendungsentwicklern vermisste Lazy Loading (automatisches Nachladen verbundener Datensätze), das es im Vorgänger ADO.NET Entity Framework gab, soll in Version 2.1 zumindest rudimentär durch APIs unterstützt werden. Den gleichen Automatismus wie im Vorgänger wird es dann aber erst in einer späteren Version geben.

Unterstützung für Lazy Loading durch Ergänzungen in den Navigationseigenschaften einer Entitätsklasse in Entity Framework Core 2.1

Auch mit den neuen "Query Types" beseitigt Microsoft einige Einschränkungen. Bisher war es nur umständlich möglich, Datenbank-Views, Tabellen ohne Primärschlüssel und Ergebnisse von SQL-Befehlen, Stored Procedures und Table Value Functions zu mappen, deren Aufbau nicht einem Entitätstyp entsprachen. Zukünftig können Entwickler diese Ergebnismengen auch auf Nicht-Entitätstypen abbilden, die keine Primärschlüsseleigenschaft haben können. Die neuen Value Converters erlauben Wertkonvertierung beim Materialisieren und Speichern von Objekten. Auch die bisher fehlende Unterstützung für "ambiente Transactions" mit System.Transactions.TransactionScope baut Microsoft nun in Entity Framework Core ein.

Bei den Datenbank-Providern arbeitet Microsoft sowohl an einem für Oracle-Datenbanken als auch für Azure Cosmos. Der Oracle-Treiber soll allerdings nur Beispielstatus erhalten, als Hilfsarbeit für den von Oracle selbst zu entwickelnden Treiber. Oracle hat bisher für die Veröffentlichung eines offiziellen Treibers noch kein Datum genannt ("ODP.NET support for Microsoft Entity Framework Core and Microsoft ASP.NET Core is not expected in the first release").

Mit ASP.NET Core 2.0 hatte Microsoft als neues Entwicklungsmodell die "Razor Pages" eingeführt als Konkurrenz zu dem bisherigen Model-View-Controller-Vorgehen. Durch die Werkzeuge und die Dokumentation wurde klar, dass Microsoft dieses neue Modell favorisiert. In ASP.NET Core 2.1 beziehen sich daher die meisten neuen Features auf die Razor Pages. Diese sollen sich nun zur Wiederverwendung in mehreren Projekten in DLLs verpacken lassen. Dafür lassen sich die Razor Pages, die bisher zur Laufzeit übersetzt wurden, nun auch zur Entwicklungszeit übersetzen. Als erstes UI-Paket will Microsoft Funktionen zur Authentifizierung und Benutzerverwaltung anbieten, um diese Funktionen leichter in beliebige ASP.NET-Core-Webanwendungen zu integrieren.

Mit "Areas" können Entwickler innerhalb eines Projekts die Seiten organisatorisch trennen. Jede Area kann ihr eigenes "/Shared"-Verzeichnis besitzen. Microsoft vereinfacht die Datenbindung in Razor Pages, indem die Annotation [BindPropertyAttribute] zentral auf eine Klasse anwendbar ist. Mit der Schnittstelle IPageFilter können Entwickler Logik vor und nach dem Razor Page Handler ausführen. Aber auch für MVC-basierte Seiten gibt es Verbesserungen durch einen neuen Tag Helper zur Einbindung von Seitenfragmenten sowie die neue Hilfsklasse WebApplicationTestFixture zum Schreiben von Unit-Tests.

Für ASP.NET Core basierte Web-APIs bietet Microsoft mit der Annotation [ApiController] mehr Automatismen bezüglich Parameterbindung und Validierung. Die neue Klasse ActionResult<T> verbessert die Generierung von Swagger-OpenAPI-Dokumentationen, sodass Swagger-Annotationen in vielen Situationen nicht mehr notwendig sind. Zudem unterstützt Microsoft nun die Übermittlung von Problemdetails nach RFC 7808. Auch die Portierung von WebHooks und SignalR-Frameworks für Push-Nachrichten vom Webserver zum Client will Microsoft zur Version 2.1 von ASP.NET Core fertigstellen.

Mit der neuen HttpClientFactory vereinfacht Microsoft die Behandlung von Time-outs, erneuten Versuchen und Caching. In ASP.NET Core 1.0 hatte sich Microsoft entschieden, den Programmcode nicht mehr wie bisher in ASP.NET im Prozess des Webservers Internet Information Services (IIS), sondern als getrennten Prozess ("Kestrel") auszuführen. Diese Entscheidung revidiert Microsoft in Version 2.1 und steigert damit den Durchsatz nach eigenen Aussagen um das Sechsfache.

Die Projektvorlagen von ASP.NET werden in Zukunft den Standard HTTPS verwenden. Ebenso werden die Projektvorlagen gemäß den EU-Richtlinien zur General Data Protection Regulation (GDPR) den Benutzer nach seiner Zustimmung zur Verwendung von Cookies fragen.

Für die .NET-Core-Laufzeitumgebung verspricht Microsoft eine schnellere Übersetzung von Programmcode mit dem .NET Core SDK. Auch bei der HTTP-Implementierung in der Klasse HttpClient hat Microsoft optimiert. Mit dem neuen generischen Typ Span<T> können Entwickler zukünftig Ausschnitte aus einem Array schneller lesen und bearbeiten. .NET Core 2.1 wird die Portierung einiger Kryptografie-Klassen aus dem klassischen .NET Framework für die digitale Signierung von NuGet-Paketen erhalten.

Beim Kommandozeilenwerkzeug dotnet hat Microsoft bei Node.js und npm abgeschaut. Global installierte Werkzeuge (dotnet tool install -g werkzeugname) können Entwickler dann zukünftig nicht nur über dotnet werkzeugname, sondern auch über werkzeugname direkt aufrufen. Auch das bereits seit September 2017 als Vorschau-Version verfügbare Windows Compatibility Pack for.NET Core, das viele Klassen aus dem alten .NET Framework in die .NET-Core-Welt portiert, soll im Sommer 2018 fertig sein. (ane)