Neue Funktionen und Verbesserungen in .Net Framework 4.5

Microsoft .Net Framework ist in den letzten Jahren stark gereift. Es wurden zahlreiche neue Funktionen und Verbesserungen eingeführt, um es zu optimieren und schnell, sicher, stabiler und leistungsfähiger zu machen. In diesem Artikel möchte ich die wesentlichen Verbesserungen in .Net Framework 4.5.x aus der Vogelperspektive betrachten.

Die gefürchteten Out of Memory-Ausnahmen

Dies ist ein gefürchteter Fehler und kann für Sie zum Albtraum werden. Ausnahmen aufgrund von Speichermangel können den Kontrollfluss Ihrer Anwendung beenden, selbst wenn genügend physischer Speicher installiert ist. Machst du Witze? Auf keinen Fall! Lassen Sie mich erklären, warum dies auftreten kann und wie dieses Problem in .Net Framework 4.5 behoben wurde.

Von der verwalteten Umgebung erstellte Objekte werden im Heap gespeichert. Im Laufe der Zeit kann der Heap aufgrund der Erstellung und Entfernung von Objekten fragmentiert werden. Fragmentierung bezieht sich auf verstreute Speicherlöcher (freier Speicher). In einem solchen Fall treten häufig Ausnahmen wegen zu wenig Arbeitsspeicher auf, wenn Ihre Anwendung viel Arbeitsspeicher verwendet und die Laufzeit nicht in der Lage ist, bei Bedarf Speicherplatz zuzuweisen, selbst wenn möglicherweise Speicherplatz verfügbar ist.

Klingt komisch? Nun, die Summe der Speicherlöcher mag für diese Anforderung ausreichen, aber da diese Speicherlöcher verstreut sind, kann die Laufzeit sie nicht verwenden.

Komprimierung des Großobjekthaufens bei Bedarf

Die On-Demand-Heap-Komprimierung für große Objekte wurde neu eingeführt, um den Heap zu komprimieren und die Heap-Fragmentierung zu beseitigen. Verdichtung bedeutet, alle diese verstreuten Speicherlöcher zu einem Block zusammenzufassen. Diese Funktion ist (nur bei Bedarf) in .Net Framework 4.5.1 verfügbar, um die Ausnahmeprobleme bei Speichermangel zu verringern. Um diese Funktion zu aktivieren, müssen Sie die LargeObjectHeapCompactionMode-Eigenschaft festlegen.

Diese Eigenschaft kann übrigens einen von zwei Werten haben: Default und CompactOnce. Ersteres, wenn gesetzt, würde die Komprimierung eines großen Objekthaufens während eines GC-Zyklus ignorieren. Wenn Sie Letzteres verwenden, wird der große Objekthaufen im nächsten Zyklus komprimiert.

Unterstützung für ADO.Net Connection Resiliency

Sie müssen keinen Code mehr schreiben, um die Ausfallsicherheit der Verbindung zu implementieren und inaktive oder unterbrochene Verbindungen herzustellen. .Net Framework 4.5.1 verfügt über diese integrierte Funktion, um unterbrochene Verbindungen zur Datenbank wiederherzustellen.

Verbesserte Startzeit: Profiloptimierung

Die Profiloptimierung ist eine in .Net Framework 4.5 eingeführte Funktion, die die Startzeit der Anwendung minimiert. Wie funktioniert das? Ein Profil ist eine Datei, die die Methoden enthält, die die Anwendung zum Zeitpunkt des Starts benötigen würde. Wenn die Anwendung gestartet wird, wird der Just in Time Compiler (JIT) in einem Hintergrundthread und auf mehreren Prozessoren ausgeführt, um nativen Code aus dem IL-Code zu generieren.

Verbesserungen der Speicherbereinigung: Server GC eingeführt

Die verwaltete Umgebung von .Net verwendet die Garbage Collection, um nicht verwendete oder nicht referenzierte Objekte zu bereinigen - Objekte, die nicht mehr benötigt werden. In früheren Versionen von .Net Framework hat der GC die Anwendungsthreads angehalten, als er mit der Bereinigung des Speichers beschäftigt war. Dies war ein großer Leistungsengpass, da Ihre Anwendung warten musste, bis der GC seine Arbeit beendet hatte.

Mit .Net Framework 4.5 ist dies kein Problem mehr. Server-GC wurde neu eingeführt, um das Bereinigen von Objekten der zweiten Generation mithilfe eines Hintergrundthreads zu erleichtern und somit die Belastung des Haupt-GC-Threads zu minimieren, da die Anwendungsthreads viel seltener angehalten werden. Mit .Net Framework 4.5 wird die Hintergrund-Garbage Collection sowohl im Server- als auch im Workstation-GC unterstützt. Die gleichzeitige Speicherbereinigung wird jetzt ebenfalls unterstützt. Ein dedizierter Thread führt bei Bedarf die Speicherbereinigung durch.

Bemerkenswerte Verbesserungen in .Net Framework 4.5.2

Microsoft hat kürzlich .Net Framework 4.5.2 veröffentlicht. Die Veröffentlichung wurde von Microsoft im .Net Framework-Blog angekündigt. Hier ist der Link: //blogs.msdn.com/b/dotnet/archive/2014/05/05/announcing-the-net-framework-4-5-2-release.aspx

Neben Verbesserungen bei der Profilerstellung und beim Debuggen gibt es in .NET Framework 4.5.2 bemerkenswerte Verbesserungen bei ASP.Net. Sie können jetzt die HostingEnvironment.QueueBackgroundWorkItem-Methoden verwenden, um kleine Hintergrundaufgaben asynchron zu planen. Zum Überprüfen und Ändern von Antwortheadern und Antwortcodes können Sie die Methoden HttpResponse.AddOnSendingHeaders und HttpResponseBase.AddOnSendingHeaders verwenden. Weitere Informationen finden Sie in diesem MSDN-Artikel: //msdn.microsoft.com/en-us/library/ms171868%28v=vs.110%29.aspx

Was kommt als nächstes?

Microsoft hat im vergangenen November eine Vorschau-Version von .Net Framework 4.6 veröffentlicht. Sie können eine Kopie von .Net Framework 4.6 hier herunterladen: //www.microsoft.com/en-us/download/details.aspx?id=44928

Der Software-Riese kündigte außerdem an, die Unterstützung für .Net Framework-Versionen 4.x bis 4.5.1 nach Januar 2016 zu widerrufen. Weitere Informationen hierzu finden Sie hier: //blogs.msdn.com/b/dotnet/archive/2014/08 /07/moving-to-the-net-framework-4-5-2.aspx