.NET Framework 4.6 (NET46)


 Fachbücher zum Thema .NET Framework 4.6 (NET46)

Das .NET Framework 4.6 ist der direkte Nachfolger des aktuellen .NET Frameworks 4.5.2. Microsoft hatte im Rahmen der CTP-Versionen von dem nächsten Visual Studio, das auch die Jahreszahl 2015 tragen wird, noch die Versionsnummer 4.5.3 verwendet.

4.6 drückt aber wesentlich besser die Unterschiede zum Vorgänger aus. Neben der .NET Compiler Platform und RyuJit bietet .NET 4.5 einige kleinere Erweiterungen in der .NET Framework Class Library (FCL), u.a. auch für Windows Forms und WPF. Positiv von vielen Entwicklern wurden die unter dem Namen „The Roadmap for WPF“ [http://blogs.msdn.com/b/dotnet/archive/2014/11/12/the-roadmap-for-wpf.aspx] angekündigten Neuerungen für das in den letzten Jahren eher vernachlässigte WPF aufgenommen. Die WPF-Roadmap enthält auch ein klares Bekenntnis von Microsoft zur Bedeutung des Desktop-UI-Frameworks im Markt sowie die Ankündigung neuer Features für das Debugging und die Leistungsoptimierung von WPF-Anwendungen in Visual Studio 2015.

Erscheinungstermin

erschienen am 20.7.2015

Installation

Versionsnummern

Bei der Versionierung hat Microsoft sich wieder einmal etwas Neues überlegt: Vor .NET 4.5 bekamen die einzelnen DLLs eine Versionsnummer entsprechend der .NET Framework-Version, also z.B. 4.0.x. In .NET 4.5, 4.5.1 und 4.5.2 hat Microsoft aber diese DLL-Versionsnummern nur noch an der dritten Stelle geändert. So hatte .NET 4.5.1 also DLLs mit der Versionsnummer 4.0.30319.18408. Nun, in .NET 4.6, kehrt Microsoft zurück zu dem vernünftigen Weg, dass die DLL-Versionsnummer auch die .NET Framework-Version widerspiegelt: Die DLLs haben in .NET 4.6 die Versionsnummer 4.6.79.0. Allerdings liefert die statische Eigenschaft System.Environment.Version in .NET 4.6 weiterhin die unlogische Versionsnummer 4.0.30319.42000. Auch das Installationsverzeichnis (C:\Windows\Microsoft.NET\Framework64\v4.0.30319) enthält immer noch die Nummer 4.0. Microsoft dokumentiert, dass die Entwickler sich bei der Versionsfeststellung seit .NET 4.5 nur auf den Registry-Schlüssel HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\Release verlassen sollen [https://msdn.microsoft.com/en-us/library/hh925568(v=vs.110).aspx].

Neuerungen in .NET Framework 4.6 gegenüber .NET Framework 4.5.2 im Bereich CLR

RyuJIT: Neuer 64-Bit-Just in Time-Compiler (bisher nicht für 32-Bit-Anwendungen!)
Assembly Loader: IL-Assemblies werden nun entladen aus RAM, wenn eine passende NGEN-Assembly geladen wird
Garbage Collector: NoGCRegion

Neuerungen in .NET Framework 4.6 gegenüber .NET Framework 4.5.2 im Bereich Sprachsyntax

Modulare .NET Compiler Platform "Rosyln" für C# 6.0 (CSharp 6.0) und Visual Basic 2015
Neuerungen in der Sprachsyntax C# 6.0
Neuerungen in der Sprachsyntax Visual Basic 2015 (Visual Basic 14)

Neuerungen in .NET Framework 4.6 gegenüber .NET Framework 4.5.2 im Bereich ASP.NET:

  • HTTP2
  • Async Model Binding
  • Roslyn CodeDOM Compilers
  • Entity Framework 6-Unterstützung in Dynamic Data Framework, Entity Data Source Control + Universal Providers (Add-On seit 28.4.2014)

Neuerungen in .NET Framework 4.6 gegenüber .NET Framework 4.5.2 im Bereich Windows Forms:

  • Verbesserungen für High DPI (bei DomainUpDown, NumericUpDown, DataGridViewComboBoxColumn, DataGridViewColumn und ToolStripSplitButton)

Neuerungen in .NET Framework 4.6 gegenüber .NET Framework 4.5.2 im Bereich WPF:

  • Nicht-rechteckige transparente Kind-Fenster sind möglich ab Windows 8.1
  • Multi-DPI Cursors
  • Verbesserungen für High DPI
  • Verbesserte Touch Events

Neuerungen in .NET Framework 4.6 gegenüber .NET Framework 4.5.2 im Bereich Klassenbibliothek (Auswahl):

  • Neue Klasse System.AppContext
  • Neue Klasse System.Threading.AsyncLocal<T>
  • CultureInfo und Task-Based Asynchronous Pattern (TAP): Neue Tasks bekommen die Kultur des Aufrufers
  • Netzwerk: TCP Port Reuse in Windows 10
  • CodePagesEncodingProvider
  • WCF unterstützt nun SSL-Versionen TLS 1.1 + TLS 1.2 (zusätzlich zu SSL 3.0 + TLS 1.0)
  • ADO.NET 4.6: Unterstützung für Always Encrypted in SQL Server 2016
  • Verschlüsselung: Aktualisierung der RSA-Versclüsselung

Details zur .NET Klassenbibliothek 4.6

Die .NET-Klassenbibliothek bietet eine Reihe von Neuerungen an vielen Stellen. ASP.NET für die Webserverprogrammierung unterstützt asynchrones Model Binding und – in Verbindung mit Windows 10 und Windows Server 2016 – auch die Version 2 von HTTP (RFC 7540 vom Mai 2015). Zudem wurden jetzt einige bisher einzeln verfügbare Aktualisierungen von ASP.NET zur Nutzung von Entity Framework Version 6.x in das .NET Framework integriert. Die bei .NET 4.6 mitgelieferte Entity Framework-Version ist aber weiterhin 4.0. Alle seitdem verfügbaren Aktualisierungen (aktuell ist Version 6.1.3) muss der Softwareentwickler separat auf https://www.nuget.org/packages/EntityFramework beziehen. Die Datenzugriffsbasiskomponente ADO.NET unterstützt nun die Ende-zu-Ende-Verschlüsselung von Microsoft SQL Server 2016.

.NET 4.6 kann für ausgehende TCP-Verbindungen das Port-Reuse-Feature von Windows 10 nutzen. Die Windows Communication Foundation (WCF) unterstützt nun zusätzlich zu Secure Socket Layer 3.0 und Transport Layer Security (TLS) 1.0 auch TLS 1.1 und 1.2. in Windows. Auch das RSA-Kryptosystem in .NET 4.6 wurde aktualisiert (siehe http://blogs.msdn.com/b/dotnet/archive/2015/07/20/announcing-net-framework-4-6.aspx).

Hochauflösende Displays bereiten bislang in vielen .NET-Anwendungen Probleme. Microsoft hat dafür in .NET 4.6 sowohl für Windows Forms als auch für die Windows Presentation Foundation (WPF) einige Darstellungsfehler behoben. Die Klasse System.Windows.Input.Cursor unterstützt nun auch Cursor-Dateien mit mehreren Auflösungsvarianten. Auch darüber hinaus bietet die von manchen schon totgesagte WPF neue Funktionen, wie die Unterstützung transparenter nicht-rechteckiger Kind-Fenster (ab Windows 8.1) sowie eine bessere Touch-Unterstützung. Microsoft hat zudem auch bereits weitere Pläne für die Zukunft von WPF verkündet [http://blogs.msdn.com/b/dotnet/archive/2014/11/12/the-roadmap-for-wpf.aspx].

Einige der Neuerungen in der .NET-Klassenbibliothek 4.6 sind Vorbereitungen für die Plattformunabhängigkeit von .NET Core 5.0. So bietet die Klasse System.DateTimeOffset nun Konvertierungsfunktionen zwischen Zeitangaben in Unix und Windows. Da es in .NET Core keine Application Domains mehr gibt, existiert dort auch die Klasse System.AppDomain nicht mehr. Als Ersatz für System.AppDomain.CurrentDomain.BaseDirectory hat Microsoft System.AppContext.BaseDirectory eingeführt und die Klasse System.AppContext nun auch in .NET 4.6 verfügbar gemacht [https://msdn.microsoft.com/en-us/library/system.appcontext(v=vs.110).aspx]. Außerdem kann man in dieser Klasse globale, Assembly- und Thread-übergreifende Einstellungen mit SetSwitch() und TryGetSwitch() ablegen, die jedoch stets nur vom Typ Boolean sein dürfen.

Das .NET Framework 4.6 enthält auch ein paar „Breaking Changes“, die dazu führen können, dass sich bestehende .NET-Anwendungen anders verhalten [https://msdn.microsoft.com/en-us/library/dn833127(v=vs.110).aspx]. So verwenden neue Tasks beim Task-Based Asynchronous Pattern (TAP) nicht mehr wie bisher die Kultureinstellungen der Windows-Systemeinstellungen, sondern die Kultur des Aufrufers [https://msdn.microsoft.com/de-de/library/system.globalization.cultureinfo(v=vs.110).aspx].

Als E-Mail versenden
Bookmarken bei del.icio.us
Bookmarken bei Digg
Reddit
Bookmarken bei Live