Sie sind hier: Wissen
Werbung

Was ist .NET Core 3.0 ?

.NET Core 3.0 ist am 23.9.2019 erschienen als Nachfolger von .NET Core 2.2. .NET Core 3.0 ist gemäß den Support-Richtlinien ein "Current"-Release und ersetzt .NET Core 2.2. Die nächste Version, .NET Core 3.1, wird ein "Long Termin Support"-Release (LTS) sein.

Erstankündigung auf der BUILD-Konferenz 2018 (Mai 2018)

Bisher konnte man mit .NET Core nur Web APIs, Webanwendungen und Konsolenanwendungen sowie Universal Windows Platform Apps erstellen. Entwickler klassischer Desktop-Anwendungen schauten in die Röhre. Microsoft hat auf der BUILD-Konferenz 2018 verkündet, dass Windows Presentation Foundation (WPF) und sogar die "alte Tante" Windows Forms im Rahmen von Version Core 3.0 auf .NET Core portiert werden. Sie laufen dann als Nuget-Pakete, allerdings nur auf Windows. Weder WPF noch Windows Forms werden durch diese Maßnahme plattformunabhängig. Dazu müsste Microsoft nicht nur den .NET-Teil beider Frameworks, sondern auch die Betriebssystemgrundlagentechniken GDI+ bzw. DirectX portieren. Zumindest GDI+ gibt es ja, denn es gibt in Mono ja auch Windows Forms.

Immerhin können mit WPF und Windows Forms auf .NET Core nur auf Windows aber Softwarehersteller, die nicht an Plattformneutralität interessiert sind, ihre bestehenden Windows-Anwendungen auf .NET Core auf Windows (ab Windows 7 bzw. Server 2008 R2 – auf älteren Windows-Versionen läuft .NET Core heute nicht!) betreiben und damit von den Vorteilen, die .NET Core im Bereich der Werkzeuge, der Geschwindigkeit und der Softwareinstallation bietet, profitieren.

Erscheinen auf der .NET Conf 2019 (23.9.2019)

Microsoft hat im Rahmen seiner Online-Veranstaltung ".NET Conf 2019" [https://www.dotnetconf.net] die dritte Hauptversion des modularen .NET Core und die achte Hauptversion seiner Programmiersprache C# freigegeben. Passend dazu ist die Version 16.3 von Visual Studio 2019 erschienen.

Nach einer längeren Preview-Phase mit neun Vorschauversionen zwischen Dezember 2018 und September 2019 können Softwareentwickler nun die Release-Version von .NET Core 3.0 kostenfrei herunterladen [https://dotnet.microsoft.com/download]. Dort enthalten ist der C#-Compiler Version 3.3, der C# 8.0 unterstützt.

Neuerungen der CLR

Auf der Ebene der CLR ist die bisher optionale Tiered Compilation (TC) im Just-In-Time-Compiler nun Standard in .NET Core 3.0. Der Just-In-Time-Compiler legt dabei zunächst den Fokus auf schnelle Übersetzung statt eines optimalem Ergebnisses. Erst später wird bei häufiger verwendeten Programmteilen die Übersetzung in Machinencode nachträglich optimiert.

Bei den Prozessoren neu ist die Unterstützung für ARM64-Prozessoren, allerdings zunächst nur mit Linux-Betriebssystemen. Mit Windows-Nutzer können vorerst keine .NET-Core-Anwendungen schreiben, die auf ARM64-Prozessoren laufen[https://github.com/dotnet/announcements/issues/82].

.NET Core für den Windows-Desktop

Nachdem die ersten beiden Versionen von .NET Core nur Webserver- und Konsolenanwendungen sowie die Windows 10 Universal Apps unterstützt haben, können Entwickler nun mit .NET Core 3.0 erstmals auch klassische Desktop-Anwendungen für der Windows Presentation Foundation (WPF) und Windows Forms erstellen. Allerdings verliert eine .NET Core-Anwendung durch den Einsatz der sogenannten ".NET Core Windows Desktop Runtime" ihre ansonsten weiterhin gegebene Plattformunabhängigkeit.

Einige Funktionen von WPF und Windows Forms stehen unter .NET Core noch nicht zur Verfügung. Dazu gehört die XAML Browser Application (XBAP) und der grafische Designer für Windows Forms sowie damit einhergehende die Designer-Klassen, mit denen Entwickler den Designer in eigene Anwendungen einbauen können. Microsoft arbeitet jedoch an dem Designer und diskutiert in einem YouTube-Video die Herausforderungen einer Migration des vor fast 20 Jahren entstandenen Designer-Codes auf das aktuelle .NET Core [https://www.youtube.com/watch?v=8xaeFyNlPYM]. Für WPF ist der auf .NET Core angepasste Designer in Visual Studio 2019 Version 16.3 enthalten.

Für Windows Forms gibt es in .NET Core 3.0 neue Funktionen zur Unterstützung hochauflösender Anzeigegeräte, die es im klassischen .NET Framework nicht gab (siehe Application.SetHighDpiMode() siehe [https://docs.microsoft.com/de-de/dotnet/api/system.windows.forms.application.sethighdpimode?view=netcore-3.0#SystemWindows_Forms_Application_SetHighDpiMode_System_Windows_Forms_HighDpiMode])

Entity Framework auf .NET Core

In Hinblick auf die Migration bestehender .NET Framework-Anwendungen auf .NET Core hat Microsoft auch die Variante seines Objekt-Relationalen Mappers Entity Framework auf .NET Core umgestellt. Die neue Version 6.3 [https://www.nuget.org/packages/EntityFramework/] bietet keine neuen Features außer der Lauffähigkeit auf .NET Core. Auch hier fehlt noch der grafische Designer.

Entwickler, die dennoch schon jetzt mit Windows Forms und Entity Framework in .NET Core starten wollen, können als Workaround vorerst die zugehörigen Designer in einem klassischen .NET-Projekte verwenden und das Resultat in ein .NET Core-Projekt verlinken.

Microsoft betont, dass man neue Projekte nicht mit Entity Framework, sondern nur mit Entity Framework Core [https://www.nuget.org/packages/Microsoft.EntityFrameworkCore] starten sollte. In der Version 3.0 hat Microsoft die Übersetzung von LINQ zu SQL komplett überarbeitet, sodass nun auch zum Beispiel auch Union-Operationen, Subqueries und komplexere Group By-Anweisungen in SQL übersetzt werden können. Die gefährliche automatische Client Evaluation, die hilfsweise alle Daten einer Tabelle zur Verarbeitung ins RAM holte, wurde abgeschafft. Neben einigen kleineren Verbesserungen beim Reverse Engineering gibt es ansonsten wenig Neuerungen in Version 3.0, sondern vorallem zahlreiche Breaking Changes [https://docs.microsoft.com/de-de/ef/core/what-is-new/ef-core-3.0/breaking-changes], die zum teil umfangreiche Änderungen an bestehendem Programmcode erfordern. Microsoft will das Produkt damit auf neue Features vorbereiten, die dann in der Zukunft erscheinen sollen.

Neue Verbreitungswege

Insbesondere in Hinblick auf die wiederentdeckte Desktop-Welt bietet .NET Core neue Deployment-Funktionen. Eine .NET Core-Anwendung erzeugt nun direkt beim Kompilieren eine .EXE-Datei, nicht wie bisher erst beim Publish-Befehl. In einem Single-File Executables kann der Entwickler alle zu einer Anwendung notwendigen DLLs und weitere Dateien zu einer .EXE-Datei zur vereinfachten Weitergabe zusammenfassen. Allerdings findet hier nicht wie ursprünglich angekündigt ein Tree Shaking statt: die EXE ist nur ein gepacktes Archiv aller Dateien, das beim Start nach C:\Users\xy\AppData\Local\Temp\.net\ entpackt wird.

Mit dem optionalen Einsatz des IL Linkers aus Mono kann ein .NET Core-Entwickler immerhin DLLs im Deployment-Paket loswerden, die gar nicht gebraucht werden. Mit dem Feature "ReadyToRun Images" (R2R) kann er parallel zu dem Intermediate Language Code auch den zugehörigen Maschinencode in das Kompilat bringen. Die Anwendungsdateien werden dadurch größer, starten aber schneller. Ein vollständiger Ahead-of-Time-Compiler mit Tree Shaking soll dann im .NET Core-Nachfolger mit Namen .NET 5.0 [https://www.heise.de/developer/meldung/Build-2019-Microsoft-fuehrt-Mono-und-NET-Core-zusammen-zu-NET-5-0-4414166.html im November 2020 erscheinen.

Als weitere Deployment-Option können .NET Core-Entwickler nun auch das neuere MSIX-Installationspaketformat verwendet, indem Sie in Visual Studio 2019 ab Version 16.3 ein Windows Application Packaging Project für eine .NET-Core-Desktop oder Konsolenanwendung erstellen.

Für die die Funktion " Major-version Roll Forward" kann ein Entwickler oder ein Betreiber eine Anwendung nun steuern, dass eine ältere .NET-Core-Anwendung mit der neusten .NET Core-Laufzeitumgebung starten soll.

Für den Entwickler bietet das .NET Core Software Development Kit (SDK) nun auch lokale Werkzeuge an, die nur für ein Verzeichnis auf der Festplatte und die Unterordner gelten. Dies hat Microsoft aus dem Node Package Manager abgeschaut.

Server Side Blazor

Für Webentwickler gibt es in ASP.NET Core 3.0 eine erste Version des ersehnten "ASP.NET Blazor" [http://www.dotnet-lexikon.de/ASPNETBlazor/lex/9293.aspx], mit denen man Single-Page-Web-Applications (SPA) in .NET mit Razor Components schreiben kann. Die in ASP.NET Core 3.0 enthaltene Variante "Server Side Blazor" läuft allerdings nicht auf Basis von Webassembly [http://www.dotnet-lexikon.de/Webassembly/lex/9030.aspx] im Browser, sondern – wie der Name auch ausdrückt – auf dem Webserver. Dass der Benutzer dennoch das Erlebnis einer SPA hat, liegt am Einsatz von ASP.NET Core SignalR [http://www.dotnet-lexikon.de/ASPNETSignalR/lex/6779.aspx], das die Benutzerinterkationen mit dem Webseite per Websocket zum Server sendet und die auf dem Server vorgenommenen Änderungen auf Document Object Model (DOM) zum Browser überträgt. Das dazu notwendige Shadow DOM auf dem Webserver schränkt natürlich die Skalierbarkeit ein und ist nicht Offline-fähig. Das Model eignet sich für Webanwendungen mit kleineren Benutzerzahlen und bietet eine einfache Migrierbarkeit auf das Client-seitigen Blazor, das mit Webassembly im Browser läuft, für das es aber weiterhin keinen verkündeten Erscheinungstermin gibt.

Neue Klassen

.NET Core 3.0 ist die erste .NET-Variante, die den .NET Standard Version 2.1 [https://devblogs.microsoft.com/dotnet/announcing-net-standard-2-1/] implementiert. Zu den neuen Klassen in .NET Core 3.0 gehören neben den Basisklassen für einige Sprachfeatures (z.B. System.Index, System.Range, System.Span<T>, System.Memory<T>, System.ValueTask<T>) auch einige alte Tanten aus den Gründertagen von .NET wie der dynamischen Codegenerierung mit Reflection Emit und die Abstraktion von Datenbankprovidern mit DbProviderFactories.

Außerhalb des .NET Standards beherrscht .NET Core 3.0 nun auch die Interoperabilität mit COM- und WinRT-Komponenten (nur auf Windows), das Laden nur der Metadaten aus Assemblies (MetadataLoadContext) und das Entladen geladener Assemblies (AssemblyLoaderContext, siehe [https://github.com/dotnet/coreclr/blob/master/Documentation/design-docs/unloadability.md]. Auch ein neue Bibliothek für JSON-Serialisierung und -Deserialisierung ist enthalten (System.Text.Json, siehe [https://www.nuget.org/packages/System.Text.Json]) und kommt in ASP.NET Core unter anderem bei Web APIs zum Einsatz, nachdem sich Microsoft mit James Newton-King, dem Autor des bisher verwendeten JSON.NET, nicht auf eine Umgestaltung einigen konnte [https://devblogs.microsoft.com/dotnet/try-the-new-system-text-json-apis]. Die Klasse System.Net.Http.HttpClient unterstützt nun HTTP/2. Unterstützung für TLS 1.3 gibt es auch in .NET Core 3.0, aber bisher nur auf Linux. Serielle Schnittstellen, die bisher nur unter Windows programmierbar waren, sind jetzt auch unter Linux nutzbar [https://docs.microsoft.com/de-de/dotnet/api/system.io.ports.serialport].
In der Mathe-Bibliothek System.Math findet der Entwickler neue Funktionen wie BitIncrement(Double), BitDecrement(Double), MaxMagnitude(Double, Double), MinMagnitude(Double, Double), ILogB(Double), ScaleB(Double, Int32) und CopySign(Double, Double).

Als Ersatz für die in .NET Core auf der Serverseite nicht mehr angebotene Windows Communication Foundation (WCF) bietet Microsoft nun neben den seit der ersten Core-Version vorhandenen WebAPIs auch die Unterstützung für das auf HTTP/2 und Protocol Buffers aufsetzende Google RPC [https://grpc.io] als Client und Server an.

Versionsanzeige-APIs

Eine kleine, aber doch sehr hilfreiche Neuerung in .NET Core 3.0 ist, dass die APIs, die Aufschluss über die laufende .NET-Version (System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription und System.Environment.Version) nun unter .NET Core die korrekte Versionsnummer 3.0 melden. In .NET Core 1.x und 2.x bekam der Aufrufer immer eine Versionsnummer zurück, die mit 4 begann und an das klassische .NET Framework angelehnt war.

Beratung & Support

Schulungen zu diesem Thema

 Anfrage für eine individuelle Schulung zum Thema .NET Core 3.0  Gesamter Schulungsthemenkatalog

Bücher zu diesem Thema

  .NET 9.0 Update: Die Neuerungen in .NET 9.0 gegenüber .NET 8.0
  PowerShell 7 und Windows PowerShell 5 – das Praxishandbuch
  .NET 8.0 Update: Die Neuerungen in .NET 8.0 gegenüber .NET 7.0
  Blazor 8.0: Moderne Webanwendungen und hybride Cross-Platform-Apps mit .NET 8.0, C# 12.0 und Visual Studio 2022
  Moderne Datenzugriffslösungen mit Entity Framework Core 8.0
  C# 12.0 Crashkurs
  Cross-Plattform-Apps mit .NET MAUI entwickeln
  Blazor 7.0: Blazor WebAssembly, Blazor Server und Blazor Hybrid
  C# 11.0 Crashkurs
  Moderne Datenzugriffslösungen mit Entity Framework Core 7.0
  PowerShell 7 und Windows PowerShell 5 – das Praxishandbuch
  App Engineering: SwiftUI, Jetpack Compose, .NET MAUI und Flutter
  Vue.js 3 Crashkurs
  Moderne Datenzugriffslösungen mit Entity Framework Core 6.0
  Blazor 6.0: Blazor WebAssembly, Blazor Server und Blazor Desktop
  C# 10.0 Crashkurs
  Cross-Plattform-Apps mit Xamarin.Forms entwickeln
  Developing Web Components with TypeScript: Native Web Development Using Thin Libraries
  PowerShell – kurz & gut
  C# 9.0 Crashkurs: Die Syntax der Programmiersprache C# für die Softwareentwicklung in .NET 5.0, .NET Core und Xamarin
  ASP.NET Core Blazor 5.0: Blazor WebAssembly und Blazor Server - Moderne Single-Page-Web-Applications
  Windows PowerShell 5 und PowerShell 7: Das Praxisbuch
  Moderne Datenzugriffslösungen mit Entity Framework Core 5.0
  ASP.NET Core Blazor 3.1/3.2: Blazor Server und Blazor Webassembly - Moderne Single-Page-Web-Applications mit .NET, C# und Visual Studio
  ASP.NET Core Blazor 3.0/3.1: Blazor Server und Blazor Webassembly - Moderne Single-Page-Web-Applications mit .NET, C# und Visual Studio
  Moderne Datenzugriffslösungen mit Entity Framework Core 3.1
  C# 8.0 Crashkurs: Die Syntax der Programmiersprache C# für die Softwareentwicklung in .NET Framework, .NET Core und Xamarin
  Moderne Datenzugriffslösungen mit Entity Framework Core 3.0
  Windows PowerShell 5.1 und PowerShell Core 6.1 - Das Praxishandbuch
  Moderne Datenzugriffslösungen mit Entity Framework Core 2.1/2.2
  Moderne Webanwendungen für .NET-Entwickler: Server-Anwendungen, Web APIs, SPAs & HTML-Cross-Platform-Anwendungen mit ASP.NET, ASP.NET Core, JavaScript
  C# 7.3 Crashkurs: Die Syntax der Programmiersprache C# für die Softwareentwicklung in .NET Framework, .NET Core und Xamarin
  Modern Data Access with Entity Framework Core: Database Programming Using .NET, .NET Core, UWP, and Xamarin with C#
  Windows PowerShell und PowerShell Core - Der schnelle Einstieg: Skriptbasierte Systemadministration für Windows, Linux und macOS
  Programmierung in Python
  C# 7.2 Crashkurs: Die Syntax der Programmiersprache C# für die Softwareentwicklung in .NET Framework, .NET Core und Xamarin
  Moderne Datenzugriffslösungen mit Entity Framework Core 2.0/2.1
  Effizienter Datenzugriff mit Entity Framework Core: Datenbankprogrammierung mit C# für .NET Framework, .NET Core und Xamarin
  Moderne Datenzugriffslösungen mit Entity Framework Core 2.0
  Windows PowerShell 5 und PowerShell Core 6 - Das Praxishandbuch
  Angular - Das Praxisbuch zu Grundlagen und Best Practices
  Moderne Datenzugriffslösungen mit Entity Framework Core 1.0, 1,1 und 2.0
  Moderne Datenzugriffslösungen mit Entity Framework Core 1.0, 1,1 und 2.0
  Moderne Datenzugriffslösungen mit Entity Framework Core 1.1 und 2.0-Preview2
  Moderne Datenzugriffslösungen mit Entity Framework Core 1.x und 2.0
  Moderne Datenzugriffslösungen mit Entity Framework Core 1.x und 2.0
  Introducing Regular Expressions: JavaScript and TypeScript
  Introducing Web Development
  Introducing Bootstrap 4
  Programming Web Applications with Node, Express and Pug
  Einführung in TypeScript: Grundlagen der Sprache TypeScript 2
  Pug – Die Template-Engine für node.js
  Web-Programmierung mit Node, Express und Pug
  Windows PowerShell 5 – kurz & gut
  Moderne Datenzugriffslösungen mit Entity Framework Core 1.1
  Windows PowerShell 5.0 - Das Praxishandbuch
  PHP 7 und MySQL: Von den Grundlagen bis zur professionellen Programmierung
  Windows Scripting Lernen
  .NET Praxis - Tipps und Tricks für .NET und Visual Studio
  Grundlagen für Web-Entwickler: Protokolle, HTML und CSS
  Bootstrap 3 - Stile und Komponenten
  Bootstrap 4 - Stile und Komponenten
  Einführung in JavaScript: ECMAScript 5
  Einführung in node.js
  express – Middleware für node.js
  JADE – Die Template Engine für node.js
  Reguläre Ausdrücke in JavaScript
  Moderne Datenzugriffslösungen mit Entity Framework 6
  C++ Standardbibliothek
  AngularJS: Moderne Webanwendungen und Single Page Applications mit JavaScript
  Microsoft SharePoint Server 2013 und SharePoint Foundation: Das umfassende Handbuch
  SQL Server 2014 für Professionals: Hochverfügbarkeit, Cloud-Szenarien, Backup/Restore, Monitoring & Performance
  Moderne Webanwendungen mit ASP.NET MVC und JavaScript
  Windows PowerShell 4.0 - Das Praxishandbuch
  JavaScript: Das umfassende Handbuch, inkl. HTML5, JavaScript-Frameworks, jQuery, OOP
  C++11 für Programmierer
  C++ kurz und gut
  Microsoft ASP.NET 4.5 - Entwicklerbuch
  Moderne Webanwendungen mit ASP.NET MVC
  Verteilte Systeme und Services mit .NET 4.5
  Scripting mit Windows PowerShell 3.0 - Der Workshop: Skript-Programmierung mit Windows PowerShell 3.0 vom Einsteiger bis zum Profi
  Windows 8 für Administratoren
  Windows 8.1 - Das Handbuch (27. November 2013)
  Windows Store Apps entwickeln mit C# und XAML - Crashkurs
  .NET 4.5 Update
  Windows Scripting Lernen
  WPF 4.5 und XAML
  Datenbankprogrammierung mit .NET 4.5
  C++11: Der Leitfaden für Programmierer zum neuen Standard
  Verteilte Systeme und Services mit .NET 4.0
  Microsoft ASP.NET 4.0 mit C# 2010 - Entwicklerbuch
  Agile Software Engineering with Visual Studio
  Datenbankprogrammierung mit .NET 4.0. Mit Visual Studio 2010 und SQL Server 2008 R2
  Microsoft SharePoint Server 2010 und SharePoint Foundation 2010
  Microsoft SQL Server 2008 R2 - Das Entwicklerbuch
  Microsoft Viusal C# 2010
  Office 2010 Programmierung mit VSTO und .NET 4.0: Word, Excel und Outlook erweitern und anpassen
  Programmieren mit dem ADO.NET Entity Framework
  .NET 4.0 Crashkurs
  Visual Basic 2010: Grundlagen, ADO.NET, Windows Presentation Foundation
  .NET 4.0 Update
  Windows PowerShell 2.0 - Das Praxishandbuch
  Windows 7 im Unternehmen
  Agile Muster und Methoden
  Ajax
  ASP.NET 4.0
  ASP.NET 4.0 mit Visual C# 2010
  JavaScript
  PHP 5-Migration
  Scripting mit Windows PowerShell 2.0 - Der Einsteiger-Workshop
  SQL Server 2008 R2: Das Programmierhandbuch. Inkl. ADO.NET 3.5, LINQ to Entities und LINQ to SQL
  Visual Basic 2010
  Windows PowerShell 2.0 - Crashkurs
  Windows Server 2008 R2
  Windows Scripting
  Windows Scripting Lernen
  Data Mining mit Microsoft SQL Server
  Windows 7 für Administratoren
  Microsoft ASP.NET 3.5 mit Visual Basic 2008 - Entwicklerbuch
  .NET 3.5
  Essential PowerShell
  .NET 3.5 Crashkurs
  Webanwendungen mit ASP.NET 3.5 und AJAX Crashkurs
 Alle unsere aktuellen Fachbücher  E-Book-Abo für ab 99 Euro im Jahr