.NET Framework 4.5 (.NET 4.5)

Eintrag zuletzt aktualisiert am: 12.03.2020

Das .NET Framework 4.5 ist der Nachfolger von .NET Framework 4.0.
Erste öffentliche Vorstellung: BUILD Windows Konferenz im September 2011, 14.9.2011
Erste Preview-Version: 14.9.2011
Beta 1-Version: Januar 2012
RC-Version: 31.5.2012
RTM-Version: 15.8.2012
Zugehörige Visual Studio-Version: 2012 (Alias Visual Studio 11)

Installation

.NET 4.5 kann im wesentlichen als ein Add-On zu .NET 4.0 verstanden werden. Allerdings nimmt das Setup von .NET 4.5 auch kleinere Änderungen an der CLR 4.0 vor.

Microsoft nennt .NET 4.5 ein "In-Place-Update", d.h.
  • .NET 4.5 installiert sich im gleichen Ordner wie .NET 4.0
  • Wenn .NET 4.0 schon vorhanden ist, wird dies überschrieben
  • Wenn .NET 4.5 deinstalliert wird, wird auch .NET 4.0 deinstalliert
  • Die CLR hat in .NET 4.5 die gleiche Runtime 4.0.30319.*. Lediglich die vierte Stelle (Build-Nummer) ist anders

Runtime 4.0.30319.269 -> .NET 4.0
Runtime 4.0.30319.17626 -> .NET 4.5

Neuerungen in der CLR 4.5

  • Verbesserter Garbage Collector für Multicore-Systeme mit mehr als vier Kernen (der fälschlicherweise "Server Garbage Collector" genannt wird)
  • Automatic Ngen: Geringer worden ist auch die Installationsgröße des .NET Frameworks; Microsoft verzichtet bei der Installation nun darauf, ein Native Image aller Assemblies zu erzeugen. Stattdessen protokolliert die CLR die Benutzung von Managed Code mit und erzeugt dann bei Bedarf ein Native Image in einem Cache.

Neuerungen in den Sprachen C# 5.0 und Visual Basic 11.0

  • Radikale Vereinfachung der asynchronen Programmierung durch neues Schlüsselworte async und await in Visual Basic und C#
  • Iterators für Visual Basic mit Yield
  • Ansicht "Call Hierarchy" in Visual Studio, die in Visual Studio 2010 für C# eingeführt wurde, nun auch für Visual Basic
  • Global Keyword in Namespace Statements (nur VB)
  • Caller Info Attributes (Methoden können über speziell annotierte Parameter Informationen über den Quellcode erhalten: CallerFilePath, CallerLineNumber, CallerMembername) - vgl. _FILE__ und __LINE_ in C++

Neuerungen in der TPL 4.5

  • TPl Dataflow Library
  • Combinators: Task.WhenAll, Task.WhenAny
  • Timer: Task.Delay(TimeSpan), CancellationTokenSource.CancelAfter(TimeSpan)
  • Task Scheduling
  • DenyChildAttach, HideScheduler, LazyCancellation, EnumerablePartionerOptions
  • ThreadLocal<T>.Values
  • Einige neue Methoden in der BCL, ASP.NET, ADO.NET, WCF, XML und WPF sind nun asynchron und liefern Task<T>

Neuerungen im ADO.NET Entity Framework 4.5

Auch beim Datenzugriff schreitet die Entwicklung voran. Das Entity Framework 4.5 kompiliert nun zur Leistungssteigerung nun alle LINQ-Befehl – bisher musste man das selbst machen. Auch das Table per Type (TPT)-Mapping soll schneller laufen. Beim Mapping sind nun auch Enumerationen sowie die Typen Geography und Geometry möglich. Entwickler, die mit dem Code First-Prinzip arbeiten, können nun Datenbankschemata migrieren. Bisher konnte man alle Tabellen löschen und neu befüllen.
Der ORM-Designer erlaubt in Visual Studio 11, mehrere Stored Procedures auf einmal als Funktionen zu importieren. Auch Stored Procedures mit mehreren verschiedenen Resultsets und Table-Valued-Functions sind möglich. Die wohl wichtigste Veränderung im Designer ist die Unterstützung für mehrere verschiedene Diagramme für ein einziges Objektmodell. Bisher war die Arbeit mit großen Modellen eine Qual. Ein Teil dieser neuen Entity Framework-Funktionen ist auch schon als eine Vorabversion für Visual Studio 2010 verfügbar (http://blogs.msdn.com/b/adonet/archive/2011/06/30/announcing-the-microsoft-entity-framework-june-2011-ctp.aspx). Dabei sind auch neue Funktionen für die WCF Data Services enthalten (z.B. die Operatoren All und Any).

Liste:
  • Leistungsverbesserungen bei TPT-Mapping
  • Automatische Kompilierung und Zwischenspeichern von LINQ-Befehlen
  • Unterstützung für Enums
  • DB-Schema-Migration in Code First
  • Unterstützung für geografische Datentypen (Geography und Geometry)
  • Unterstützung für Stored Procedures mit mehreren verschiedenen Resultsets
  • Unterstützung für Table-valued functions
  • Designerverbesserungen

Batch-Import von Stored Procedures
Mehrere Diagramme für ein Modell
The StoreGeneratedPattern for key columns can now be set on an entity Properties window and this value will propagate from your entity model down to the store definition.
Diagram information is now stored in a separate file from the edmx or entity code files.
The Entity Designer surface now supports selection driven highlighting and entity shape coloring.

Neuerungen im ADO.NET

Auch für das klassische ADO.NET tut sich noch was: Neben den schon erwähnten asynchronen Aufrufen gibt es Anpassungen an neue Features von SQL Server "Denali", z.B. Angaben für die neue Failover-Funktion "AlwaysOn" in den Verbindungszeichenfolgen und direkte Nutzung einer .mdf-Datei via "LocalDB". Auch die in SQL Server 2008 eingeführten Sparse Columns (die leeren Spalten optimiert ablegen) unterstützt ADO.NET 4.5 nun. Auch die die schon lange vermisste Übergabe von Kennwörter als SecureString ist enthalten. Der Server Explorer von Visual Studio 11 besitzt nun einen eigenen Knoten "SQL Server", über den man die gleiche Sicht auf und Funktionen für einen Microsoft SQL Server erhält wie im SQL Server Management Studio.

Liste:
  • Unterstützung fürr Sparse Columns
  • Unterstützung für neue Hochverfügbarkeitsfunktionen "AlwaysOn" in SQL Server 2012 im Connection String
  • Unterstützung für neue geografische Datentypen in SQL Server 2012
  • Übergabe von Kennwörter als SecureString
  • Asynchrone Aufrufe

Neuerungen im ADO.NET Data Services 4.5

  • Properties on derived types
  • Operatoren Any/All
  • Odata Library

Neuerungen in Windows Workflow (WF)

Mit .NET 3.0 hatte Microsoft die Windows Workflow Foundation (WF) erstmal ausgeliefert; für .NET 4.0 wurde sie komplett neu geschrieben. Doch immer noch gibt es deutliche Schwächen, die Microsoft nun in .NET 4.5 angeht. Die schmerzlich vermissten Zustandsautomaten hat Microsoft in einem Update für .NET 4.0 schon nachgeliefert (http://www.heise.de/developer/artikel/Updates-fuer-NET-4-0-1323357.html). Eine neue Aktivität mit Namen "NoPersistScope" verhindert, dass die darin enthaltenen Aktivitäten sich persistieren. Endlich enthalten ist nun die Möglichkeit der Versionierung von Workflows, die auch bereits begonnenen Workflows in eine modifizierte Workflow-Definition überführen kann. Im Rahmen eines "Dynamic Update" kann der Entwickler Programmcode schreiben, der die Aktivitäten und Variablen einer bestehenden Workflow-Instanz ändert bzw. neue hinzufügt oder löscht. Ein Workflow-Hostprozess kann aber mehrere Versionen ein und des gleichen Workflows parallel betreiben (Side-by-side Execution).
Ein weiterer Verbesserungsschwerpunkt ist der bislang unhandliche Designer. Er bekommt nun Suchfunktionen, eine bessere Bedienbarkeit per Maus, Mehrfachauswahl und eine hierarchische Ansicht (Outline View). Aktivitäten werden beim Drag&Drop automatisch in eine Sequenz verpackt, wenn es bereits in dem Container eine andere Aktivität gibt. Was in .NET 4.0 stark verwundert war die Tatsache, dass innerhalb der Workflows alle Ausdrücke in Visual Basic-Syntax erfolgen mussten, selbst wenn man ein C#-Projekt angelegt hatte. Diesen misslichen Umstand heilt Microsoft nun auch in Visual Studio 11.

Liste:
  • Zustandsautomaten (wie schon im .NET 4.0 Update)
  • Ausdrücke auch in C# (C# expressions) - vorher gab es diese nur in VB
  • Leistungssteigerung im Designer und zur Laufzeit
  • Deutlich Verbesserte Usability des Designers (Document Outline, Enhanced workflow search capabilities in Visual Studio, including Quick Find and Find in Files, u.a.)
  • Aktivitäten werden beim Drag&Drop automatisch in eine Sequenz verpackt, wenn es bereits in dem Container eine andere Aktivität gibt.
  • Eine neue Aktivität mit Namen "NoPersistScope" verhindert, dass die darin enthaltenen Aktivitäten sich persistieren
  • Storage of the view state information for a workflow in a single element in the XAML file, so you can easily locate and edit the view state information.
  • The new WorkflowIdentity class, which provides a mapping between a persisted workflow instance and ist workflow definition.
  • Versionierung: Im Rahmen eines "Dynamic Update" kann der Entwickler Programmcode schreiben, der die Aktivitäten und Variablen einer bestehenden Workflow Instanz ändert bzw. neue hinzufügt oder löscht.
  • Ein Workflow-Hostprozess kann aber mehrere Versionen ein und des gleichen Workflows parallel betreiben (Side-by-side Execution).
  • Contract-First Workflow Service Development

(Aktivitätengenerierung für bestehenden Dienstvertrag)

Neuerungen in ADO.NET 4.5

"improved support for SQL Server and Windows Azure in ADO.NET"

Neuerungen in ASP.NET

siehe Active Server Pages .NET 4.5

Neuerungen für die WPF 4.5

WPF erhält zwar keine neuen Steuerelemente (wenn man mal von dem Ribbon-Steuerelement absieht, das bisher als Add-On verfügbar ist http://www.microsoft.com/download/en/details.aspx?id=11877), aber zahlreiche Verbesserungen an der Grundinfrastruktur, insbesondere bei der Datenbindung. Dazu gehört Datenbindung an statische Properties, Vereinfachung für das Multi-Threading (indem man eine gebundene Menge in einem getrennten Thread verändern darf, ohne ein Threadproblem zu riskieren) und aus Silverlight 4 wurde die Schnittstelle INotifyDataErrorInfo übernommen, die anders als die alten IDataErrorInfo-Schnittstelle mehrere Fehler auf einmal in einer Liste zurückliefert. Bei der Datenbindung kann man nun über BindingBase.Delay eine Verzögerung angeben, damit bei häufigen Datenänderungen nicht jede Änderung zu einer Aktualisierung der Oberfläche führt. Über neue Mitglieder der Klasse BindingExpression (Target, TargetProperty, ResolvedSource, etc.) kann der Entwickler nun mehr Informationen über die Datenbindung auslesen. Außerdem wurde die Leistung des ItemsControl stark gesteigert, die Integration zwischen WPF und Win32-Benutzeroberflächen verbessert und für das asynchrone Programmieren die Klasse Dispatcher erweitert in Hinblick auf das neue asynchrone Pattern in .NET 4.5.

Verbesserungen bei Datenbinding:
  • Datenbindung an statische Properties mit Ereignissen für Aktualisierung
  • Vereinfachung für das Multi-Threading (indem man eine gebundene Menge in einem getrennten Thread verändern darf, ohne ein Threadproblem zu riskieren)
  • Aus Silverlight 4 wurde die Schnittstelle INotifyDataErrorInfo übernommen, die anders als die alten IDataErrorInfo-Schnittstelle mehrere Fehler auf einmal in einer Liste zurückliefert.
  • Verzögerungszeit: Bei der Datenbindung kann man nun über BindingBase.Delay eine Verzögerung angeben, damit bei häufigen Datenänderungen nicht jede Änderung zu einer Aktualisierung der Oberfläche führt.
  • Über neue Mitglieder der Klasse BindingExpression (Target, TargetProperty, ResolvedSource, etc.) kann der Entwickler nun mehr Informationen über die Datenbindung auslesen.

Sonstiges:
  • Neue Steuerelemente: Nur Ribbon (das bisherher Add-On war)
  • Erhebliche Leistungssteigerung für ItemsControl
  • Bessere Unterstützung für MVVM
  • New features for the VirtualizingPanel and Dispatcher classes.
  • Improved performance when displaying large sets of grouped data, and by accessing collections on non-UI threads.
  • Repositioning of data as the values change (live shaping).
  • Better integration between WPF and Win32 user interface components.
  • Ability to check whether the data context for an item container is disconnected.
  • Improved support for implementing weak event patterns. Also, events can now accept markup extensions.

Neuerungen für die WCF 4.5

Bei WCF 4.5 hat Microsoft nun endlich abgeschafft, dass bei der Erstellung eines Proxy mit "Add Service Reference" oder das Kommandozeilenwerkzeug svcutil.exe umfangreiche Konfigurationsdateien entstehen, in denen alle Werte noch mal explizit auf die Standardwerte gesetzt werden. Mit svcutil.exe kann man noch auch nach dem "Contract First"-Prinzip entwickeln. Dabei gibt man ein WSDL-Dokument vor und erhält daraus die Klassendateien für Dienst- und Datenklasse.

Die Entwicklungsumgebung macht nun die XML-Konfiguration für WCF-Dienste einfacher, denn der XML-Editor macht nicht nur wie bisher Vorschläge für Elementnamen und Attribute, sondern auch Inhalte wie Bindingnamen, Dienstnamen und Vertragsnamen (XML Editor Tooltips). Fehlerhafte Konfigurationen zeigt die Entwicklungsumgebung als Warnungen an. Bisher fielen Typfehler in der WCF-Konfiguration erst beim Start der Anwendung auf. Die codebasierte Konfiguration als Alternative zur XML-Konfiguration ist nun alternativ möglich über die Implementierung einer statischen Methode Configure() innerhalb des Dienstes.

WCF 4.5 bietet darüber hinaus Unterstützung für Websockets, UDP Multicast Transport, asynchrones Streaming, Vermeidung von Puffern gestreamter
Nachrichten im IIS, mehrere Authentifizierungsverfahren für einen einzigen Endpunkte und das Caching der ChannelFactory im WCF-Client. Der Binary Message Encoder bietet nun optionale Komprimierung mit Deflate und GZIP .
Bisher erzeugte WCF mehrere WSDL-Dokumente für WCF-Dienste. Da dies zu Problemen mit Werkzeugen anderer Hersteller führen kann, liefert WCF 4.5 nun mit dem URL-Zusatz “?singleWSDL" ein einziges Dokument.

Liste:
  • Weiter vereinfachte Konfiguration (insbesondere: für throttles/quotas sind die Werte nun höher)
  • Generierte Konfigurationsdateien für Client-Proxies sind schlanker
  • codebasierte Konfiguration als Alternative zur XML-Konfiguration ist nun alternativ möglich über die Impementierung einer statischen Methode Configure() innerhalb des Dienstes
  • Vereinfachte Konfiguration für ASP.NET Compatibility Mode
  • ermeidung von Puffern gestreamter Nachrichten im IIS
  • Mehr asynchrone Funktionen
  • Optionale Komprimierung für Binary Encoder
  • Asynchrones Streaming
  • Optionales ChannelFactory Caching beim WCF-Client
  • New HTTPS protocol mapping to make it easier to expose an endpoint over HTTPS with Internet Information Services (IIS).
  • Updates to the XmlDictionaryReaderQuotas class to reduce the likelihood that you will have to manually configure quotas for XML dictionary readers.
  • Verbessertes Tracing mit ETW/e2e
  • Contract First-Entwicklung: Klassengenerierung aus WSDL
  • WCF 4.5 nun mit dem URL-Zusatz “?singleWSDL" ein einziges Dokument.
  • XML Editor Tooltips für WCF-Konfiguration
  • Validierung der WCF-Konfiguration beim Kompilieren

Neuerungen für MEF 4.5

  • Unterstützung für Generic Types
  • Zu importierenden Klassen müssen nicht mehr annotiert werden ("POCO")
  • Convention-based programming model that enables you to create parts based on naming conventions rather than attributes.
  • Mer Einfluss auf Binden von Imports/Exports
  • Multiple scopes
  • Verbesserte Fehlerdiagnose

Neuerungen für die BCL 4.5 System.IO

Asynchronous File Operations
ZIP-Komprimierung erzeugt kleinere Dateien

Neuerungen für die BCL 4.5 System.Net

Improved internationalization and IPv6 support.
RFC-compliant URI support.
Support for Internationalized Domain Name (IDN) parsing.
Support for Email Address Internationalization (EAI).

Neuerungen für die BCL 4.5 System.Collections

ReadOnlyDictionary

Sonstige Neuerungen für die BCL 4.5

  • Die Auswertung regulärer Ausdrücke kann mit einer Zeitbegrenzung (MatchTimeout) versehen werden.
  • Culture für Aplication Domain
  • Schnelleres

Laden von Ressourcen

Console support for Unicode (UTF-16) encoding.
Support for versioning of cultural string ordering and comparison data.


Ability to customize a reflection context to override default reflection behavior through the CustomReflectionContext class.