Markieren Sie das Kontrollkästchen Englisch, um die englische Version dieses Artikels anzuzeigen. Sie können den englischen Text auch in einem Popup-Fenster einblenden, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Neuigkeiten in .NET Framework

 

Veröffentlicht: Oktober 2016

Dieser Artikel beschreibt wichtige Funktionen und Änderungen in den folgenden Versionen von .NET Framework:

.NET Framework 4.6.2
.NET Framework 4.6.1
.NET 2015 und .NET Framework 4.6
.NET Framework 4.5.2
.NET Framework 4.5.1
.NET Framework 4.5

Dieser Artikel enthält keine umfassenden Informationen zu jeder neuen Funktion und unterliegt möglichen Änderungen. Allgemeine Informationen zu .NET Framework finden Sie unter Erste Schritte mit .NET Framework. Informationen zu unterstützten Plattformen finden Sie unter Systemanforderungen. Downloadlinks und Installationsanweisungen finden Sie unter Installieren von .NET Framework.

System_CAPS_noteHinweis

Das .NET Framework-Team veröffentlicht zusätzlich mit NuGet Funktionen außer der Reihe, um die Plattformunterstützung zu erweitern und neue Funktionen einzuführen, z.B. unveränderliche Auflistungen und SIMD-fähige Vektortypen. Weitere Informationen finden Sie unter Zusätzliche Klassenbibliotheken und APIs und .NET Framework und Out-of-Band-Versionen. Lassen Sie eine vollständige Liste von NuGet-Paketen für .NET Framework anzeigen, oder abonnieren Sie unseren Feed.

.NET Framework 4.6.2 baut auf .NET Framework 4.6 und 4.6.1 auf und umfasst zahlreiche Fehlerkorrekturen und neue Funktionen in einem gewohnt stabilen Produkt.

Sie können .NET Framework 4.6.2 von den folgenden Speicherorten herunterladen:

.NET Framework 4.6.2 kann unter Windows 10, Windows 8.1, Windows 7 und den entsprechenden Serverplattformen, beginnend mit Windows Server 2008 R2 SP1, installiert werden. Sie können .NET Framework 4.6.2 wahlweise mit dem Webinstaller oder Offlineinstaller installieren. Die empfohlene Vorgehensweise für die meisten Benutzer ist die Verwendung des Webinstallers.

Sie können .NET Framework 4.6.2 in Visual Studio 2012 oder höheren Versionen als Ziel verwenden, indem Sie das .NET Framework 4.6.2-Entwicklerpaket installieren.

.NET Framework 4.6.2 enthält neue Funktionen in den folgenden Bereichen:

Eine Liste der neuen APIs, die .NET Framework 4.6.2 hinzugefügt wurden, finden unter .NET Framework 4.6.2 API Changes (Veränderungen der .NET Framework 4.6.2-API) auf GitHub. Eine Liste der Funktionsverbesserungen und Fehlerkorrekturen in .NET Framework 4.6.2 finden Sie unter .NET Framework 4.6.2 API Changes (Veränderungen der .NET Framework 4.6.2-API) auf GitHub.

In .NET Framework 4.6.2 umfasst ASP.NET die folgenden Verbesserungen:

Verbesserte Unterstützung lokalisierter Fehlermeldungen in Validierungssteuerelementen für Datenanmerkungen

Mit Validierungssteuerelementen für Datenanmerkungen können Sie eine Überprüfung durchführen, indem Sie mindestens ein Attribut einer Klasseneigenschaft hinzufügen. Das Element ValidationAttribute.ErrorMessage des Attributs definiert den Text der Fehlermeldung, falls die Überprüfung fehlschlägt. Beginnend mit .NET Framework 4.6.2, ist es einfach, mit ASP.NET Fehlermeldungen zu lokalisieren. Fehlermeldungen werden lokalisiert, wenn:

  1. ValidationAttribute.ErrorMessage im Validierungsattribut vorhanden ist.

  2. die Ressourcendatei im Ordner „App_LocalResources“ gespeichert ist.

  3. der Name der lokalisierten Ressourcendatei ist folgendermaßen aufgebaut: DataAnnotation.Localization.{Name}.resx, wobei Name einen Kulturnamen im Format Sprachcode-Länder-/Regionscode oder Sprachcode darstellt.

  4. Der Schlüsselname der Ressource ist die Zeichenfolge, die dem Attribut ValidationAttribute.ErrorMessage zugewiesen ist, und deren Wert ist die lokalisierte Fehlermeldung.

Darüber hinaus ist die Lokalisierung der Datenanmerkung erweiterbar. Entwickler können ihren eigenen Anbieter für die zu lokalisierenden Zeichenfolgen in einer Ressourcendatei verwenden, indem Sie die IStringLocalizerProvider-Schnittstelle implementieren, um Lokalisierungszeichenfolgen an einem anderen Speicherort zu speichern, jedoch nicht in einer Ressourcendatei.

Async-Unterstützung für Sitzungszustands-Schlüsselspeicheranbieter

ASP.NET erlaubt nun, dass Methoden, die eine Aufgabe zurückgeben, zusammen mit dem Anbieter für die Speicherung von Daten aus der Variable „Sitzungszustand“ verwendet werden können. Dadurch stehen ASP .NET-Apps die Vorteile zur Verfügung, die async in Sachen Skalierbarkeit bietet. Für die Unterstützung asynchroner Operationen bei Anbietern für die Speicherung von Daten aus der Variable „Sitzungszustand“, enthält ASP.NET eine neue Schnittstelle namens System.Web.SessionState.ISessionStateModule. Diese Schnittstelle erbt von IHttpModule und erlaubt Entwicklern, ihr eigenes Sitzungszustandsmodul und Anbieter für die Speicherung von async-Sitzungen zu implementieren. Die Schnittstelle wird wie folgt definiert:


public interface ISessionStateModule : IHttpModule {
    void ReleaseSessionState(HttpContext context);
    Task ReleaseSessionStateAsync(HttpContext context);
}

Zusätzlich enthält die SessionStateUtility-Klasse zwei neue Methoden, IsSessionStateReadOnly und IsSessionStateRequired, die verwendet werden können, um asynchrone Vorgänge zu unterstützen.

Async-Unterstützung für Ausgabecacheanbieter

Beginnend mit .NET Framework 4.6.2, können Methoden, die Aufgaben zurückgeben, mit Ausgabecacheanbietern verwendet werden, um die Vorteile der Skalierbarkeit von Async bereitzustellen. Anbieter, die diese Methoden bereitstellen, verringern die Anzahl blockierter Threads auf einem Webserver und verbessern die Skalierbarkeit eines ASP.NET-Diensts.

Die folgenden APIs wurden hinzugefügt, um asynchrone Ausgabecacheanbieter zu unterstützen:

Zeichen im .NET Framework 4.6.2 werden basierend auf dem Unicode-Standard, Version 8.0.0 klassifiziert. In .NET Framework 4.6 und .NET Framework 4.6.1, werden Zeichen basierend auf den Zeichenkategorien von Unicode 6.3 klassifiziert.

Die Unterstützung von Unicode 8.0 ist beschränkt auf die Klassifizierung von Zeichen durch die CharUnicodeInfo-Klasse und auf Typen und Methoden, die darauf basieren. Dazu gehören die StringInfo-Klasse, die überladene Char.GetUnicodeCategory-Methode, und die Zeichenklassen, die vom .NET Framework-Modul für reguläre Ausdrücke erkannt wird. Der Vergleich und die Sortierung von Zeichen und Zeichenfolgen sind von dieser Änderung nicht betroffen und beruhen weiterhin auf dem zugrunde liegenden Betriebssystem oder auf Windows 7-Systemen auf Zeichendaten, die vom .NET Framework bereitgestellt wurden.

Änderungen in Zeichenkategorien von Unicode 6.0 bis 7.0 Unicode finden Sie unter Unicode Standard, Version 7.0.0 auf der Website des Unicode-Konsortiums. Änderungen von Unicode 7.0 bis 8.0 Unicode finden Sie unter Unicode Standard, Version 8.0.0 auf der Website des Unicode-Konsortiums.

Unterstützung von X 509-Zertifikaten, die FIPS 186-3 DSA enthalten

.NET Framework 4.6.2 unterstützt DSA X509-Zertifikate (Digital Signature Algorithm), deren Schlüssel die FIPS 186-2-1024-Bit-Grenze überschreiten.

Zusätzlich zur Unterstützung der größeren Schlüsselgrößen von FIPS 186-3, erlaubt .NET Framework 4.6.2 die Berechnung von Signaturen mit der SHA-2-Familie der Hashalgorithmen (SHA256, SHA384 und SHA512). Die Unterstützung von FIPS 186-3 wird durch die neue System.Security.Cryptography.DSACng-Klasse bereitgestellt.

Gemäß der aktuellen Änderungen an der RSA-Klasse im .NET Framework 4.6 und an der ECDsa-Klasse im .NET Framework 4.6.1, verfügt die abstrakte Basisklasse DSA in .NET Framework 4.6.2 über zusätzliche Methoden, um Aufrufern die Verwendung dieser Funktion ohne die Umwandlung zu erlauben. Sie können die Erweiterungsmethode DSACertificateExtensions.GetDSAPrivateKey verwenden, um Daten zu signieren, so wie in folgendem Beispiel dargestellt.


public static byte[] SignDataDsaSha384(byte[] data, X509Certificate2 cert)
{
    using (DSA dsa = cert.GetDSAPrivateKey())
    {
        return dsa.SignData(data, HashAlgorithmName.SHA384);
    }
}

Sie können auch die Erweiterungsmethode DSACertificateExtensions.GetDSAPublicKey aufrufen, um signierte Daten zu überprüfen, so wie in folgendem Beispiel dargestellt.


public static bool VerifyDataDsaSha384(byte[] data, byte[] signature, X509Certificate2 cert)
{
    using (DSA dsa = cert.GetDSAPublicKey())
    {
        return dsa.VerifyData(data, signature, HashAlgorithmName.SHA384);
    }
}


 Public Shared Function VerifyDataDsaSha384(data As Byte(), signature As Byte(), cert As X509Certificate2) As Boolean
    Using dsa As DSA = cert.GetDSAPublicKey()
        Return dsa.VerifyData(data, signature, HashAlgorithmName.SHA384)
    End Using
End Function

Verbesserte Übersichtlichkeit für Eingaben in die Schlüsselableitungsfunktions-Routinen für den Diffie-Hellman-Schlüsselaustausch

In.NET Framework 3.5 wurde die Unterstützung der Elliptic Curve Diffie-Hellman-Schlüsselübereinstimmung mit drei verschiedenen Schlüsselableitungsfunktions-Routinen (KDF) hinzugefügt. Die Eingaben in die Routinen und auch die Routinen selbst wurden mithilfe von Eigenschaften auf dem ECDiffieHellmanCng-Objekt konfiguriert. Da jedoch nicht jede Routine jede input-Eigenschaft liest,sorgte dies bisher bei Entwicklern für reichlich Verwirrungspotenzial.

Um darauf in .NET Framework 4.6.2 zu reagieren, wurden die folgenden drei Methoden zur ECDiffieHellman-Basisklasse hinzugefügt, um diese KDF-Routinen und deren Eingaben eindeutiger darzustellen:

Die ECDiffieHellman-Methode

Beschreibung

DeriveKeyFromHash(ECDiffieHellmanPublicKey, HashAlgorithmName, Byte[], Byte[])

Leitet Schlüsselmaterial mithilfe der Formel ab

HASH(secretPrepend || x || secretAppend)

HASH(secretPrepend OrElse x OrElse secretAppend)

wobei x das berechnete Ergebnis des EC Diffie-Hellman-Algorithmus ist.

DeriveKeyFromHmac(ECDiffieHellmanPublicKey, HashAlgorithmName, Byte[], Byte[], Byte[])

Leitet Schlüsselmaterial mithilfe der Formel ab

HMAC(hmacKey, secretPrepend || x || secretAppend)

HMAC(hmacKey, secretPrepend OrElse x OrElse secretAppend)

wobei x das berechnete Ergebnis des EC Diffie-Hellman-Algorithmus ist.

DeriveKeyTls(ECDiffieHellmanPublicKey, Byte[], Byte[])

Leitet Schlüsselmaterial mit dem Ableitungsalgorithmus der TLS-Pseudozufallsfunktion (pseudo-random function; PRF) ab.

Unterstützung der symmetrischen Verschlüsselung persistenter Schlüssel

Die Windows-Kryptografiebibliothek (Cryptography API: Next Generation; CNG) hat Unterstützung für die Speicherung persistenter symmetrischer Schlüssel und für die Verwendung von in der Hardware gespeicherter symmetrischer Schlüssel bereitgestellt. .NET Framework 4.6.2 ermöglicht Entwicklern, diese Funktion zu verwenden. Da das Konzept des Schlüsselnamens und des Schlüsselanbieters implementierungsspezifisch ist, erfordert die Nutzung dieser Funktion die Verwendung des Konstruktors der konkreten Implementierungstypen anstatt der bevorzugten Herangehensweise des Unternehmens (z.B. durch aufrufen von Aes.Create).

Die Unterstützung der symmetrischen Verschlüsselung persistenter Schlüssel ist für die Algorithmen AES (AesCng) und 3DES (TripleDESCng) verfügbar. Zum Beispiel:


public static byte[] EncryptDataWithPersistedKey(byte[] data, byte[] iv)
{
    using (Aes aes = new AesCng("AesDemoKey", CngProvider.MicrosoftSoftwareKeyStorageProvider))
    {
        aes.IV = iv;

        // Using the zero-argument overload is required to make use of the persisted key
        using (ICryptoTransform encryptor = aes.CreateEncryptor())
        {
            if (!encryptor.CanTransformMultipleBlocks)
            {
                throw new InvalidOperationException("This is a sample, this case wasn’t handled...");
            }

            return encryptor.TransformFinalBlock(data, 0, data.Length);
        }
    }
}

SignedXml-Unterstützung des Hashing von SHA-2

.NET Framework 4.6.2 fügt Unterstützung für die SignedXml-Klasse für die Signaturmethoden RSA-SHA256, RSA-SHA384 und RSA-SHA512 PKCS#1 und für die Referenzalgorithmen SHA256, SHA384 sowie SHA512 hinzu.

Die URI-Konstanten werden alle für SignedXml verfügbar gemacht:

SignedXml-Feld

Konstante

XmlDsigSHA256Url

"http://www.w3.org/2001/04/xmlenc#sha256"

XmlDsigRSASHA256Url

"http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"

XmlDsigSHA384Url

"http://www.w3.org/2001/04/xmldsig-more#sha384"

XmlDsigRSASHA384Url

"http://www.w3.org/2001/04/xmldsig-more#rsa-sha384"

XmlDsigSHA512Url

"http://www.w3.org/2001/04/xmlenc#sha512"

XmlDsigRSASHA512Url

"http://www.w3.org/2001/04/xmldsig-more#rsa-sha512"

Alle Programme, die einen benutzerdefinierten SignatureDescription-Handler in CryptoConfig registriert haben, um Unterstützung für diese Algorithmen hinzuzufügen, funktionieren weiterhin wie gewohnt. Da nun jedoch Plattformstandards existieren, ist die CryptoConfig-Registrierung nicht mehr notwendig.

Der .NET Framework-Datenanbieter für SQL Server (System.Data.SqlClient) enthält die folgenden neuen Funktionen im .NET Framework 4.6.2:

Verbindungspooling und Timeouts mit Azure SQL-Datenbanken

Wenn das Verbindungspooling aktiviert ist und ein Timeoutfehler oder ein anderer Anmeldefehler auftritt, wird eine Ausnahme zwischengespeichert sowie die zwischengespeicherte Ausnahme wird für jeden nachfolgenden Verbindungsversuch für die nächsten 5 Sekunden bis zu einer Minute. Weitere Informationen finden Sie unter SQL Server-Verbindungspooling (ADO.NET).

Dieses Verhalten ist bei einer Verbindung zu Azure SQL-Datenbanken unerwünscht, da Verbindungsversuche mit flüchtigen Fehlern fehlschlagen können, die normalerweise schnell wiederhergestellt werden. Das Sperrfristverhalten des Verbindungspools wird entfernt, wenn die Verbindungsversuche zu Azure SQL-Datenbanken fehlschlagen, damit erneute Verbindungsversuche leichter erfolgen können.

Mit dem Hinzufügen des neuen PoolBlockingPeriod-Schlüsselworts können Sie die Sperrfrist auswählen, die für Ihre App am besten geeignet ist. Mögliche Werte:

Auto

Die Sperrfrist des Verbindungspools für eine Anwendung, die eine Verbindung mit einer Azure SQL-Datenbank herstellt, ist deaktiviert, und die Sperrfrist des Verbindungspools für eine Anwendung, die eine Verbindung mit einem anderen SQL-Server herstellt, ist aktiviert. Dies ist der Standardwert. Wenn der Serverendpunktname eine der folgenden Endungen besitzt, werden sie als Azure SQL-Datenbanken bezeichnet:

  • .database.windows.net

  • .database.chinacloudapi.cn

  • .database.usgovcloudapi.net

  • .database.cloudapi.de

AlwaysBlock

Die Sperrfrist des Verbindungspools ist immer aktiviert.

NeverBlock

Die Sperrfrist des Verbindungspools ist immer deaktiviert.

Verbesserungen für Always Encrypted

SQLClient führt zwei Verbesserungen für Always Encrypted ein:

  • Verschlüsselungsmetadaten für Abfrageparameter werden nun zwischengespeichert, um die Leistung von parametrisierten Abfragen von verschlüsselten Datenbankspalten zu verbessert. Wenn die Eigenschaft SqlConnection.ColumnEncryptionQueryMetadataCacheEnabled auf true festgelegt ist (was der Standardeinstellung entspricht) und dieselbe Abfrage mehrmals ausgeführt wird, ruft der Client die Parametermetadaten nur einmal vom Server ab.

  • Spaltenverschlüsselungsschlüssel-Einträge im Schlüsselcache werden nun nach einem konfigurierbaren Zeitintervall entfernt, das mithilfe der SqlConnection.ColumnEncryptionKeyCacheTtl-Eigenschaft festgelegt wird.

In .NET Framework 4.6.2 wurde die Windows Communication Foundation in den folgenden Bereichen erweitert:

Unterstützung der WCF-Transportsicherheit für Zertifikate, die mithilfe der CNG gespeichert wurden

Die WCF-Transportsicherheit unterstützt Zertifikate, die mithilfe der Windows-Kryptografiebibliothek (CNG) gespeichert wurden. Diese Unterstützung ist in .NET Framework 4.6.2 auf die Verwendung von Zertifikaten mit einem öffentlichen Schlüssel beschränkt, der über einen Exponent mit einer Länge von nicht mehr als 32 Bit verfügt. Wenn sich eine Anwendung auf den .NET Framework 4.6.2 bezieht, so ist diese Funktion standardmäßig aktiviert.

Für Anwendungen, die auf .NET Framework 4.6.1 und früher abzielen, aber auf .NET Framework 4.6.2 ausgeführt werden, kann diese Funktion aktiviert werden, indem die folgende Zeile zum Abschnitt „<runtime>“ der Datei „app.config“ oder „web.config“ hinzugefügt wird.


<AppContextSwitchOverrides
    value="Switch.System.ServiceModel.DisableCngCertificates=false"
/>

Dies kann auch programmgesteuert mit dem Code durchgeführt werden, so wie in folgendem Beispiel gezeigt:


private const string DisableCngCertificates = @"Switch.System.ServiceModel.DisableCngCertificates";
AppContext.SetSwitch(disableCngCertificates, false);

Bessere Unterstützung mehrerer Anpassungsregeln für die Sommerzeit durch die DataContractJsonSerializer-Klasse

Kunden können eine Anwendungskonfigurationseinstellung verwenden, um zu bestimmen, ob die DataContractJsonSerializer-Klasse mehrere Anpassungsregeln für eine Zeitzone unterstützt. Dies ist eine Opt-in-Funktion. Fügen Sie die folgende Einstellung der Datei app.config hinzu, um sie zu aktivieren:


<runtime>
     <AppContextSwitchOverrides value="Switch.System.Runtime.Serialization.DoNotUseTimeZoneInfo=false" />
</runtime>

Wenn diese Funktion aktiviert ist, verwendet ein DataContractJsonSerializer-Objekt den TimeZoneInfo-Typ anstelle des TimeZone-Typs, um Datums-und Uhrzeitdaten zu deserialisieren. TimeZoneInfo unterstützt mehrere Anpassungsregeln, die es ermöglichen, mit veralteten Zeitzonendaten. TimeZone unterstützt dies nicht.

Weitere Informationen zur TimeZoneInfo-Struktur und Zeitzonenanpassungen finden Sie unter Übersicht über Zeitzonen.

Beibehaltung einer UTC-Zeit bei der Serialisierung und Deserialisierung mit der XmlSerializer-Klasse

Wenn die XmlSerializer-Klasse zum Serialisieren eines UTC DateTime-Werts verwendet wird, erstellt sie normalerweise eine serialisierte Zeit-Zeichenfolge, die das Datum und die Uhrzeit beibehält, jedoch davon ausgeht, dass die Zeit die Ortszeit ist. Wenn Sie beispielsweise ein UTC-Datum und eine UTC-Uhrzeit instanziieren, indem Sie den folgenden Code aufrufen:

DateTime utc = new DateTime(2016, 11, 07, 3, 0, 0, DateTimeKind.Utc);

ist das Ergebnis für ein System, das acht Stunden hinter der Zeitzone UTC ist, die serialisierten Zeit-Zeichenfolge „03:00:00.0000000-08:00“ . Serialisierte Werte sind zudem immer als lokale Datums- und Uhrzeitwerte deserialisiert.

Sie können eine Anwendungskonfigurationseinstellung verwenden, um zu bestimmen, ob die XmlSerializer-Klasse die UTC-Zeitzoneninformation beibehält, wenn sie die DateTime-Werte serialisiert und deserialisiert:


<runtime>
     <AppContextSwitchOverrides 
          value="Switch.System.Runtime.Serialization.DisableSerializeUTCDateTimeToTimeAndDeserializeUTCTimeToUTCDateTime=false" />
</runtime>

Wenn diese Funktion aktiviert ist, verwendet ein DataContractJsonSerializer-Objekt den TimeZoneInfo-Typ anstelle des TimeZone-Typs, um Datums-und Uhrzeitdaten zu deserialisieren. TimeZoneInfo unterstützt mehrere Anpassungsregeln, die es ermöglichen, mit veralteten Zeitzonendaten. TimeZone unterstützt dies nicht.

Weitere Informationen zur TimeZoneInfo-Struktur und Zeitzonenanpassungen finden Sie unter Übersicht über Zeitzonen.

NetNamedPipeBinding höchste Übereinstimmung

WCF bietet eine neue App-Einstellung, die für Clientanwendungen festgelegt werden kann, um sicherzustellen, dass diese immer eine Verbindung zu dem Dienst herstellen, der an dem URI lauscht, der die höchste Übereinstimmung zu dem aufweist, den die Anwendungen anfordern. Wenn diese App-Einstellung auf false (Standard) festgelegt ist, ist es für Clients möglich, NetNamedPipeBinding zu verwenden, um zu versuchen, eine Verbindung zu einem Dienst herzustellen, der an einen URI lauscht, der eine Teilzeichenfolge des angeforderten URI darstellt.

Angenommen, ein Client versucht, eine Verbindung zu einem Dienst herzustellen, der an net.pipe://localhost/Service1 lauscht, aber ein anderer Dienst auf dem Computer, der mit Administratorrechten ausgeführt wird, lauscht an net.pipe://localhost. Der Client würde versuchen, mit dieser App-Einstellung, die auf false festgelegt ist, eine Verbindung zu dem falschen Dienst herzustellen. Nach dem Festlegen der App-Einstellung auf true, wird der Client stets eine Verbindung zu den passendsten Dienst herstellen.

System_CAPS_noteHinweis

Clients, die NetNamedPipeBinding verwenden, suchen Dienste, die auf der Basisadresse des Diensts basieren (soweit vorhanden) anstatt die vollständige Endpunktadresse. Damit diese Einstellung immer funktioniert muss der Dienst eine eindeutige Basisadresse verwenden.

Fügen Sie die folgende App-Einstellung der App.config- oder Web.config-Datei der Anwendung Ihres Clients hinzu, um die Änderung zu aktivieren:


<configuration>
    <appSettings>
        <add key="wcf:useBestMatchNamedPipeUri" value="true" />
    </appSettings>
</configuration>

SSL 3.0 ist kein Standardprotokoll

Bei der Verwendung von NetTcp im Transportsicherheitsmodus und der Einstellung „Zertifikat“ wird SSL 3.0 nicht länger als eines der Standardprotokolle für das Aushandeln einer sicheren Verbindung verwendet. In den meisten Fällen sollte es keine Auswirkungen auf vorhandene Apps geben, da TLS 1.0 in der Protokollliste für NetTcp enthalten ist. Alle vorhandenen Clients sollten in der Lage sein, eine Verbindung mit mindestens TLS 1.0 auszuhandeln. Wenn Ssl3 erforderlich ist, verwenden Sie eine der folgenden Konfigurationsmechanismen, um es der Liste der ausgehandelten Protokolle hinzuzufügen.

In .NET Framework 4.6.2 wurde die Windows Presentation Foundation in den folgenden Bereichen erweitert:

Sortieren von Gruppen

Eine Anwendung, die ein CollectionView-Objekt zum gruppieren von Daten verwenden, kann nun explizit deklarieren, wie die Gruppen sortiert werden. Das explizite Sortieren behebt das Problem der nicht-intuitiven Sortierung beim dynamischen Hinzufügen oder Entfernen von Gruppen und beim Ändern des Wert der beim Gruppieren beteiligten Elementeigenschaften durch eine App. Diese Vorgehensweise kann auch die Leistung des Gruppenerstellungsprozesses verbessern, indem Vergleiche der Gruppierungseigenschaften nicht bei der Sortierung der vollständigen Sammlung, sondern bei der Sortierung der Gruppen erfolgen/vorgenommen werden.

Zur Unterstützung der Gruppensortierung beschreiben die neuen GroupDescription.SortDescriptions- und GroupDescription.CustomSort-Eigenschaften wie die Sammlung der Gruppen sortiert wird, die vom GroupDescription-Objekt erstellt wurden. Dies ist vergleichbar mit der Art wie gleichnamigen ListCollectionView-Eigenschaften die Sortierung der Datenelemente beschreiben.

In den häufigsten Fällen können zwei neue statistische Eigenschaften der PropertyGroupDescription-Klasse verwendet werden, nämlich CompareNameAscending und CompareNameDescending.

Zum Beispiel gruppiert der folgende XAML-Code Daten nach Alter, sortiert die Gruppen in aufsteigender Reihenfolge und gruppierten die Elemente in den einzelnen Gruppen anhand des Nachnamens.


<GroupDescriptions>
     <PropertyGroupDescription 
         PropertyName=”Age” 
         CustomSort= 
              ”{x:Static PropertyGroupDescription.CompareNamesAscending}”/>
     </PropertyGroupDescription>
</GroupDescriptions>

<SortDescriptions>
     <SortDescription PropertyName=”LastName”/>
</SortDescriptions>

Bildschirmtastatur-Unterstützung

Die Bildschirmtastatur-Unterstützung ermöglicht die fokussierte Verfolgung in WPF-Anwendungen, indem automatisch die neue Bildschirmtastatur in Windows 10 aufgerufen und geschlossen wird, wenn die Fingereingabe von einem Steuerelement empfangen wird, das Texteingabe nutzen kann.

In früheren Versionen des .NET-Frameworks konnte für WPF-Anwendungen die Fokusverfolgung nur aktiviert werden, wenn in WPF die Unterstützung für Stifte und Touchgesten deaktiviert wurde. Die WPF-Anwendungen müssen daher zwischen der vollständiger WPF-Gestenunterstützung und der Windows-Mausheraufstufung wählen.

DPI pro Monitor

Um die neueste Vervielfältigung von hohen DPI- und hybrider DPI-Umgebungen für WPF-Apps zu unterstützen, sorgt WPF dafür, dass monitorspezifische DPI-Werte in .NET Framework 4.6.2 erkannt werden. Weitere Informationen dazu, wie Sie in Ihrer WPF-Anwendung dafür sorgen, dass Sie mit monitorspezifischen DPI-Werten kompatibel ist, finden Sie unter Samples and Developer Guide (Beispiele und Entwicklerhandbuch) auf GitHub.

In früheren Versionen von .NET Framework sind WPF-Apps kompatibel mit systemspezifischen DPI-Werten. Die Benutzeroberfläche der Anwendung wird anders gesagt ggf. mit dem Betriebssystem skaliert, abhängig von der DPI des Monitors, auf dem die App gerendert wird. ,

Apps, die unter .NET Framework 4.6.2 ausgeführt werden, können Sie monitorspezifische DPI-Änderungen in WPF-Apps deaktivieren, indem Sie eine Konfigurationsanweisung zum Abschnitt <runtime> Ihrer Anwendungskonfigurationsdatei hinzufügen, so wie in folgendem Beispiel gezeigt:


<runtime>
   <AppContextSwitchOverrides value=”Switch.System.Windows.DoNotScaleForDpiChanges=false”/>
</runtime>

In .NET Framework 4.6.2 wurde die Windows Workflow Foundation im folgenden Bereich erweitert:

Unterstützung für C#-Ausdrücke und IntelliSense im neu gehosteten WF-Designer

Beginnend mit .NET Framework 4.5, unterstützt WF C#-Ausdrücke sowohl im Visual Studio-Designer als auch in Codeworkflows. Der neu gehostete Workflow-Designer ist eine wichtige Funktion von WF, die zulässt, dass sich der Workflow-Designer in einer Anwendung außerhalb von Visual Studio befindet (z.B. in WPF). Windows Workflow Foundation bietet die Möglichkeit der Unterstützung von C#-Ausdrücken und IntelliSense im neu gehosteten Workflow-Designer. Weitere Informationen finden Sie im Windows Workflow Foundation-Blog (in englischer Sprache).

Availability of IntelliSense when a customer rebuilds a workflow project from Visual Studio

In Versionen von .NET Framework vor .NET Framework 4.6.2 wird IntelliSense in WF-Designer unterbrochen, wenn ein Kunde eine Workflowprojekt von Visual Studio neu erstellt. Obwohl die Erstellung des Projekts erfolgreich war, können die Workflowtypen nicht im Designer gefunden werden und IntelliSense gibt Warnungen für die fehlenden Workflowtypen im Fenster Fehlerliste aus..NET Framework 4.6.2 behandelt dieses Problem und macht IntelliSense verfügbar.

Workflow V1-Anwendungen mit aktivierter Workflowüberwachung werden im FIPS-Modus ausgeführt

Computer mit aktiviertem FIPS-Kompatibilitätsmodus können jetzt erfolgreich eine Anwendung, die dem Stil der Workflowversion 1 entspricht, mit aktivierter Workflowüberwachung ausführen. Sie müssen die folgenden Änderungen in Ihrer app.config-Datei vornehmen, um dieses Szenario zu aktivieren:

<add key="microsoft:WorkflowRuntime:FIPSRequired" value="true" />

Wenn dieses Szenario nicht aktiviert ist, führt das Ausführen der Anwendung weiterhin dazu, dass eine Ausnahme mit folgender Meldung ausgelöst wird: „Diese Implementation ist nicht Teil der Windows Platform FIPS-überprüften kryptografischen Algorithmen.“

Verbesserungen des Workflows bei der Verwendung von dynamischen Updates mit dem Workflow-Designer von Visual Studio

Der Workflow-Designer, der Flussdiagramm-Aktivitätsdesigner und andere Workflow-Aktivitätsdesigner laden nun erfolgreich Workflows, die nach dem Aufruf der DynamicUpdateServices.PrepareForUpdate-Methode gespeichert wurden und zeigen diese an. In Versionen von .NET Framework vor .NET Framework 4.6.2, kann das Laden einer XAML-File in Visual Studio für einen Workflow, der nach dem Aufruf von DynamicUpdateServices.PrepareForUpdate gespeichert wurde, zu folgenden Problemen führen:

  • Der Workflow-Designer kann die XAML-Datei nicht ordnungsgemäß laden (wenn sich die ViewStateData.Id am Ende der Zeile befindet).

  • Der Flussdiagramm-Aktivitätsdesigner oder andere Workflow-Aktivitätsdesigner können möglicherweise alle Objekte an ihrem Standardspeicherort anzeigen, im Gegensatz zu angefügten Eigenschaftswerten.

ClickOnce wurde zur Unterstützung von TLS 1.1 und TLS 1.2 neben dem 1.0-Protokoll aktualisiert, das schon unterstützt wird. ClickOnce erkennt automatisch, welches Protokoll erforderlich ist. Es sind keine zusätzlichen Schritte innerhalb der ClickOnce-Anwendung erforderlich, um die TLS 1.1 und 1.2-Unterstützung zu aktivieren.

Windows bietet nun Möglichkeiten, vorhandene Windows Desktop-Apps, einschließlich WPF- und Windows Forms-Apps, auf der Universal Windows Platform (UWP) bereitzustellen. Diese Technologie agiert als Brücke, indem sie Ihnen ermöglicht, Ihre vorhandene Codebasis nach und nach zu UWP zu migrieren und so Ihre App auf allen Windows 10-Geräten bereitzustellen.

Konvertierte Desktop-Apps erlangen eine App-Identität ähnlich der App-Identität von UWP-Apps, wodurch UWP-APIs zugänglich gemacht werden, um Funktionen wie Live-Kacheln und Benachrichtigungen zu aktivieren. Die App verhält sich weiterhin wie zuvor und wird als voll vertrauenswürdige App ausgeführt. Sobald die App konvertiert ist, kann ein App-Container-Prozess zum vorhandenen voll vertrauenswürdigen Prozess hinzugefügt werden, um eine adaptive Benutzeroberfläche hinzuzufügen. Wenn alle Funktionen in den App-Container-Prozess verschoben werden, kann der vollständig vertrauenswürdige Prozess entfernt werden, und die neue UWP-App kann auf allen Windows 10-Geräten zur Verfügung gestellt werden.

Die nicht verwaltete Debug-API wurde im .NET Framework 4.6.2 verbessert, um zusätzlichen Analysen durchzuführen, wenn eine NullReferenceException-Klasse ausgelöst wird, sodass es möglich ist, zu bestimmen, welche Variablen in einer einzelnen Zeile des Quellcodes null ist. Um dieses Szenario zu unterstützen, wurden die folgenden APIs der nicht verwalteten Debug-API hinzugefügt.

.NET Framework 4.6.1 enthält neue Features in den folgenden Bereichen:

Weitere Informationen zu .NET Framework 4.6.1 finden Sie unter den folgenden Themen:

RSACng-Unterstützung für X509-Zertifikate in .NET Framework 4.6..NET Framework 4.6.1 fügt Unterstützung für ECDSA (Elliptic Curve Digital Signature Algorithm) X509-Zertifikate hinzu.

ECDSA bietet eine bessere Leistung und einen sichereren Kryptografiealgorithmus als RSA. Somit ist die Lösung eine hervorragende Wahl, wenn es um TLS (Transport Layer Security)-Leistung und Skalierbarkeit geht. Die .NET Framework-Implementierung schließt Aufrufe in die vorhandene Windows-Funktionalität ein.

Im folgenden Codebeispiel wird gezeigt, wie einfach es ist, eine Signatur für einen Bytedatenstrom mit der neuen in .NET Framework 4.6.1 enthaltenen ECDSA-Unterstützung für X509-Zertifikate zu generieren.

using System;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;

public class Net461Code
{
    public static byte[] SignECDsaSha512(byte[] data, X509Certificate2 cert)
    {
        using (ECDsa privateKey = cert.GetECDsaPrivateKey())
        {
            return privateKey.SignData(data, HashAlgorithmName.SHA512);
        }
    }

    public static byte[] SignECDsaSha512(byte[] data, ECDsa privateKey)
    {
        return privateKey.SignData(data, HashAlgorithmName.SHA512);
    }
}

Dies steht in deutlichem Gegensatz zu dem Code, der zum Generieren einer Signatur in .NET Framework 4.6 erforderlich war.

using System;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;

public class Net46Code
{
    public static byte[] SignECDsaSha512(byte[] data, X509Certificate2 cert)
    {
        // This would require using cert.Handle and a series of p/invokes to get at the
        // underlying key, then passing that to a CngKey object, and passing that to
        // new ECDsa(CngKey).  It's a lot of work.
        throw new Exception("That's a lot of work...");
    }

    public static byte[] SignECDsaSha512(byte[] data, ECDsa privateKey)
    {
        // This way works, but SignData probably better matches what you want.
        using (SHA512 hasher = SHA512.Create())
        {
            byte[] signature1 = privateKey.SignHash(hasher.ComputeHash(data));
        }

        // This might not be the ECDsa you got!
        ECDsaCng ecDsaCng = (ECDsaCng)privateKey;
        ecDsaCng.HashAlgorithm = CngAlgorithm.Sha512;
        return ecDsaCng.SignData(data);
    }
}   

ADO.NET wurde um die folgenden Features erweitert:

"Always Encrypted"-Unterstützung für hardwaregeschützte Schlüssel

ADO.NET unterstützt jetzt die systemeigene Speicherung von "Always Encrypted"-Spaltenhauptschlüsseln in Hardwaresicherheitsmodulen (Hardware Security Modules, HSMs). Mit dieser Unterstützung profitieren Kunden von asymmetrischen, in HSMs gespeicherten Schlüsseln, ohne benutzerdefinierte Spaltenhauptschlüssel-Speicheranbieter zu schreiben und in Anwendungen registrieren zu müssen.

Kunden müssen die vom HSM-Anbieter bereitgestellten CSP-Anbieter oder CNG-Schlüsselspeicheranbieter auf den App-Servern oder Clientcomputern installieren, um über die in einem HSM gespeicherten Spaltenhauptschlüssel auf die mit "Always Encrypted" geschützten Daten zuzugreifen.

Verbessern des MultiSubnetFailover-Verbindungsverhaltens für AlwaysOn

SqlClient ermöglicht jetzt automatisch schnellere Verbindungen mit einer AlwaysOn-Verfügbarkeitsgruppe (Availability Group, AG). Er erkennt auf transparente Weise, ob die Anwendung eine Verbindung mit einer AlwaysOn-Verfügbarkeitsgruppe in einem anderen Subnetz herstellt, ermittelt schnell den aktiven Server und stellt eine Verbindung mit dem Server her. Vor dieser Version musste eine Anwendung “MultisubnetFailover=true” in die Verbindungszeichenfolge einschließen, um anzugeben, dass eine Verbindung mit einer AlwaysOn-Verfügbarkeitsgruppe hergestellt wurde. Wenn das Verbindungsschlüsselwort nicht auf true festgelegt wird, kann bei der Verbindung mit einer AlwaysOn-Verfügbarkeitsgruppe ein Anwendungstimeout auftreten. Bei dieser Version muss eine Anwendung MultiSubnetFailovernicht mehr auf true festlegen. Weitere Informationen zu SqlClient-Unterstützung für AlwaysOn-Verfügbarkeitsgruppen finden Sie unter SqlClient-Unterstützung für hohe Verfügbarkeit, Notfallwiederherstellung.

Windows Presentation Foundation umfasst eine Reihe von Verbesserungen und Änderungen.

Leistungssteigerung

Die Verzögerung beim Auslösen von Touchereignissen wurde in .NET Framework 4.6.1 behoben. Wenn eine Eingabe in ein RichTextBox-Steuerelement erfolgt, wird außerdem der Renderthread während der schnellen Eingabe nicht mehr vollständig beansprucht.

Verbesserte Rechtschreibprüfung

Die Rechtschreibprüfung in WPF wurde unter Windows 8.1 und höheren Versionen aktualisiert, um die Betriebssystemunterstützung für die Rechtschreibprüfung zusätzlicher Sprachen zu nutzen. Bezüglich der Funktionalität in Windows-Versionen vor Windows 8.1 gibt es keine Änderung.

Wie in früheren .NET Framework-Versionen wird die Sprache eines TextBox-Steuerelements oder RichTextBox-Blocks ermittelt, indem in der folgenden Reihenfolge nach Informationen gesucht wird:

  • xml:lang, falls vorhanden.

  • Aktuelle Eingabesprache

  • Aktuelle Threadkultur

Weitere Informationen zur Sprachunterstützung in WPF finden Sie im WPF-Blogbeitrag zu .NET Framework 4.6.1-Features.

Zusätzliche Unterstützung für benutzerdefinierte Wörterbücher pro Benutzer

In .NET Framework 4.6.1 erkennt WPF benutzerdefinierte Wörterbücher, die global registriert sind. Diese Funktion ist zusätzlich zur Registrierung der Wörterbücher pro Steuerelement verfügbar.

In früheren WPF-Versionen wurden Listen ausgeschlossener Wörter und AutoKorrektur-Listen von benutzerdefinierten Wörterbüchern nicht erkannt. Diese werden unter Windows 8.1 und Windows 10 mittels Dateien unterstützt, die im Verzeichnis %AppData%\Microsoft\Spelling\<language tag> abgelegt werden können. Für diese Dateien gelten die folgenden Regeln:

  • Die Dateien sollten über die Erweiterungen ".dic" (hinzugefügte Wörter), ".exc" (ausgeschlossene Wörter) oder ".acl" (AutoKorrektur-Wörter) verfügen.

  • Außerdem sollten sie das UTF-16LE-Nur-Text-Format aufweisen, das mit der Bytereihenfolgenmarke (Byte Order Mark, BOM) beginnt.

  • Jede Zeile sollte aus einem Wort (aus der Liste hinzugefügter und ausgeschlossener Wörter) oder einem AutoKorrektur-Paar bestehen, bei dem die Wörter durch einen senkrechten Strich ("|") in der AutoKorrektur-Wortliste getrennt sind).

  • Diese Dateien sind schreibgeschützt und werden vom System nicht geändert.

System_CAPS_noteHinweis

Diese neuen Dateiformate werden von der WPF-Rechtschreibprüfungs-API nicht direkt unterstützt, sodass die benutzerdefinierten Wörterbücher, die in Anwendungen für WPF bereitgestellt werden, weiterhin LEX-Dateien verwenden sollten.

Beispiele

Auf MSDN finden sich eine Reihe von WPF-Beispielen. Mehr als 200 der bekanntesten Beispiele werden (basierend auf ihrer Verwendung) in ein Open Source-GitHub-Repository verschoben. Helfen Sie uns bei der Verbesserung unserer Beispiele, indem Sie uns einen Pull Request senden oder ein GitHub-Problem eröffnen.

DirectX-Erweiterungen

WPF enthält ein NuGet-Paket mit neuen Implementierungen von D3DImage. Diese erleichtern die Interoperabilität mit DX10- und Dx11-Inhalten. Der Code für dieses Paket steht als Open Source-Code auf GitHub zur Verfügung.

Von der Transaction.EnlistPromotableSinglePhase-Methode kann jetzt ein anderer Manager für verteilte Aktionen als MSDTC verwendet werden, um die Transaktion höherzustufen. Zu diesem Zweck geben Sie eine neue GUID-Transaktionspromoter-ID für die neue Transaction.EnlistPromotableSinglePhase(IPromotableSinglePhaseNotification, Guid)-Überladung an. Wenn dieser Vorgang erfolgreich ist, unterliegt die Transaktionsfunktionalität gewissen Einschränkungen. Sobald ein Nicht-MSDTC-Transaktionspromoter eingetragen wird, lösen die folgenden Methoden eine TransactionPromotionException aus, da diese Methoden die Höherstufung auf MSDTC erfordern:

Sobald ein Nicht-MSDTC-Transaktionspromoter eingetragen wird, muss er mit dauerhaften Eintragungen verwendet werden. Dabei werden die von ihm definierten Protokolle verwendet. Die Guid des Transaktionspromoters kann mithilfe der PromoterType-Eigenschaft abgerufen werden. Bei der Höherstufung der Transaktion stellt der Transaktionspromoter ein Byte-Array bereit, das das höher gestufte Token darstellt. Eine Anwendung kann das höher gestufte Token für eine nicht von MSDTC höher gestufte Transaktion mit der GetPromotedToken-Methode abrufen.

Benutzer der neuen Transaction.EnlistPromotableSinglePhase(IPromotableSinglePhaseNotification, Guid)-Überladung müssen eine bestimmte Aufruffolge einhalten, damit die Höherstufung erfolgreich abgeschlossen wird. Diese Regeln werden in der Dokumentation der Methode beschrieben.

Die nicht verwaltete Profilerstellungs-API wurde wie folgt erweitert:

Bessere Unterstützung für den Zugriff auf PDBs in der ICorProfilerInfo7-Schnittstelle

In ASP.Net 5 werden Assemblys im Arbeitsspeicher immer häufiger mit Roslyn kompiliert. Für Entwickler von Profilertools bedeutet dies, dass PDB-Dateien, die früher auf Datenträgern serialisiert wurden, u. U. nicht mehr vorkommen. Profilertools verwenden PDB-Dateien häufig, um Codezeilen wieder den Quellzeilen zuzuordnen, beispielsweise für die Codeabdeckung oder zeilenweise Leistungsanalysen. Die ICorProfilerInfo7-Schnittstelle enthält jetzt zwei neue Methoden, ICorProfilerInfo7::GetInMemorySymbolsLength und ICorProfilerInfo7::ReadInMemorySymbols, um diesen Profilertools Zugriff auf die PDB-Daten im Arbeitsspeicher zu gewähren. Mithilfe der neuen APIs kann ein Profiler Inhalte einer im Arbeitsspeicher enthaltenen PDB-Datei als Bytearray abrufen und dieses anschließend verarbeiten oder auf den Datenträger serialisieren.

Bessere Instrumentation mit der ICorProfiler-Schnittstelle

Profiler, die die ReJit-Funktionalität der ICorProfiler-API für die dynamische Instrumentation verwenden, sind jetzt in der Lage, einige Metadaten zu ändern. Früher konnte IL durch diese Tools jederzeit instrumentiert werden, während Metadaten nur zur Ladezeit des Moduls geändert werden konnten. Da IL auf Metadaten verweist, sind die möglichen Instrumentationsarten eingeschränkt. Wir haben einige dieser Beschränkungen durch Hinzufügen der ICorProfilerInfo7::ApplyMetaData-Methode aufgehoben. Dadurch werden einige Metadatenbearbeitungen nach dem Laden des Moduls ermöglicht, insbesondere das Hinzufügen neuer AssemblyRef-, TypeRef-, TypeSpec-, MemberRef-, MemberSpec- und UserString-Datensätze. Diese Änderung erweitert die Möglichkeiten der dynamischen Instrumentation.

Die computerübergreifende Ereignisablaufverfolgung ermöglicht Kunden die Profilerstellung für ein Programm auf Computer A und die Anzeige der Profilerstellungsdaten per Quellzeilenzuordnung auf Computer B. Unter früheren .NET Framework-Versionen musste der Benutzer alle Module und systemeigenen Images vom Profilcomputer auf den Analysecomputer kopieren, der die IL PDB-Datei für die Zuordnung zwischen Quellzeilen und systemeigenen Images enthielt. Während dies bei kleineren Dateien wie Handy-Apps durchaus gut funktionieren kann, können Desktopsystemdateien ziemlich anwachsen und beträchtliche Zeit für das Kopieren erfordern.

Bei NGEN PDB-Dateien kann NGen eine PDB-Datei erstellen, die die Zuordnung zwischen IL und systemeigenen Images enthält, ohne dass eine Abhängigkeit von der IL PDB-Datei besteht. In diesem Szenario für die computerübergreifende Ereignisablaufverfolgung muss lediglich die von Computer A generierte PDB-Datei für systemeigene Images auf Computer B kopiert werden, und die Debug Interface Access-APIs müssen verwendet werden, um die "Quellzeilen-zu-IL"-Zuordnung der IL PDB-Datei und die "IL-zu-systemeigene Images"-Zuordnung der PDB-Datei für systemeigene Images zu lesen. Durch die Kombination beider Zuordnungen entsteht eine Zuordnung zwischen Quellzeilen und systemeigenem Image. Da die PDB-Datei für systemeigene Images viel kleiner als alle Module und systemeigenen Images ist, wird das Kopieren von Computer A auf Computer B deutlich beschleunigt.

In .NET 2015 werden .NET Framework 4.6 und .NET Core eingeführt. Einige neue Funktionen gelten für beide, während andere Funktionen für .NET Framework 4.6 bzw. .NET Core spezifisch sind.

  • ASP.NET 5

    .NET 2015 enthält ASP.NET 5, eine schlanke .NET-Plattform zum Erstellen moderner, cloudbasierter Apps. Die Plattform ist modular aufgebaut, sodass Sie nur die Funktionen aufnehmen können, die Sie in Ihrer Anwendung benötigen. Sie kann auf IIS oder eigenständig in einem benutzerdefinierten Prozess gehostet werden, und Sie können Apps mit verschiedenen Versionen von .NET Framework auf demselben Server ausführen. Sie umfasst ein neues Umgebungskonfigurationssystem, das für die Cloudbereitstellung entwickelt wurde.

    MVC, Web-API und Webseiten sind in einem einzigen Framework namens MVC 6 vereint. Sie erstellen ASP.NET 5-Apps mithilfe der neuen Tools in Visual Studio 2015. Ihre vorhandenen Anwendungen funktionieren im neuen .NET Framework. Um jedoch eine App zu erstellen, die MVC 6 oder SignalR 3 verwendet, müssen Sie das Projektsystem in Visual Studio 2015 verwenden.

    Weitere Informationen finden Sie unter ASP.NET 5.

  • Updates für ASP.NET

    • Aufgabenbasierte API für die asynchrone Antwortleerung

      ASP.NET verfügt nun mit HttpResponse.FlushAsync über eine einfache aufgabenbasierte API für die asynchrone Antwortleerung. Hiermit wird mithilfe der async/await-Unterstützung für Ihre Sprache die asynchrone Leerung von Antworten ermöglicht.

    • Model binding supports task-returning methods

      In .NET Framework 4.5, ASP.NET wurde das Modellbindungsfeature hinzugefügt, das einen erweiterbaren, codeorientierten Ansatz für CRUD-basierte Datenvorgänge in Web Forms-Seiten und Benutzersteuerelementen ermöglicht. Das Modellbindungssystem unterstützt nun wiederkehrende Task-Modellbindungsmethoden. Dadurch erhalten Web Forms-Entwickler die Vorteile hinsichtlich der Asynchronität und die Einfachheit des Datenbindungssystems beim Verwenden neuerer Versionen von ORMs, einschließlich des Entity Frameworks.

      Die asynchrone Modellbindung wird durch die aspnet:EnableAsyncModelBinding-Konfigurationseinstellung gesteuert.

      
      <appSettings>
         <add key=" aspnet:EnableAsyncModelBinding" value="true|false" />
      </appSettings>
      
      

      Bei auf .NET Framework 4.6 abzielenden Apps wird der Standardwert auf true festgelegt. Bei Apps unter .NET Framework 4.6, die auf eine frühere Version von .NET Framework abzielen, ist false der Standard. Dies kann aktiviert werden, indem die Konfigurationseinstellung auf true festgelegt wird.

    • HTTP/2-Unterstützung (Windows 10)

      HTTP/2 ist eine neue Version des HTTP-Protokolls, die eine wesentlich bessere Nutzung von Verbindungen ermöglicht (weniger Roundtrips zwischen Client und Server) und so die Latenz beim Laden von Webseiten für Benutzer verringert.  Webseiten profitieren am meisten von HTTP/2 (im Gegensatz zu Services), da das Protokoll Anforderungen mehrerer Artefakte in einem Aufruf zusammenfasst und so optimiert. Die HTTP/2-Unterstützung wurde zu ASP.NET in .NET Framework 4.6 hinzugefügt. Da Netzwerkfunktionen auf mehreren Ebenen vorhanden sind, waren neue Funktionen in Windows, IIS und ASP.NET erforderlich, um HTTP/2 nutzen zu können. Sie müssen Windows 10 ausführen, um HTTP/2 mit ASP.NET nutzen zu können.

      HTTP/2 wird auch unterstützt und ist standardmäßig für Windows 10-UWP-Apps aktiviert, die die System.Net.Http.HttpClient-API verwenden.

      Zum Bereitstellen einer Möglichkeit für die Verwendung des Features PUSH_PROMISE in ASP.NET-Anwendungen wurde der HttpResponse-Klasse eine neue Methode mit zwei Überladungen (PushPromise(String) und PushPromise(String, String, NameValueCollection)) hinzugefügt.

      System_CAPS_noteHinweis

      Während ASP.NET 5 Unterstützung für HTTP/2 enthält, wurde noch keine Unterstützung für das PUSH PROMISE-Feature hinzugefügt.

      Browser und Webserver (IIS unter Windows) erledigen die gesamte Arbeit. Sie müssen keine umfangreichen Aufgaben für Ihre Benutzer ausführen.

      Die meisten gängigen Browser unterstützen HTTP/2, sodass Ihre Benutzer wahrscheinlich vom HTTP/2-Protokoll profitieren können, sofern Ihr Server dies unterstützt.

    • Unterstützung für das Tokenbindungsprotokoll

      Microsoft und Google haben gemeinsam einen neuen Ansatz für die Authentifizierung erarbeitet, das so genannte Tokenbindungsprotokoll. Die Prämisse: Authentifizierungstoken (im Browsercache) können von Internetkriminellen gestohlen und verwendet werden, um auf ansonsten sichere Ressourcen (z. B. Bankkonten) zuzugreifen, ohne Ihr Kennwort oder andere geschützte Informationen zu kennen. Das neue Protokoll zielt darauf ab, dieses Problem zu minimieren.

      Das Tokenbindungsprotokoll wird in Windows 10 als Browserfunktion implementiert. ASP.NET-Anwendungen werden in das Protokoll einbezogen, damit die Legitimität von Authentifizierungstoken überprüft werden kann. Die Client- und Serverimplementierungen stellen den durch das Protokoll angegebenen umfassenden Schutz bereit.

    • Zufällige Zeichenfolgen-Hashalgorithmen

      Mit .NET Framework 4.5 wurde ein zufälliger Zeichenfolgen-Hashalgorithmus eingeführt. Dieser wurde jedoch durch ASP.NET nicht unterstützt, da einige der ASP.NET von einem stabilen Hash abhängig sind. In .NET Framework 4.6 werden nun zufällige Zeichenfolgen-Hashalgorithmen unterstützt. Verwenden Sie zum Aktivieren dieses Features die aspnet:UseRandomizedStringHashAlgorithm-Konfigurationseinstellung.

      
      <appSettings>
         <add key="aspnet:UseRandomizedStringHashAlgorithm" value="true|false" />
      </appSettings>
      
      
  • ADO.NET

    ADO .NET unterstützt jetzt das in SQL Server 2016 Community Technology Preview 2 (CTP2) verfügbare Feature zum grundsätzlichen Verschlüsseln. Mit der grundsätzlichen Verschlüsselung kann SQL Server Operationen zu verschlüsselten Daten durchführen und das Beste ist, der Verschlüsselungsschlüssel ist bei der Anwendung in der vertrauenswürdigen Umgebung des Kunden abgelegt, nicht auf dem Server. Die grundsätzliche Verschlüsselung sichert Kundendaten so, dass DBAs keinen Zugriff auf Textdaten haben. Die Verschlüsselung und Entschlüsselung von Daten erfolgt transparent auf Treiberebene, dadurch werden die an vorhandenen Anwendungen erforderlichen Änderungen auf ein Mindestmaß reduziert. Weitere Informationen finden Sie unter Always Encrypted (Datenbankmodul) und Always Encrypted (Cliententwicklung).

  • 64-Bit-JIT-Compiler für verwalteten Code

    .NET Framework 4.6 umfasst eine neue Version des 64-Bit-JIT-Compilers (ursprünglicher Codename „RyuJIT“). Der neue 64-Bit-Compiler bietet erhebliche Leistungsverbesserungen im Vergleich zum älteren 64-Bit-JIT-Compiler. Der neue 64-Bit-Compiler wird für 64-Bit-Prozesse aktiviert, die zusätzlich zu .NET Framework 4.6 ausgeführt werden. Ihre App wird in einem 64-Bit-Prozess ausgeführt, wenn sie als 64 Bit oder AnyCPU kompiliert ist und auf einem 64-Bit-Betriebssystem ausgeführt wird. Obwohl der Übergang zum neuen Compiler so transparent wie möglich verlief, sind Änderungen im Verhalten möglich. Wir möchten Sie bitten, uns direkt über Probleme zu informieren, die beim Verwenden des neuen JIT-Compilers auftreten. Kontaktieren Sie uns über Microsoft Connect, wenn Sie ein Problem feststellen, das möglicherweise mit dem neuen 64-Bit-JIT-Compiler zusammenhängt.

    Der neue 64-Bit-Compiler umfasst zudem Hardware-SIMD-Beschleunigungsfeatures, wenn er mit SIMD-fähigen Typen im System.Numerics-Namespace gekoppelt wird, was zu Leistungsverbesserungen führen kann.

  • Verbesserungen am Assemblyladeprogramm

    Das Assemblyladeprogramm verwendet nun den Arbeitsspeicher effizienter, indem IL-Assemblys entladen werden, nachdem ein entsprechendes NGEN-Image geladen wurde. Durch diese Änderung wird der virtuelle Arbeitsspeicher verringert. Dies ist besonders bei großen 32-Bit-Apps (wie Visual Studio) hilfreich. Zudem wird dadurch physischer Arbeitsspeicher eingespart.

  • Änderungen an Basisklassenbibliotheken

    Viele neue APIs wurden im Umfeld von .NET Framework 4.6 hinzugefügt, um wichtige Szenarios zu ermöglichen. Dazu zählen die folgenden Änderungen und Ergänzungen:

    • IReadOnlyCollection<T>-Implementierungen

      Zusätzliche Auflistungen implementieren IReadOnlyCollection<T> wie Queue<T> und Stack<T>.

    • CultureInfo.CurrentCulture und CultureInfo.CurrentUICulture

      Die Eigenschaften CultureInfo.CurrentCulture und CultureInfo.CurrentUICulture sind jetzt schreib- und lesbar, statt schreibgeschützt. Wenn Sie diesen Eigenschaften ein neues CultureInfo-Objekt zuweisen, ändern sich ebenfalls die aktuelle Threadkultur, die durch die Eigenschaft Thread.CurrentThread.CurrentCulture definiert ist, sowie die aktuelle UI-Threadkultur, die durch die Eigenschaft Thread.CurrentThread.CurrentUICulture definiert ist.

    • Verbesserungen bei der Garbage Collection (GC)

      Die GC-Klasse enthält nun die Methoden TryStartNoGCRegion und EndNoGCRegion, die es Ihnen ermöglichen, die Garbage Collection während der Ausführung eines kritischen Pfads zu unterbinden.

      Eine neue Überladung der GC.Collect(Int32, GCCollectionMode, Boolean, Boolean)-Methode erlaubt Ihnen die Kontrolle, ob für den kleinen und großen Objektheap eine Komprimierung und ein Sweep ausgeführt werden, ober ob nur ein Sweep für sie ausgeführt wird.

    • SIMD-fähige Typen

      Der System.Numerics-Namespace enthält nun eine Reihe von SIMD-fähigen Datentypen wie Matrix3x2, Matrix4x4, Plane, Quaternion, Vector2, Vector3 und Vector4.

      Da der neue 64-Bit-JIT-Compiler zudem Hardware-SIMD-Beschleunigungsfeatures enthält, liegen insbesondere erhebliche Leistungsverbesserungen beim Verwenden von SIMD-fähigen Typen mit dem neuen 64-Bit-JIT-Compiler vor.

    • Kryptografieupdates

      Die System.Security.Cryptography-API wird aktualisiert, um die Kryptografie-APIs von Windows CNG zu unterstützen. Frühere Versionen von .NET Framework basierten vollständig auf einer früheren Version der Kryptografie-APIs von Windows als Grundlage für die System.Security.Cryptography-Implementierung. Benutzer forderten die Unterstützung der CNG-API, da diese moderne Kryptografiealgorithmen unterstützt, die für bestimmte Kategorien von Apps wichtig sind.

      .NET Framework 4.6 umfasst die folgenden neuen Erweiterungen, um die Kryptografie-API von Windows CNG zu unterstützen:

      • Ein Satz von Erweiterungsmethoden für X509-Zertifikate, System.Security.Cryptography.X509Certificates.RSACertificateExtensions.GetRSAPublicKey(System.Security.Cryptography.X509Certificates.X509Certificate2) und System.Security.Cryptography.X509Certificates.RSACertificateExtensions.GetRSAPrivateKey(System.Security.Cryptography.X509Certificates.X509Certificate2), die nach Möglichkeit anstelle einer CAPI-basierten Implementierung eine CNG-basierte Implementierung zurückgeben. (Für einige Smartcards usw. ist weiterhin CAPI erforderlich, und die APIs verarbeiten den Fallback).

      • Die System.Security.Cryptography.RSACng-Klasse, die eine CNG-Implementierung des RSA-Algorithmus bereitstellt.

      • Erweiterungen an der RSA-API, damit für allgemeine Aktionen keine Umwandlung mehr erforderlich ist. Beispielsweise war für das Verschlüsseln von Daten mithilfe eines X509Certificate2-Objekts Code wie der folgende in vorherigen Versionen von .NET Framework erforderlich.

        RSACryptoServiceProvider rsa = (RSACryptoServiceProvider)cert.PrivateKey;
        byte[] oaepEncrypted = rsa.Encrypt(data, true);
        byte[] pkcs1Encrypted = rsa.Encrypt(data, false);
        

        Code, der die neuen Kryptografie-APIs in .NET Framework 4.6 verwendet, kann wie folgt umgeschrieben werden, um die Umwandlung zu vermeiden.

        RSA rsa = cert.GetRSAPrivateKey();
        if (rsa == null)
           throw new InvalidOperationException("An RSA certificate was expected");
        
        byte[] oaepEncrypted = rsa.Encrypt(data, RSAEncryptionPadding.OaepSHA1);
        byte[] pkcs1Encrypted = rsa.Encrypt(data, RSAEncryptionPadding.Pkcs1);
        


    • Unterstützung für das Konvertieren von Datumsangaben und Uhrzeiten zur oder aus der Unix-Zeit

      Die folgenden neuen Methoden wurden zur DateTimeOffset-Struktur hinzugefügt, um das Konvertieren von Datums- und Uhrzeitangaben zur oder aus der Unix-Zeit zu unterstützen:

    • Kompatibilitätsoptionen

      Die neue AppContext-Klasse fügt eine neue Kompatibilitätsfunktion hinzu, die es Bibliotheksautoren ermöglicht, ihren Benutzern einen einheitlichen Abwahlmechanismus für neue Funktionalitäten bereitzustellen. Sie richtet einen lose gekoppelten Vertrag zwischen den Komponenten ein, um eine Anforderung zur Abwahl zu übermitteln. Diese Möglichkeit ist in der Regel wichtig, wenn vorhandene Funktionalitäten verändert werden. Im Gegensatz dazu existiert bereits eine implizite Auswahloption für neue Funktionalitäten.

      Mit AppContext definieren Bibliotheken Kompatibilitätsoptionen und machen diese verfügbar, während im Code, der von diesen Bibliotheken abhängig ist, diese Optionen festgelegt werden können, um das Verhalten der Bibliothek zu beeinflussen. Standardmäßig stellen Bibliotheken die neue Funktionalität bereit. Nur wenn die Option festgelegt ist, stellen sie die vorherige Funktionalität bereit.

      Eine Anwendung (oder eine Bibliothek) kann den Wert einer Option deklarieren (hierbei handelt es sich immer um einen Boolean-Wert), die von einer abhängige Bibliothek definiert wird. Die Option ist immer implizit false. Durch Festlegen der Option auf true wird diese aktiviert. Durch explizites Festlegen der Option auf false wird das neue Verhalten aktiviert.

      AppContext.SetSwitch("Switch.AmazingLib.ThrowOnException", true);
      

      Die Bibliothek muss überprüfen, ob ein Consumer den Wert der Option deklariert hat, und dann entsprechend reagieren.

      
      if (!AppContext.TryGetSwitch("Switch.AmazingLib.ThrowOnException", out shouldThrow)) 
      {
         // This is the case where the switch value was not set by the application. 
         // The library can choose to get the value of shouldThrow by other means. 
         // If no overrides nor default values are specified, the value should be 'false'. 
         // A false value implies the latest behavior.
      }
      
         // The library can use the value of shouldThrow to throw exceptions or not.
         if (shouldThrow) 
         {
            // old code
         }
         else {
            // new code
         }
      }
      
      

      Es empfiehlt sich, ein konsistentes Format für Optionen zu verwenden, da es sich hierbei um eine formellen Vertrag handelt, der von einer Bibliothek verfügbar gemacht wird. Das folgende Beispiel zeigt zwei offensichtliche Formate.

      • Switch.namespace.switchname

      • Switch.library.switchname

    • Änderungen am aufgabenbasierten asynchronen Entwurfsmuster (TAP)

      Bei Apps, die auf .NET Framework 4.6 ausgerichtet sind, erben Task- und Task<TResult>-Objekte die Kultur und die UI-Kultur des aufrufenden Threads. Das Verhalten von Apps, die mit früheren Versionen von .NET Framework arbeiten oder auf keine bestimmte Version von .NET Framework ausgelegt sind, ist davon nicht betroffen. Weitere Informationen finden Sie im Abschnitt "Kultur und aufgabenbasierte asynchrone Vorgänge" im Thema zur CultureInfo-Klasse.

      Die System.Threading.AsyncLocal<T>-Klasse ermöglicht Ihnen das Darstellen von Umgebungsdaten, die für eine angegebene asynchrone Ablaufsteuerung wie eine async-Methode lokal sind. Sie kann zum threadübergreifenden Beibehalten von Daten verwendet werden. Sie können zudem eine Rückrufmethode definieren, die benachrichtigt wird, sobald sich die Umgebungsdaten ändern, und zwar entweder aufgrund der expliziten Änderung der AsyncLocal<T>.Value-Eigenschaft oder weil der Thread einen Kontextübergang ermittelt hat.

      Dem aufgabenbasierten asynchronem Muster (Task-based Asynchronous Pattern, TAP) wurden die drei Hilfsmethoden Task.CompletedTask, Task.FromCanceled und Task.FromException hinzugefügt, um abgeschlossene Aufgaben in einem bestimmten Status zurückzugeben.

      Die NamedPipeClientStream-Klasse unterstützt nun die asynchrone Kommunikation mit der zugehörigen ConnectAsync -Methode.

    • EventSource unterstützt jetzt das Schreiben in das Ereignisprotokoll

      Sie können nun die EventSource-Klasse verwenden, um Verwaltungs- oder betriebliche Nachrichten in das Ereignisprotokoll zu schreiben, und zwar zusätzlich zu vorhandenen auf dem Computer erstellten ETW-Sitzungen. Früher mussten Sie das „Microsoft.Diagnostics.Tracing.EventSource“-NuGet-Paket für diese Funktionalität verwenden. Diese Funktionalität ist nun in .NET Framework 4.6 integriert.

      Sowohl das NuGet-Paket als auch .NET Framework 4.6 wurden mit den folgenden Features aktualisiert:

      • Dynamische Ereignisse

        Ermöglichen das „spontane“ Definieren von Ereignissen, und zwar ohne das Erstellen von Ereignismethoden.

      • Umfangreiche Nutzlasten

        Ermöglicht, dass speziell attributierte Klassen und Arrays sowie primitive Typen als eine Nutzlast übergeben werden.

      • Aktivitätsnachverfolgung

        Löst Start- und Stoppereignisse aus, um Ereignisse zwischen ihnen mit einer ID zu kennzeichnen, die alle aktuell aktiven Aktivitäten darstellt.

      Zum Unterstützen dieses Features wurde der EventSource-Klasse die überladene Write-Methode hinzugefügt.

  • Windows Presentation Foundation (WPF)

    • HDPI-Verbesserungen

      Die HDPI-Unterstützung in WPF ist nun besser in .NET Framework 4.6. Es wurden Änderungen an der Layoutglättung vorgenommen, um die Instanzen von Clipping in Steuerelementen mit Begrenzungen zu reduzieren. Standardmäßig wird dieses Feature nur aktiviert, wenn TargetFrameworkAttribute auf „.NET 4.6“ festgelegt ist.  Anwendungen, die auf frühere Versionen des Frameworks abzielen, aber auf .NET Framework 4.6 ausgeführt werden, können das neue Verhalten übernehmen, indem die folgende Zeile zum Abschnitt „<runtime>“ der Datei „app.config“ hinzugefügt wird:

      
      <AppContextSwitchOverrides
      value="Switch.MS.Internal.DoNotApplyLayoutRoundingToMarginsAndBorderThickness=false"
      />
      
      

      Sich auf mehrere Monitore erstreckende WPF-Fenster mit unterschiedlichen DPI-Einstellungen (Multi-DPI-Einrichtung) wurden nun vollständig gerendert, und zwar ohne verdunkelte Bereiche. Sie können dieses Verhalten deaktivieren, indem Sie die folgende Zeile zum <appSettings>-Abschnitt der Datei „app.config“ hinzufügen, um dieses neue Verhalten zu deaktivieren:

      
      <add key="EnableMultiMonitorDisplayClipping" value="true"/>
      
      

      Unterstützung für das automatische Lade des richtigen Cursors, und zwar abhängig davon, ob die DPI-Einstellung zu System.Windows.Input.Cursor hinzugefügt wurde.

    • Toucheingabe ist besser

      Über Connect meldet der Kunde, dass das unvorhersehbare Verhalten der Toucheingabe in .NET Framework 4.6 behoben wurde. Der Schwellenwert für das Doppeltippen für Windows Store- und WPF-Anwendungen entspricht nun dem in Windows 8.1 und höher.

    • Unterstützung für das transparente untergeordnete Fenster

      WPF in .NET Framework 4.6 unterstützte transparente untergeordnete Fenster in Windows 8.1 und höher. Dadurch können Sie untergeordnete Fenster, die weder viereckig noch transparent sind, in Ihren Fenstern auf oberster Ebene erstellen. Sie können diese Funktion aktivieren, indem Sie die HwndSourceParameters.UsesPerPixelTransparency-Eigenschaft auf true festlegen.

  • Windows Communication Foundation (WCF)

    • SSL-Unterstützung

      WCF unterstützt nun SSL Version TLS 1.1 und TLS 1.2 neben SSL 3.0 und TLS 1.0 beim Verwenden von NetTcp mit Transportsicherheit und Clientauthentifizierung. Es ist nun möglich, auszuwählen, welches Protokoll verwendet werden soll, oder ältere und zugleich unsicherere Protokolle zu deaktivieren. Dies kann durch das Einstellen der SslProtocols-Eigenschaft oder durch das Hinzufügen der folgenden Elemente zu einer Konfigurationsdatei erfolgen.

      <netTcpBinding>
         <binding>
            <security mode= "None|Transport|Message|TransportWithMessageCredential" >
               <transport clientCredentialType="None|Windows|Certificate"
                          protectionLevel="None|Sign|EncryptAndSign"
                          sslProtocols="Ssl3|Tls1|Tls11|Tls12">
                  </transport>
            </security>
         </binding>
      </netTcpBinding>
      
      
    • Senden von Nachrichten mithilfe von unterschiedlichen HTTP-Verbindungen

      WCF ermöglicht Benutzern nun, sicherzustellen, dass bestimmte Nachrichten unter Verwendung von zugrunde liegenden HTTP-Verbindungen gesendet wurden. Hierfür gibt es zwei Möglichkeiten:

      • Verwenden eines Verbindungsgruppen-Namenspräfix

        Benutzer können eine Zeichenfolge angeben, die WCF als ein Präfix für den Verbindungsgruppennamen verwendet. Unter Verwendung von unterschiedlichen zugrunde liegenden HTTP-Verbindungen werden zwei Nachrichten mit unterschiedlichen Präfixen gesendet. Sie legen das Präfix fest, indem Sie ein Schlüssel-/Wert-Paar zur Message.Properties-Eigenschaft der Nachricht hinzufügen. Der Schlüssel lautet "HttpTransportConnectionGroupNamePrefix". Beim Wert handelt es sich um das gewünschte Präfix.

      • Verwenden von unterschiedlichen Kanalfaktoren

        Benutzer können zudem ein Feature aktivieren, das sicherstellt, dass die mithilfe von anhand unterschiedlicher Kanalfaktoren erstellten Kanälen gesendeten Nachrichten unterschiedliche zugrunde liegende HTTP-Verbindungen verwenden. Zum Aktivieren dieses Features müssen die Benutzer die folgende appSetting auf true festlegen:

        
        <appSettings>
           <add key="wcf:httpTransportBinding:useUniqueConnectionPoolPerFactory" value="true" />
        </appSettings>
        
        
  • Windows Workflow Foundation (WWF)

    Sie können nun die Anzahl der Sekunden angeben, die ein Workflowdienst an einer gestörten Vorgangsanforderung festhält, wenn ein ausstehendes Nicht-Protokoll-Lesezeichen vorliegt, bevor für die Anforderung ein Timeout ausgelöst wird. Ein Nicht-Protokoll-Lesezeichen ist ein Lesezeichen, das nicht mit ausstehenden Receive-Aktivitäten verknüpft ist. Bei einigen Aktivitäten werden Nicht-Protokoll-Lesezeichen in ihrer Implementierung erstellt. Es ist daher ggf. nicht offensichtlich, ob ein Nicht-Protokoll-Lesezeichen vorhanden ist. Dazu zählen der Status und die Auswahl. Wenn Sie über einen Workflowdienst verfügen, der mit einem Statuscomputer implementiert wurde oder eine Auswahlaktivität enthält, verfügen Sie sehr wahrscheinlich über Nicht-Protokoll-Lesezeichen. Sie geben das Intervall an, indem Sie eine Zeile wie die folgende zum appSettings-Abschnitt Ihrer „app.config“-Datei hinzufügen:

    <add key="microsoft:WorkflowServices:FilterResumeTimeoutInSeconds" value="60"/>
    

    Der Standardwert beträgt 60 Sekunden. Wenn value auf „0“ festgelegt ist, werden gestörte Anforderungen sofort mit einem Fehlertext abgelehnt, der wie folgt aussieht:

    Der Vorgang 'Request3|{http://tempuri.org/}IService' für die Dienstinstanz mit der ID '2b0667b6-09c8-4093-9d02-f6c67d534292' kann derzeit nicht ausgeführt werden. Stellen Sie sicher, dass die Vorgänge in der richtigen Reihenfolge ausgeführt werden und dass die verwendete Bindung Garantien zur sortierten Übermittlung bereitstellt.

    Hierbei handelt es sich um dieselbe Meldung, die Sie empfangen, wenn Sie eine Meldung in Bezug auf einen gestörten Vorgang empfangen und keine Nicht-Protokoll-Lesezeichen vorliegen.

    Wenn der Wert des FilterResumeTimeoutInSeconds-Elements nicht null entspricht, liegen keine Nicht-Protokoll-Lesezeichen vor, und das Timeoutintervall läuft ab, wobei beim Vorgang Fehler auftreten und eine Timeoutmeldung angezeigt wird.

  • Transaktionen

    Sie können die ID für die verteilte Transaktion nun für die Transaktion einbeziehen, die eine Ausnahme verursacht hat, die von der auszulösenden TransactionException abgeleitet wurde. Hierzu müssen Sie den folgenden Schlüssel zum appSettings-Abschnitt Ihrer „app.config“-Datei hinzufügen.

    <add key="Transactions:IncludeDistributedTransactionIdInExceptionMessage" value="true"/> 
    

    Der Standardwert ist false.

  • Netzwerk

    • Socket-Wiederverwendung

      Windows 10 umfasst einen neuen hochskalierbaren Netzwerkalgorithmus, der eine bessere Verwendung von Computerressourcen ermöglicht, indem lokale Ports für ausgehende TCP-Verbindungen verwendet werden. .NET Framework 4.6 unterstützt den neuen Algorithmus, wodurch .NET-Apps von diesem neuen Verhalten profitieren können. In früheren Windows-Versionen gab es einen Grenzwert für gleichzeitige, künstliche Verbindungen (für gewöhnlich 16.384, die Standardgröße des dynamischen Portbereichs), wodurch die Skalierbarkeit eines Diensts begrenzt werden konnte, indem unter Lastbedingungen eine Portauslastung verursacht werden konnte.

      In .NET Framework 4.6 wurden zwei neue APIs hinzugefügt, um die Portwiederverwendung zu aktivieren, wodurch die 64K-Begrenzung für gleichzeitige Verbindungen effektiv entfernt wurde:

      Standardmäßig lautet die ServicePointManager.ReusePort-Eigenschaft false, sofern der HWRPortReuseOnSocketBind-Wert des HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319-Registrierungsschlüssels nicht auf „0x1“ festgelegt ist. Legen Sie zum Aktivieren der lokalen Portwiederverwendung bei HTTP-Verbindungen die ServicePointManager.ReusePort-Eigenschaft auf true fest. Dadurch verwenden alle ausgehenden TCP-Socketverbindungen von HttpClient und HttpWebRequest die neue Windows 10-Socketoption SO_REUSE_UNICASTPORT, die die lokale Portwiederverwendung ermöglicht.

      Entwickler, die Nur-Socketanwendungen schreiben, können die SocketOptionName.ReuseUnicastPort-Option beim Aufrufen einer Methode wie Socket.SetSocketOption angeben, sodass die ausgehenden Sockets die lokale Ports während der Bindung erneut verwenden.

    • Unterstützung für internationale Domänennamen und PunyCode

      Der Klasse Uri wurde die neue Eigenschaft IdnHost hinzugefügt, um internationale Domänennamen und PunyCode besser zu unterstützen.

  • Größenänderungen in Windows Forms-Steuerelementen.

    Diese Funktion wurde in .NET Framework 4.6 so erweitert, dass sie jetzt die Typen DomainUpDown, NumericUpDown, DataGridViewComboBoxColumn, DataGridViewColumn und ToolStripSplitButton beinhaltet sowie das durch die Bounds-Eigenschaft angegebene Rechteck, das beim Zeichnen eines UITypeEditor verwendet wird.

    Dies ist ein Opt-in-Feature. Setzen Sie das EnableWindowsFormsHighDpiAutoResizing-Element in der Anwendungskonfigurationsdatei (app.config) auf true, um dieses Feature zu aktivieren:

    
    <appSettings>
       <add key="EnableWindowsFormsHighDpiAutoResizing" value="true" />
    </appSettings>
    
    

  • Unterstützung für Codepagecodierungen

    .NET Core unterstützt primär Unicode-Codierungen und bietet standardmäßig eingeschränkte Unterstützung für Codepagecodierungen. Sie können Unterstützung für Codeseitencodierungen, die in .NET Framework verfügbar sind, aber in .NET Core nicht unterstützt werden, verfügbar machen, indem Sie Codeseitencodierungen mit der Encoding.RegisterProvider-Methode registrieren. Weitere Informationen finden Sie unter System.Text.CodePagesEncodingProvider.

  • .NET systemeigen

    Windows-Apps für Windows 10, die auf .NET Core ausgerichtet und in C# oder Visual Basic geschrieben sind, können eine neue Technologie nutzen, die Apps in systemeigenen Code kompiliert statt in IL. Sie erzeugen Apps, die sich durch kürzere Start- und Ausführungszeiten auszeichnen. Weitere Informationen finden Sie unter Kompilieren von Anwendungen mit .NET Native. Eine Übersicht über .NET Native, in der untersucht wird, wie es sich sowohl von der JIT-Kompilierung als auch von NGEN unterscheidet und was dies für Ihren Code bedeutet, finden Sie unter .NET Native und Kompilierung.

    Ihre Apps werden beim Kompilieren mit Visual Studio 2015 standardmäßig in systemeigenen Code kompiliert. Weitere Informationen finden Sie unter Erste Schritte mit .NET Native.

    Um das Debuggen von .NET Native-Apps zu unterstützen, wurden der API für nicht verwaltetes Debugging eine Reihe neuer Schnittstellen und Enumerationen hinzugefügt. Weitere Informationen finden Sie im Thema Debuggen (Referenz zur nicht verwalteten API).

  • Open-Source-Pakete von .NET Framework

    .NET Core-Pakete wie das immutable collections-Paket, SIMD APIs und Netzwerk-APIs wie diejenigen aus dem System.Net.Http-Namespace stehen jetzt als Open Source-Pakete auf GitHub zur Verfügung. Informationen über den Codezugriff finden Sie unter NetFx auf GitHub. Weitere Informationen und wie Sie zu diesen Paketen beitragen können, finden Sie unter .NET Core und Open-Source, .NET-Homepage auf GitHub.

Zurück nach oben

Zurück nach oben

Updates für April 2014:

  • Visual Studio 2013 Update 2 enthält Updates für die Vorlagen der portablen Klassenbibliothek, um die folgenden Szenarien zu unterstützen:

    • Sie können die Windows-Runtime APIs in portablen Bibliotheken einsetzen, die Windows 8.1, Windows Phone 8.1 und Windows Phone Silverlight 8.1 als Ziel verwenden.

    • Sie können XAML (Windows.UI.XAML-Typen) in portablen Bibliotheken einsetzen, wenn Sie Windows 8.1 oder Windows Phone 8.1 als Ziel verwenden. Die folgenden XAML-Vorlagen werden unterstützt: Leere Seite, Ressourcenverzeichnis, Steuerelement mit Vorlagen und Benutzersteuerelement.

    • Sie können eine portable Komponente für Windows-Runtime (.winmd-Datei) für den Einsatz in Store-Apps erstellen, die Windows 8.1 und Windows Phone 8.1 als Ziel verwenden.

    • Sie können eine Windows Store- oder Windows Phone Store-Klassenbibliothek wie eine portable Klassenbibliothek neu zuweisen.

    Weitere Informationen zu diesen Änderungen finden Sie unter Plattformübergreifende Entwicklung mit der portablen Klassenbibliothek.

  • Der .NET Framework-Inhaltssatz enthält nun Dokumentation für .NET systemeigen, eine Vorkompilierungstechnologie für die Erstellung und Bereitstellung von Windows-Apps..NET systemeigen kompiliert Ihre Apps direkt in systemeigenen Code anstelle einer Intermediate Language (IL) und erzielt dadurch eine bessere Leistung. Ausführliche Informationen finden Sie unter Kompilieren von Anwendungen mit .NET Native.

  • Die .NET Framework-Verweisquelle bietet ein neues Browsererlebnis und erweiterte Funktionen. Sie können den Quellcode von .NET Framework online durchsuchen, die Referenz herunterladen, um diese offline anzuzeigen, und den Quellcode (inklusive Patches und Updates) beim Debuggen schrittweise durchlaufen. Weitere Informationen finden Sie im Blogeintrag A new look for .NET Reference Source.

.NET Framework 4.5.1 enthält die folgenden neuen Kernfunktionen und -optimierungen:

  • Automatische Bindungsumleitung für Assemblys. Ab Visual Studio 2013 können beim Kompilieren einer App, deren Ziel .NET Framework 4.5.1 ist, Bindungsumleitungen zur App-Konfigurationsdatei hinzugefügt werden, wenn die App oder ihre Komponenten sich auf mehrere Versionen derselben Assembly beziehen. Sie können diese Funktion auch für Projekte aktivieren, die frühere Versionen von .NET Framework als Ziel haben. Weitere Informationen finden Sie unter Gewusst wie: Aktivieren und Deaktivieren der Bindungsumleitung.

  • Fähigkeit, Diagnoseninformationen zu erfassen, um Entwicklern zu helfen, die Leistung von Server- und Cloud-Anwendungen zu verbessern. Weitere Informationen finden Sie unter den WriteEventWithRelatedActivityId- und WriteEventWithRelatedActivityIdCore-Methoden in der EventSource-Klasse.

  • Fähigkeit, während einer Garbage Collection den großen Objektheap (Large Object Heap, LOH) explizit zu komprimieren. Weitere Informationen finden Sie in den Ausführungen zur GCSettings.LargeObjectHeapCompactionMode-Eigenschaft.

  • Zusätzliche Leistungsverbesserungen wie ASP.NET-App-Unterbrechung, Multikern-JIT-Verbesserungen und schnellere App-Starts nach einem .NET Framework-Update. Ausführliche Informationen finden Sie in der .NET Framework 4.5.1-Ankündigung und im Blogbeitrag ASP.NET App Suspend.

Verbesserungen für Windows Forms-Anwendungen:

  • Größenänderungen in Windows Forms-Steuerelementen. Sie können die systemeigene DPI-Einstellung verwenden, um die Größe von Komponenten von Steuerelementen anzupassen (z. B. die Symbole in einem Eigenschaftenraster), indem Sie diese Funktion über einen Eintrag in der Anwendungskonfigurationsdatei (app.config) für Ihre App aktivieren. Dieses Feature wird zurzeit für die folgenden Windows Forms-Steuerelemente unterstützt:

    PropertyGrid
    TreeView
    Einige Aspekte von DataGridView (siehe Neue Features in 4.5.2 für weitere unterstützte Steuerelemente)

    Fügen Sie ein neues <appSettings>-Element zur Konfigurationsdatei (app.config) hinzu und setzen Sie das EnableWindowsFormsHighDpiAutoResizing-Element auf true, um dieses Feature zu aktivieren:

    <appSettings>
       <add key="EnableWindowsFormsHighDpiAutoResizing" value="true" />
    </appSettings>
    

Zu Verbesserungen beim Debuggen Ihrer .NET Framework-Apps in Visual Studio 2013 zählen:

  • Rückgabewerte im Visual Studio-Debugger. Wenn Sie eine verwaltete App in Visual Studio 2013 debuggen, werden Rückgabetypen und -werte für Methoden im Fenster "Auto" angezeigt. Diese Informationen sind für Desktop-, Windows Store- und Windows Phone-Apps verfügbar. Weitere Informationen finden Sie unter Überprüfen von Rückgabewerten der Methodenaufrufe in der MSDN Library.

  • "Bearbeiten und Fortfahren" für 64-Bit-Apps.Visual Studio 2013 unterstützt die Funktion "Bearbeiten und Fortfahren" für verwaltete 64-Bit-Apps für Desktops, Windows Store und Windows Phone. Die vorhandenen Einschränkungen bleiben für 32-Bit- und 64-Bit-Apps wirksam (siehe den letzten Abschnitt des Artikels Unterstützte Codeänderungen (C#)).

  • Async-bewusstes Debuggen. Um das Debuggen asynchroner Apps in Visual Studio 2013 zu vereinfachen, wird der Infrastrukturcode, der von Compilern zur Unterstützung asynchronen Programmierens bereitgestellt wird, in der Aufrufliste ausgeblendet. Ebenfalls erfolgt dort eine Verkettung mit logisch übergeordneten Rahmen, sodass der logischen Programmausführung übersichtlicher gefolgt werden kann. Ein Aufgabenfenster ersetzt das Fenster "Parallele Aufgaben" und zeigt Aufgaben an, die sich auf einen bestimmten Haltepunkt beziehen. Außerdem werden alle anderen Aufgaben angezeigt, die momentan aktiv oder in der App geplant sind. Informationen zu dieser Funktion finden Sie im Abschnitt "Async-bewusstes Debuggen" in der .NET Framework 4.5.1-Ankündigung.

  • Bessere Ausnahmeunterstützung für Windows-Runtime-Komponenten. In Windows 8.1 behalten Ausnahmen, die sich aus Windows Store-Apps ergeben, Informationen zum Fehler, der die Ausnahme ausgelöst hat, sogar über Sprachgrenzen bei. Informationen über diese Funktion finden Sie im Abschnitt "Windows Store-App-Entwicklung" in der .NET Framework 4.5.1-Ankündigung.

Ab Visual Studio 2013 können Sie zusätzlich das Managed Profile Guided Optimization Tool (Mpgo.exe) verwenden, um sowohl Windows 8.x Store-Apps als auch Desktop-Apps zu optimieren.

Informationen zu neuen Funktionen in ASP.NET 4.5.1 finden Sie unter ASP.NET 4.5.1 und Visual Studio 2013 auf der ASP.NET-Website.

Zurück nach oben

  • Weniger Systemneustarts durch Erkennen und Schließen von .NET Framework 4-Anwendungen bei der Bereitstellung. Siehe Reduzieren von Systemneustarts bei .NET Framework 4.5-Installationen.

  • Unterstützung von mehr als 2 Gigabyte (GB) großen Arrays auf 64-Bit-Plattformen. Sie können die Funktion in der Anwendungskonfiguration aktivieren. Siehe das <gcAllowVeryLargeObjects>-Element, das auch andere Einschränkungen zur Objekt- und Arraygröße auflistet.

  • Bessere Leistung durch Garbage Collection im Hintergrund für Server. Wenn Sie die Garbage Collection auf dem Server in .NET Framework 4.5 verwenden, wird die Garbage Collection im Hintergrund automatisch aktiviert. Siehe den Abschnitt "Garbage Collection auf dem Server im Hintergrund" im Thema Fundamentals of Garbage Collection.

  • Just-In-Time (JIT)-Kompilierung im Hintergrund zur Verbesserung der Anwendungsleistung, die optional auf Mehrkernprozessoren verfügbar ist. Siehe ProfileOptimization.

  • Festlegen der Zeit, die das Modul für reguläre Ausdrücke zum Auflösen eines regulären Ausdrucks bis zum Timeout benötigen darf. Siehe Regex.MatchTimeout-Eigenschaft.

  • Definieren der Standardkultur für eine Anwendungsdomäne. Weitere Informationen finden Sie unter der CultureInfo-Klasse.

  • Konsolenunterstützung für Unicode-Codierung (UTF-16). Weitere Informationen finden Sie unter der Console-Klasse.

  • Unterstützung für die Versionierung kulturabhängiger Zeichenfolgenreihenfolgen und -vergleichsdaten. Weitere Informationen finden Sie unter der SortVersion-Klasse.

  • Bessere Leistung beim Abrufen von Ressourcen. Siehe Verpacken und Bereitstellen von Ressourcen in Desktop-Apps.

  • Verbesserte ZIP-Komprimierung zur Reduzierung der Größe einer komprimierten Datei. Siehe System.IO.Compression-Namespace.

  • Anpassen von Reflektionskontext zum Überschreiben des Standardreflektionsverhaltens mit der CustomReflectionContext-Klasse.

  • Unterstützung der Version 2008 des IDNA-Standards (Internationalized Domain Names in Applications) beim Verwenden der System.Globalization.IdnMapping-Klasse in Windows 8.

  • Delegieren des Zeichenfolgenvergleichs an das Betriebssystem, wobei Unicode 6.0 implementiert wird, wenn .NET Framework in Windows 8 verwendet wird. Bei Ausführung auf anderen Plattformen verwendet .NET Framework eigene Zeichenfolgenvergleichsdaten, wobei Unicode 5.x. implementiert wird. Siehe String-Klasse und den Abschnitt "Hinweise" der SortVersion-Klasse.

  • Berechnen der Hashcodes für Zeichenfolgen pro Anwendungsdomäne. Siehe <UseRandomizedStringHashAlgorithm>-Element.

  • Typspiegelung unterstützt eine Teilung zwischen Type und TypeInfo-Klassen. Siehe Reflection in the .NET Framework for Windows Store Apps.

In .NET Framework 4.5 bietet das Managed Extensibility Framework (MEF) folgende neue Funktionen:

  • Unterstützung von generischen Typen.

  • Konventionsbasiertes Programmiermodell zum Erstellen von Teilen auf Grundlage von Namenskonventionen anstelle von Attributen.

  • Mehrere Bereiche.

  • Eine Teilmenge von MEF, die Sie verwenden können, wenn Sie Apps im Windows 8.x Store erstellen. Diese Teilmenge steht als herunterladbares Paket in der NuGet Gallery zur Verfügung. Öffnen Sie zum Installieren des Pakets das Projekt in Visual Studio, wählen Sie im Menü Projekt die Option NuGet-Pakete verwalten aus, und suchen Sie online nach dem Microsoft.Composition-Paket.

Weitere Informationen finden Sie unter Managed Extensibility Framework (MEF).

In .NET Framework 4.5 wurden neue asynchrone Funktionen zu den Programmiersprachen C# und Visual Basic hinzugefügt. Diese Funktionen ergänzen ein aufgabenbasiertes Modell zum Ausführen von asynchronen Vorgängen. Verwenden Sie dieses neue Modell mithilfe der asynchronen Methoden in den E/A-Klassen. Siehe Asynchrone Datei E-A.

In .NET Framework 4.5 können Sie mit dem Resource File Generator-Tool (Resgen.exe) aus einer RESOURCES-Datei, die in einer .NET Framework-Assembly eingebettet ist, eine RESW-Datei für Windows 8.x Store-Apps erstellen. Weitere Informationen finden Sie unter Resgen.exe (Resource File Generator).

Mit Managed Profile Guided Optimization (Mpgo.exe) können Sie die Anwendungsstartzeit, die Arbeitsspeicherauslastung (Workingsetgröße) und den Durchsatz verbessern, indem Sie die Assemblys systemeigener Abbilder optimieren. Das Befehlszeilentool generiert Profildaten für Anwendungsassemblys systemeigener Abbilder. Siehe Mpgo.exe (Managed Profile Guided Optimization Tool). Ab Visual Studio 2013 können Sie Mpgo.exe verwenden, um Windows 8.x Store-Apps und Desktop-Apps zu optimieren.

.NET Framework 4.5 stellt mehrere neue Funktionen und Verbesserungen für parallele Berechnung bereit. Dazu gehören leistungsfähigere, erweiterte Steuerungsmöglichkeiten, verbesserte Unterstützung für asynchrone Programmierung, eine neue Datenflussbibliothek und verbesserte Unterstützung für paralleles Debuggen und Leistungsanalyse. Siehe den Eintrag zu den Neuerungen hinsichtlich der Parallelität in .NET 4.5 im Blog zur parallelen Programmierung mit .NET.

In ASP.NET 4.5 und 4.5.1 wurden die Modellbindung für Webformulare, WebSocket-Unterstützung, asynchrone Handler, Leistungserweiterungen und viele weitere Funktionen hinzugefügt. Weitere Informationen finden Sie in den folgenden Ressourcen:

.NET Framework 4.5 stellt eine neue Programmierschnittstelle für HTTP-Anwendungen bereit. Weitere Informationen finden Sie in den neuen Namespaces System.Net.Http und System.Net.Http.Headers.

Unterstützt wird jetzt auch eine neue Programmierschnittstelle, um eine WebSocket-Verbindung mithilfe der vorhandenen HttpListener-Klasse und verknüpften Klassen anzunehmen und mit dieser zu interagieren. Weitere Informationen finden Sie im neuen System.Net.WebSockets-Namespace und in der HttpListener-Klasse.

Darüber hinaus enthält .NET Framework 4.5 folgende Netzwerkfunktionsverbesserungen:

  • RFC-kompatible URI-Unterstützung. Weitere Informationen finden Sie in der Uri-Klasse und verknüpften Klassen.

  • Unterstützung für IDN (Internationalized Domain Name)-Analysen. Weitere Informationen finden Sie in der Uri-Klasse und verknüpften Klassen.

  • Unterstützung für E-Mail-Adressen-Internationalisierung (EAI). Weitere Informationen finden Sie unter den Ausführungen zum System.Net.Mail-Namespace.

  • Verbesserte IPv6-Unterstützung. Weitere Informationen finden Sie unter den Ausführungen zum System.Net.NetworkInformation-Namespace.

  • Dual-Modus-Socket-Unterstützung. Weitere Informationen finden Sie in den Ausführungen zur Socket-Klasse und zur TcpListener-Klasse.

In der Version .NET Framework 4.5 wurde Windows Presentation Foundation (WPF) in vielen Bereichen überarbeitet und verbessert. Dazu gehören:

  • Das neue Ribbon-Steuerelement, mit dem Sie eine Menüband-Benutzeroberfläche implementieren können, die eine Symbolleiste für den Schnellzugriff, ein Anwendungsmenü und Registerkarten hostet.

  • Die neue INotifyDataErrorInfo-Schnittstelle, die synchrone und asynchrone Datenvalidierung unterstützt.

  • Neue Funktionen für die VirtualizingPanel- und Dispatcher-Klassen.

  • Verbesserte Leistung beim Anzeigen großer Datengruppierungen sowie durch den Zugriff auf Auflistungen in Nicht-UI-Threads.

  • Datenbindung an statische Eigenschaften, Datenbindung an benutzerdefinierte Typen, die die ICustomTypeProvider-Schnittstelle implementieren, und Abrufen von Datenbindungsinformationen von einem Bindungsausdruck.

  • Neupositionierung von Daten bei Wertänderung (Live-Strukturierung).

  • Die Möglichkeit zu überprüfen, ob der Datenkontext für einen Elementcontainer getrennt ist.

  • Festlegen der Zeit, die zwischen Eigenschaftenänderungen und Datenquellenupdates verstreichen soll.

  • Verbesserte Unterstützung für das Implementieren schwacher Ereignismuster. Zudem können Ereignisse jetzt Markuperweiterungen akzeptieren.

Um das Schreiben und Verwalten von Windows Communication Foundation (WCF)-Anwendungen zu erleichtern, wurden in .NET Framework 4.5 folgende Funktionen hinzugefügt:

  • Vereinfachung von generierten Konfigurationsdateien.

  • Unterstützung für Contract-First-Entwicklung.

  • Leichteres Konfigurieren des ASP.NET-Kompatibilitätsmodus.

  • Änderungen in den standardmäßigen Transporteigenschaftswerten, um die Wahrscheinlichkeit zu reduzieren, dass Sie sie festlegen müssen.

  • Updates der XmlDictionaryReaderQuotas-Klasse, um die Wahrscheinlichkeit zu reduzieren, dass Sie Kontingente für XML-Wörterbuch-Reader manuell konfigurieren müssen.

  • Validierung von WCF-Konfigurationsdateien von Visual Studio als Teil des Buildprozesses, sodass Sie Konfigurationsfehler erkennen können, bevor Sie die Anwendung ausführen.

  • Neue Unterstützung für asynchrones Streaming.

  • Neue HTTPS-Protokollzuordnung zur leichteren Bereitstellung eines Endpunkts über HTTPS mit IIS (Internetinformationsdienste).

  • Generieren von Metadaten in einem einzelnen WSDL-Dokument durch Anfügen von ?singleWSDL an die Dienst-URL.

  • Websockets-Unterstützung für echte bidirektionale Kommunikation über die Ports 80 und 443 mit TCP-transportähnlichen Leistungsmerkmalen.

  • Unterstützung für das Konfigurieren von Diensten im Code.

  • XML-Editor-QuickInfos.

  • Unterstützung von ChannelFactory-Cachediensten.

  • Unterstützung für die Komprimierung binärer Encoder.

  • Unterstützung für einen UDP-Transport, mit dem Entwickler "Fire and Forget" (Auslösen und Vergessen)-Messaging-Dienste schreiben können. Ein Client sendet eine Nachricht an einen Dienst und erwartet von diesem keine Antwort.

  • Unterstützung mehrerer Authentifizierungsmodi auf einem einzelnen WCF-Endpunkt beim Verwenden von HTTP-Transport und -Transportsicherheit.

  • Unterstützung für WCF-Dienste, die internationale Domänennamen (IDNs) verwenden.

Weitere Informationen finden Sie unter Neues in Windows Communication Foundation.

In der Version .NET Framework 4.5 gibt es jetzt viele neue Funktionen in Windows Workflow Foundation (WF), darunter:

  • Zustandsautomatworkflows, die zunächst als Teil von .NET Framework 4.0.1 (.NET Framework 4 Platform-Update 1) eingeführt wurden. Dieses Update umfasste mehrere neue Klassen und Aktivitäten, sodass Entwickler Zustandsautomatworkflows erstellen konnten. Diese Klassen und Aktivitäten wurden für .NET Framework 4.5 aktualisiert und umfassen nun Folgendes:

    • Festlegen von Haltepunkten für Zustände.

    • Kopieren und Einfügen von Übergängen im Workflow Designer.

    • Designerunterstützung für das Erstellen von Übergängen für gemeinsam genutzte Trigger.

    • Aktivitäten zum Erstellen von Zustandsautomatworkflows, einschließlich StateMachine, State und Transition.

  • Verbesserte Workflow Designer-Funktionen, z. B.:

    • Verbesserte Workflowsuchfunktionen in Visual Studio, einschließlich Schnellsuche und In Dateien suchen.

    • Automatisches Erstellen einer Sequenzaktivität, wenn eine zweite untergeordnete Aktivität zu einer Containeraktivität hinzugefügt wird, und Einschließen beider Aktivitäten in die Sequenzaktivität.

    • Schwenk-Unterstützung zur Änderung des sichtbaren Teils eines Workflows ohne die Verwendung von Bildlaufleisten.

    • Die neue Ansicht Dokumentgliederung, die die Gliederungsansicht der Workflowkomponenten in einer Baumstruktur anzeigt und die Auswahl einer Komponente in der Ansicht Dokumentgliederung ermöglicht.

    • Hinzufügen von Anmerkungen zu Aktivitäten.

    • Definieren und Verarbeiten von Aktivitätsdelegaten mit dem Workflow Designer.

    • Automatisches Verbinden und Einfügen für Aktivitäten und Übergänge in Zustandsautomaten- und Flussdiagrammworkflows.

  • Speichern der Ansichtszustandsinformationen für einen Workflow in einem einzelnen Element in der XAML-Datei, sodass Sie die Ansichtszustandsinformationen leicht finden und bearbeiten können.

  • Eine NoPersistScope-Containeraktivität, damit untergeordnete Aktivitäten nicht beibehalten werden.

  • Unterstützung von C#-Ausdrücken:

    • Visual Basic-Workflowprojekte verwenden Visual Basic-Ausdrücke, und C#-Workflowprojekte verwenden C#-Ausdrücke.

    • C#-Workflowprojekte, die in Visual Studio 2010 erstellt wurden und Visual Basic-Ausdrücke verwenden, sind mit C#-Workflowprojekten, die C#-Ausdrücke verwenden, kompatibel.

  • Versionsverwaltungserweiterungen:

    • Die neue WorkflowIdentity-Klasse, die eine Zuordnung zwischen einer beibehaltenen Workflowinstanz und ihrer Workflowdefinition bietet.

    • Parallele Ausführung mehrerer Workflowversionen im selben Host, einschließlich WorkflowServiceHost.

    • Die Änderbarkeit der Definition einer beibehaltenen Workflowinstanz im Rahmen eines dynamischen Updates.

  • Contract-First-Workflowdienstentwicklung, die das automatische Generieren von Aktivitäten zur Übereinstimmung mit einem vorhandenen Dienstvertrag unterstützt.

Weitere Informationen finden Sie unter Neues in Windows Workflow Foundation.

Windows 8.x Store-Apps werden für bestimmte Formularfaktoren entworfen und nutzen die Leistungsfähigkeit des Windows-Betriebssystems. Eine Teilmenge von .NET Framework 4.5 oder 4.5.1 kann mithilfe von C# oder Visual Basic zum Erstellen von Windows 8.x Store-Apps in Windows verwendet werden. Diese Teilmenge wird .NET für Windows 8.x Store-Apps genannt und in einer Übersicht im Windows Developer Center erläutert.

Mit dem Projekt "Portable Klassenbibliothek" in Visual Studio 2012 (und Folgeversionen) können Sie verwaltete Assemblys, die auf mehreren .NET Framework-Plattformen ausgeführt werden können, schreiben und erstellen. Mit einem "Portable Klassenbibliothek"-Projekt wählen Sie die Zielplattformen (wie Windows Phone und .NET für Windows 8.x Store-Apps). Die verfügbaren Typen und Member im Projekt werden automatisch auf die allgemeinen Typen und Member dieser Plattformen beschränkt. Weitere Informationen finden Sie unter Plattformübergreifende Entwicklung mit der portablen Klassenbibliothek.

Anzeigen: