Dreieinhalb Monate nach der ersten Release-Version hat Microsoft nun eine erste funktionale Erweiterung fĂŒr seine aus .NET Core, ASP.NET Core und Entity Framework Core bestehende neue .NET-Generation veröffentlicht.
Auf der Entwicklerkonferenz connect(); hat Microsoft .NET Core 1.1 vorgestellt und holt dabei neue Plattformen an Bord: Mit dem Release kommen Linux Mint 18, OpenSUSE 42.1, macOS 10.12 und Windows Server 2016 hinzu. Samsung liefert kĂŒnftig auch .NET Core fĂŒr Tizen.
Die neue Version 1380 bietet zusĂ€tzliche APIs, erlĂ€utert Microsoft. Damit sind aber nicht komplette Bibliotheken gemeint, sondern die Redmonder haben jede neue Klasse und jedes neue Klassenmitglied einzeln gezĂ€hlt. Beim Blick in die Liste der API-Neuerungen finden Entwickler dann auch wenig, was sie typischerweise brauchen. Die meisten ErgĂ€nzungen betreffen interne Funktionen von .NET Core oder dienen der UnterstĂŒtzung fĂŒr die Version 7.0 der Programmiersprache C#. Die .NET Standard Library Ă€ndert den Versionsstand daher auch nur von 1.6 auf 1.6.1. Die von Microsoft unter dem Slogan „One library to rule them all“ groĂ angekĂŒndigte Angleichung an die Programmierschnittstellen der Base Class Library des groĂen .NET Framework 4.6 soll erst im Jahr 2017 im Rahmen der .NET Standard Library 2.0 erfolgen.
Performancesteigerung in ASP.NET Core
Eine Performancesteigerung von Webanwendungen von rund 15 Prozent wollen die Macher durch Verwendung der Profile Guided Optimization (PGO) erreicht haben, die auch beim groĂen .NET Framework zum Einsatz kommt. Durch Aufzeichnung der tatsĂ€chlichen Nutzung des Programmcodes wird dessen Reihenfolge im Kompilat optimiert.
In der dreizehnten Ausgabe des TechEmpower-Webserverframework-Performanztest ist ASP.NET 1.1 bereits berĂŒcksichtigt und belegt dort den zehnten Platz in der „Plain Text“-Auswertung. Allerdings wird dabei ASP.NET Core auf Linux und ohne das MVC-Framework eingesetzt. Mit dem MVC-Framework rutscht ASP.NET Core in der Leistung auf den 29. Platz ab.
NachgerĂŒstete Funktionen
In ASP.NET Core hat Microsoft bisher fehlende Funktionen zum Umlenken von HTTP-Anfragen (URL Rewriting) ergĂ€nzt. Entwickler können nun in der Startup-Klasse mit regulĂ€ren AusdrĂŒcken, der XML-Syntax der Internet Information Services (IIS) oder der Mod_Rewrite-Syntax des Apache-Webservers Umlenkungen definieren. Auch eine Funktion zum Umlenken aller HTTP-Anfragen auf HTTPS ist realisiert.
Das frĂŒhere ASP.NET hatte einen Output Cache, der gerenderte Webseiten fĂŒr eine definierbare Zeit zwischengespeichert hat. In ASP.NET Core 1.1 fĂŒllt diese in der Juli-Version noch bestehende LĂŒcke das Paket Microsoft.AspNetCore.ResponseCaching in Verbindung mit dem Memory Cache (Microsoft.Extensions.Caching.Memory). Das Paket Microsoft.AspNetCore.ResponseCompression ermöglicht eine ZIP-Komprimierung der HTTP-Datenströme. Die Views, die in ASP.NET Core 1.0 immer zur Laufzeit kompiliert wurden, lassen sich nun zur Entwicklungszeit vorkompilieren.
Mehr Auswahl
ASP.NET-Core-Webanwendungen laufen immer in einem eigenstĂ€ndigen Prozess. Als Prozess-Host bietet Microsoft dafĂŒr in Version 1.1 neben Krestrel mit dem WebListener-Server eine Alternative an, die auf Basis des Windows-eigenen HTTP Server API auch Windows-spezifische Verfahren zur Authentifizierung, zum Port Sharing und Caching an Bord hat. Die Verwendung des Pakets Microsoft.AspNetCore.Server.WebListener zerstört jedoch die PlattformunabhĂ€ngigkeit einer ASP.NET-Core-Anwendung.
Mit ASP.NET Core hat Microsoft View Components und Tag Helper zur Wiederverwendung von Markup und Logik eingefĂŒhrt. In Version 1.1 gibt es nun eine Integration beider Konzepte. WĂ€hrend eine View Component bisher immer ĂŒber den Befehl Component.InvokeAsync(„viewcomponentname“) in eine View einzubinden war, erledigt den Job nun eleganter ein Tag Helper (<viewcomponentname>âŠ</viewcomponentname>).
Die Kernfunktionen von ASP.NET Core bilden Entwickler in der Startup-Klasse durch eine Aneinanderreihung von Middleware-Komponenten. Mit der Annotation [MiddlewareFilter]lassen sich nun auch Middleware-Komponenten auf einzelne Controller oder Actions beschrĂ€nken. Die neue Komponente Microsoft.AspNetCore.AzureAppServicesIntegrationspeichert alle von den Logger-Objekten erzeugten Nachrichten in Microsofts Cloud. Mit den Paketen Microsoft.AspNetCore.DataProtection.Redis, Microsoft.AspNetCore.DataProtection.AzureStorage und Microsoft.Extensions.Configuration.AzureKeyVault können Entwickler sensible Informationen wie kryptografische SchlĂŒssel in Redis oder Microsoft Azure nutzen. Im TempData-Objekt gespeicherte Daten lassen sich nun auch per Cookie auf dem Client speichern.
Entity Framework Core 1.1
Auch fĂŒr den Objekt-Relationalen Mapper Entity Framework ist eine erweiterte Version 1.1 erschienen. Hier bringt Microsoft einige Programmierfunktionen aus dem VorgĂ€nger Entity Framework 6.1 zurĂŒck, die in Entity Framework Core 1.0 fehlten. Dazu gehört die Suche nach Objekten im Cache mit Find(), das explizite Nachladen verbundener Objekte mit Load(), das erneute Laden bereits geladener Objekte mit Reload() sowie die einfache Abfrage des alter und neuer Objektinhalte mit GetDatabaseValues() und GetModifiedProperties().
Auch das Mapping auf einfache Fields anstelle von Properties und die Wiederaufnahme abgebrochener Datenbankverbindungen (Connection Resiliency) zum Microsoft SQL Server oder SQL Azure ist wieder möglich. Ganz neu ist die Möglichkeit, Objekte auch auf die speicheroptimierten Tabellen von Microsoft SQL Server 2016 abzubilden. AuĂerdem haben die Macher die API vereinfacht, mit der sich Standardfunktionen von Entity Framework Core durch eigene Implementierungen ersetzen lassen.
Core-Werkzeuge bleiben unfertig
Auch mit der Version 1.1 der Core-Produkte bleiben alle Werkzeuge einschlieĂlich der Visual Studio-Integration weiterhin im Preview-Stadium. Microsoft hatte angekĂŒndigt, von den JSON-basierten Konfigurationsdateien zu MSBuild zurĂŒckzukehren â allerdings mit einem vereinfachtem XML-Format.
FĂŒr das entsprechende Projektformat existiert nun eine erste Alpha-Version in Verbindung mit Visual Studio 2017, Visual Studio Code und dem neuen Visual Studio for Mac. Bestehende project.json-Dateien können Entwickler in .csproj-Dateien konvertieren, mĂŒssen jedoch bedenken, dass es keine Option zur RĂŒckkonvertierung gibt, falls sie spĂ€ter doch mit dem JSON-Format oder Visual Studio 2015 weiterarbeiten möchten.