Lezen in het Engels

Delen via


Wat is er nieuw in .NET Framework?

Notitie

.NET Framework wordt onafhankelijk van Windows-updates onderhouden met oplossingen voor beveiligings- en betrouwbaarheidsfouten. Over het algemeen worden beveiligingsupdates elk kwartaal uitgebracht. .NET Framework wordt nog steeds opgenomen in Windows, zonder plannen om het te verwijderen. U hoeft uw .NET Framework-apps niet te migreren, maar voor nieuwe ontwikkeling gebruikt u .NET 8 of hoger.

Dit artikel bevat een overzicht van de belangrijkste nieuwe functies en verbeteringen in de volgende versies van .NET Framework:

Dit artikel bevat geen uitgebreide informatie over elke nieuwe functie en kan worden gewijzigd. Zie Aan de slagvoor algemene informatie over .NET Framework. Zie Systeemvereistenvoor ondersteunde platforms. Zie Installation Guidevoor downloadkoppelingen en installatie-instructies.

Notitie

Het .NET Framework-team brengt ook buiten de band functies uit, met nuGet, om platformondersteuning uit te breiden en nieuwe functionaliteit te introduceren, zoals onveranderbare verzamelingen en vectortypen met SIMD-functionaliteit. Zie Aanvullende klassebibliotheken en API's en .NET Framework en out-of-band releasesvoor meer informatie. Bekijk een volledige lijst met NuGet-pakketten voor .NET Framework.

Introductie van .NET Framework 4.8.1

.NET Framework 4.8.1 bouwt voort op eerdere versies van .NET Framework 4.x door veel nieuwe fixes en verschillende nieuwe functies toe te voegen terwijl het een zeer stabiel product blijft.

.NET Framework 4.8.1 downloaden en installeren

U kunt .NET Framework 4.8.1 downloaden vanaf de volgende locaties:

.NET Framework 4.8 kan worden geïnstalleerd op Windows 11, Windows 10 versie 21H2, Windows 10 versie 21H1, Windows 10 versie 20H2 en de bijbehorende serverplatforms vanaf Windows Server 2022. U kunt .NET Framework 4.8.1 installeren met behulp van het webinstallatieprogramma of het offline-installatieprogramma. De aanbevolen manier voor de meeste gebruikers is het webinstallatieprogramma te gebruiken.

U kunt .NET Framework 4.8.1 in Visual Studio 2022 17.3 of hoger targeten door het .NET Framework 4.8.1 Developer Packte installeren.

Nieuw in .NET Framework 4.8.1

.NET Framework 4.8.1 introduceert nieuwe functies op de volgende gebieden:

Verbeterde toegankelijkheid, waardoor een toepassing een geschikte ervaring kan bieden voor gebruikers van Ondersteunende technologie, is een belangrijke focus op .NET Framework 4.8.1. Zie Wat is er nieuw in toegankelijkheid in .NET Frameworkvoor meer informatie over toegankelijkheidsverbeteringen in .NET Framework 4.8.1.

.NET Framework 4.8.1 voegt systeemeigen Arm64-ondersteuning toe aan de .NET Framework-serie. Uw investeringen in het enorme ecosysteem van .NET Framework-apps en -bibliotheken kunnen nu gebruikmaken van de voordelen van het uitvoeren van workloads die systeemeigen zijn op Arm64, namelijk betere prestaties in vergelijking met het uitvoeren van x64-code die is geëmuleerd op Arm64.

Microsoft is verplicht producten en platforms te bieden die toegankelijk zijn voor iedereen. .NET Framework 4.8.1 biedt twee Ontwikkelplatforms voor Windows-gebruikersinterfaces, die beide ontwikkelaars de ondersteuning bieden die nodig is om toegankelijke toepassingen te maken. In de afgelopen versies hebben zowel Windows Forms als WPF nieuwe functies toegevoegd en talloze betrouwbaarheidsproblemen met betrekking tot toegankelijkheid opgelost. U kunt meer lezen over de details van wat er is opgelost of toegevoegd in elke release door naar Wat is er nieuw in toegankelijkheid in .NET Framework.

In deze release hebben zowel Windows Forms als WPF verbeteringen aangebracht in de verwerking van knopinfo om ze toegankelijker te maken. In beide gevallen voldoen tooltips nu aan de richtlijnen die zijn beschreven in de WCAG2.1 inhoud over Hover of Focus. De vereisten voor tooltips zijn:

  • Tooltips moeten worden weergegeven via zweven met de muis of door navigatie met het toetsenbord naar het besturingselement.
  • Tooltips moeten kunnen worden gesloten. Dat wil zeggen, een eenvoudige toetsenbordopdracht zoals Esc zou de tooltip moeten sluiten.
  • Knopinfo moet aanwijsbaar zijn. Gebruikers moeten in staat zijn hun muiscursor over de tooltip te plaatsen. Hierdoor kunnen slechtziende gebruikers scenario's zoals het gebruik van een vergrootglas toepassen om de knopinfo te lezen.
  • Tooltips moeten blijvend zijn. Tooltips mogen niet automatisch verdwijnen nadat een bepaalde tijd is verstreken. In plaats daarvan moeten knopinfo's worden gesloten door de gebruiker die de muis naar een ander bedieningselement verplaatst of door een toetsenbordopdracht.

In Windows Forms is deze ondersteuning alleen beschikbaar op besturingssystemen met Windows 11 of hoger. Windows Forms is een dunne beheerde laag rond de Windows-API en het nieuwe gedrag van tooltips is alleen beschikbaar in Windows 11. WPF heeft geen afhankelijkheden van de besturingssysteemversie voor de toegankelijke knopinfo.

WPF had de meeste vereisten voor WCAG2.1-compatibele tooltips geïmplementeerd in .NET Framework 4.8. In deze release heeft WPF de ervaring verbeterd door ervoor te zorgen dat knopinfo in het huidige venster eenvoudig kan worden gesloten met behulp van de toets Esc, de Ctrl toets (op zichzelf) of door de combinatie Ctrl+Shift+F10. Het bereik van de escape-sleutel is in deze release beperkt om alleen van toepassing te zijn op het huidige venster. Voorheen werd het toegepast op elke geopende hint binnen de applicatie.

Windows Forms was de eerste Windows UI-stack die is gemaakt voor .NET Framework. Daarom is het oorspronkelijk gemaakt om verouderde toegankelijkheidstechnologie te gebruiken, die niet voldoet aan de huidige toegankelijkheidsvereisten. In deze release heeft Windows Forms een aantal problemen opgelost. Ga naar Wat is er nieuw in toegankelijkheid in .NET Frameworkvoor een volledige lijst met toegankelijkheidsgerelateerde wijzigingen.

De belangrijkste punten van verbeteringen in Windows Forms in .NET Framework 4.8.1 zijn:

  • Ondersteuning voor textpatroon- Windows Forms heeft ondersteuning toegevoegd voor het UIA-textpatroon. Met dit patroon kunt u hulpmiddelentechnologie gebruiken om de inhoud van een tekstvak of een vergelijkbaar op tekst gebaseerd besturingselement letter voor letter te doorlopen. Hiermee kan tekst in het besturingselement worden geselecteerd en gewijzigd, waarna nieuwe tekst bij de cursor kan worden ingevoegd. Windows Forms heeft deze ondersteuning toegevoegd voor TextBox, DataGridView-cellen, ComboBox-besturingselementen en meer.

  • Problemen met contrast oplossen: In meerdere besturingselementen heeft Windows Forms de contrastverhouding van selectierechthoeken aangepast zodat ze donkerder en beter zichtbaar zijn.

  • Verschillende problemen met DataGridView opgelost:

    • De namen van de schuifbalk zijn bijgewerkt zodat deze consistent zijn.
    • Verteller kan zich nu richten op lege DataGridView-cellen.
    • Ontwikkelaars kunnen de gelokaliseerde eigenschap voor het besturingselementtype instellen voor aangepaste DataGridView-cellen.
    • De koppelingskleur voor DataGridViewLink-cellen is bijgewerkt zodat deze beter contrast heeft met de achtergrond.

Introductie van .NET Framework 4.8

.NET Framework 4.8 bouwt voort op eerdere versies van .NET Framework 4.x door veel nieuwe fixes en verschillende nieuwe functies toe te voegen terwijl het een zeer stabiel product blijft.

.NET Framework 4.8 downloaden en installeren

U kunt .NET Framework 4.8 downloaden vanaf de volgende locaties:

.NET Framework 4.8 kan worden geïnstalleerd op Windows 10, Windows 8.1, Windows 7 SP1 en de bijbehorende serverplatforms vanaf Windows Server 2008 R2 SP1. U kunt .NET Framework 4.8 installeren met behulp van het webinstallatieprogramma of het offline-installatieprogramma. De aanbevolen manier voor de meeste gebruikers is het webinstallatieprogramma te gebruiken.

U kunt .NET Framework 4.8 in Visual Studio 2012 of hoger targeten door het .NET Framework 4.8 Developer Packte installeren.

Wat is er nieuw in .NET Framework 4.8?

.NET Framework 4.8 introduceert nieuwe functies op de volgende gebieden:

Verbeterde toegankelijkheid, waardoor een toepassing een geschikte ervaring kan bieden voor gebruikers van ondersteunende technologie, blijft een belangrijke focus op .NET Framework 4.8. Zie Wat is er nieuw in toegankelijkheid in .NET Frameworkvoor meer informatie over toegankelijkheidsverbeteringen in .NET Framework 4.8.

Basisklassen

verminderde FIPS-impact op cryptografie. In eerdere versies van .NET Framework genereert beheerde cryptografische providerklassen zoals SHA256Managed een CryptographicException wanneer de cryptografische bibliotheken van het systeem zijn geconfigureerd in de FIPS-modus. Deze uitzonderingen worden gegenereerd omdat de beheerde versies van de cryptografische providerklassen, in tegenstelling tot de cryptografische systeembibliotheken, geen FIPS-certificering (Federal Information Processing Standards) 140-2 hebben ondergaan. Omdat weinig ontwikkelaars hun ontwikkelmachines in FIPS-modus hebben staan, treden de uitzonderingen vaak op in productiesystemen.

In toepassingen die zich richten op .NET Framework 4.8, gooien de volgende beheerde cryptografieklassen in dit geval geen CryptographicException meer:

In plaats daarvan leiden deze klassen cryptografische bewerkingen om naar een systeemcryptografiebibliotheek. Deze wijziging verwijdert effectief een potentieel verwarrend verschil tussen ontwikkelomgevingen en productieomgevingen en zorgt ervoor dat systeemeigen onderdelen en beheerde onderdelen worden uitgevoerd onder hetzelfde cryptografische beleid. Toepassingen die afhankelijk zijn van deze uitzonderingen kunnen het vorige gedrag herstellen door de AppContext-switch in te stellen Switch.System.Security.Cryptography.UseLegacyFipsThrow op true. Zie Beheerde cryptografieklassen gooien geen CryptographyException in de FIPS-modusvoor meer informatie.

Gebruik van bijgewerkte versie van ZLib

Vanaf .NET Framework 4.5 maakt de clrcompression.dll-assembly gebruik van ZLib, een systeemeigen externe bibliotheek voor gegevenscompressie, om een implementatie voor het deflate-algoritme te bieden. De .NET Framework 4.8-versie van clrcompression.dll wordt bijgewerkt voor het gebruik van ZLib versie 1.2.11, waaronder verschillende belangrijke verbeteringen en fixes.

Windows Communication Foundation (WCF)

Introductie van ServiceHealthBehavior

Gezondheidscontrole-eindpunten worden veel gebruikt door orchestratiehulpmiddelen voor het beheren van services op basis van hun gezondheidsstatus. Gezondheidscontroles kunnen ook worden gebruikt door bewakingshulpprogramma's om de beschikbaarheid en prestaties van een service bij te houden en meldingen te geven over.

ServiceHealthBehavior is een WCF-servicegedrag dat IServiceBehavioruitbreidt. Wanneer een service wordt toegevoegd aan de ServiceDescription.Behaviors-verzameling, doet een servicegedrag het volgende:

  • Retourneert de gezondheidsstatus van de service met HTTP-antwoordcodes. U kunt in een queryreeks de HTTP-statuscode opgeven voor een HTTP/GET-statustestaanvraag.

  • Hiermee publiceert u informatie over de servicestatus. Servicespecifieke details, waaronder servicestatus, aantal beperkingen en capaciteit, kunnen worden weergegeven met behulp van een HTTP/GET-aanvraag met de ?health querytekenreeks. Toegankelijkheid van dergelijke informatie is belangrijk bij het oplossen van problemen met een onjuiste WCF-service.

Er zijn twee manieren om het statuseindpunt beschikbaar te maken en WCF-servicestatusgegevens te publiceren:

  • Door middel van code. Bijvoorbeeld:

    ServiceHost host = new ServiceHost(typeof(Service1),
                       new Uri("http://contoso:81/Service1"));
    ServiceHealthBehavior healthBehavior =
        host.Description.Behaviors.Find<ServiceHealthBehavior>();
    healthBehavior ??= new ServiceHealthBehavior();
    host.Description.Behaviors.Add(healthBehavior);
    
  • Met behulp van een configuratiebestand. Bijvoorbeeld:

    <behaviors>
      <serviceBehaviors>
        <behavior name="DefaultBehavior">
          <serviceHealth httpsGetEnabled="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    

De status van een service kan worden opgevraagd met behulp van queryparameters zoals OnServiceFailure, OnDispatcherFailure, OnListenerFailure, OnThrottlePercentExceeded) en een HTTP-antwoordcode kan worden opgegeven voor elke queryparameter. Als de HTTP-antwoordcode wordt weggelaten voor een queryparameter, wordt standaard een HTTP-antwoordcode van 503 gebruikt. Bijvoorbeeld:

Queryparameters en voorbeelden:

  • OnDispatcherFout: https://contoso:81/Service1?health&OnDispatcherFailure=455

    Er wordt een 455 HTTP-antwoordstatuscode geretourneerd wanneer de status van een van de kanaalverzenders groter is dan CommunicationState.Opened.

  • OnListenerFailure: https://contoso:81/Service1?health&OnListenerFailure=465

    Er wordt een 465 HTTP-antwoordstatuscode geretourneerd wanneer de status van een van de kanaallisteners groter is dan CommunicationState.Opened.

  • OnThrottlePercentOverschreden: https://contoso:81/Service1?health&OnThrottlePercentExceeded= 70:350,95:500

    Hiermee geeft u het percentage {1 – 100} op dat het antwoord en de HTTP-antwoordcode {200 – 599} activeert. In dit voorbeeld:

    • Als het percentage groter is dan 95, wordt een HTTP-antwoordcode van 500 geretourneerd.

    • Als het percentage tussen 70 en 95 ligt, wordt 350 geretourneerd.

    • Anders wordt 200 teruggegeven.

De status van de service kan worden weergegeven in HTML door een queryreeks zoals https://contoso:81/Service1?health op te geven of in XML door een queryreeks zoals https://contoso:81/Service1?health&Xmlop te geven. Een querytekenreeks zoals https://contoso:81/Service1?health&NoContent retourneert een lege HTML-pagina.

Windows Presentation Foundation (WPF)

verbeteringen voor hoge DPI

In .NET Framework 4.8 voegt WPF ondersteuning toe voor Per-Monitor V2 DPI Awareness en Mixed-Mode DPI-schaalaanpassing. Zie Ontwikkeling van hoge DPI-bureaubladtoepassingen in Windows voor meer informatie over hoge DPI-ontwikkeling.

.NET Framework 4.8 verbetert de ondersteuning voor gehoste HWND's en Windows Forms-interoperation in High-DPI WPF-toepassingen op platforms die ondersteuning bieden voor Mixed-Mode DPI-schaalaanpassing (vanaf Windows 10 april 2018 Update). Wanneer gehoste HWND's of Windows Forms-besturingselementen worden gemaakt als Mixed-Mode DPI-geschaalde vensters door SetThreadDpiHostingBehavior- en SetThreadDpiAwarenessContextaan te roepen, kunnen ze worden gehost in een Per-Monitor V2 WPF-toepassing en op de juiste manier worden geschaald. Dergelijke gehoste inhoud wordt niet weergegeven bij de systeemeigen DPI; In plaats daarvan schaalt het besturingssysteem de gehoste inhoud naar de juiste grootte. Met de ondersteuning voor Per-Monitor v2 DPI-bewustzijnsmodus kunnen WPF-besturingselementen ook worden gehost (dat wil zeggen, geparent) in een native venster in een high-DPI-toepassing.

Als u ondersteuning wilt inschakelen voor Mixed-Mode hoge DPI-schaalaanpassing, kunt u de volgende AppContext schakelaars in het configuratiebestand van de toepassing instellen:

<runtime>
   <AppContextSwitchOverrides value = "Switch.System.Windows.DoNotScaleForDpiChanges=false; Switch.System.Windows.DoNotUsePresentationDpiCapabilityTier2OrGreater=false"/>
</runtime>

Algemene taalruntime

De runtime in .NET Framework 4.8 bevat de volgende wijzigingen en verbeteringen:

Verbeteringen aan de JIT-compiler. De Just-In-Time-compiler (JIT) in .NET Framework 4.8 is gebaseerd op de JIT-compiler in .NET Core 2.1. Veel van de optimalisaties en alle bugfixes die zijn aangebracht in de .NET Core 2.1 JIT-compiler zijn opgenomen in de .NET Framework 4.8 JIT-compiler.

NGEN-verbeteringen. De runtime heeft het geheugenbeheer verbeterd voor Native Image Generator (NGEN)-installatiekopieën, zodat gegevens die zijn toegewezen vanuit NGEN-installatiekopieën niet geheugen-resident zijn. Dit vermindert het oppervlakgebied dat beschikbaar is voor aanvallen die proberen willekeurige code uit te voeren door het geheugen te wijzigen dat wordt uitgevoerd.

Antimalware-scannen van alle assemblies. In eerdere versies van .NET Framework scant de runtime alle assembly's die vanaf de schijf zijn geladen met behulp van Windows Defender of antimalwaresoftware van derden. Assembly's die zijn geladen vanuit andere bronnen, zoals door de methode Assembly.Load(Byte[]), worden echter niet gescand en kunnen mogelijk niet-gedetecteerde malware bevatten. Vanaf .NET Framework 4.8 die wordt uitgevoerd op Windows 10, activeert de runtime een scan door antimalwareoplossingen die de AMSI-(Antimalware Scan Interface) implementeren.

Wat is er nieuw in .NET Framework 4.7.2

.NET Framework 4.7.2 bevat nieuwe functies op de volgende gebieden:

Een voortdurende focus in .NET Framework 4.7.2 is verbeterde toegankelijkheid, waardoor een toepassing een geschikte ervaring kan bieden voor gebruikers van ondersteunende technologie. Zie Wat is er nieuw in toegankelijkheid in .NET Frameworkvoor meer informatie over toegankelijkheidsverbeteringen in .NET Framework 4.7.2.

Basisklassen

.NET Framework 4.7.2 bevat een groot aantal cryptografische verbeteringen, betere decompressieondersteuning voor ZIP-archieven en aanvullende verzameling-API's.

Nieuwe overloads van RSA.Create en DSA.Create

Met de methoden DSA.Create(DSAParameters) en RSA.Create(RSAParameters) kunt u belangrijke parameters opgeven bij het instantiëren van een nieuwe DSA of RSA sleutel. Met deze code kunt u code als volgt vervangen:

// Before .NET Framework 4.7.2
using (RSA rsa = RSA.Create())
{
   rsa.ImportParameters(rsaParameters);
   // Other code to execute using the RSA instance.
}

met code als volgt:

// Starting with .NET Framework 4.7.2
using (RSA rsa = RSA.Create(rsaParameters))
{
   // Other code to execute using the rsa instance.
}

Met de methoden DSA.Create(Int32) en RSA.Create(Int32) kunt u nieuwe DSA of RSA sleutels genereren met een specifieke sleutelgrootte. Bijvoorbeeld:

using (DSA dsa = DSA.Create(2048))
{
   // Other code to execute using the dsa instance.
}

Rfc2898DeriveBytes-constructors accepteren een hash-algoritmenaam

De Rfc2898DeriveBytes-klasse heeft drie nieuwe constructors met een HashAlgorithmName parameter die het HMAC-algoritme identificeert dat moet worden gebruikt bij het afleiden van sleutels. In plaats van SHA-1 te gebruiken, moeten ontwikkelaars een SHA-2-gebaseerde HMAC zoals SHA-256 gebruiken, zoals wordt weergegeven in het volgende voorbeeld:

private static byte[] DeriveKey(string password, out int iterations, out byte[] salt,
                                out HashAlgorithmName algorithm)
{
   iterations = 100000;
   algorithm = HashAlgorithmName.SHA256;

   const int SaltSize = 32;
   const int DerivedValueSize = 32;

   using (Rfc2898DeriveBytes pbkdf2 = new Rfc2898DeriveBytes(password, SaltSize,
                                                             iterations, algorithm))
   {
      salt = pbkdf2.Salt;
      return pbkdf2.GetBytes(DerivedValueSize);
   }
}

ondersteuning voor tijdelijke sleutels

PFX-import kan optioneel persoonlijke sleutels rechtstreeks vanuit het geheugen laden, waardoor de harde schijf wordt overgeslagen. Wanneer de nieuwe X509KeyStorageFlags.EphemeralKeySet vlag is opgegeven in een X509Certificate2 constructor of een van de overloads van de X509Certificate2.Import methode, worden de persoonlijke sleutels als tijdelijke sleutels geladen. Hiermee voorkomt u dat de sleutels zichtbaar zijn op de schijf. Echter:

  • Omdat de sleutels niet op schijf worden bewaard, zijn certificaten die met deze vlag zijn geladen geen goede kandidaten om toe te voegen aan een X509Store.

  • Sleutels die op deze manier worden geladen, worden bijna altijd geladen via Windows CNG. Daardoor moeten bellers toegang krijgen tot de private sleutel door extensiemethoden aan te roepen, zoals cert.GetRSAPrivateKey(). De eigenschap X509Certificate2.PrivateKey werkt niet.

  • Omdat de verouderde X509Certificate2.PrivateKey eigenschap niet met certificaten werkt, moeten ontwikkelaars strenge tests uitvoeren voordat ze overschakelen naar tijdelijke sleutels.

Programmatisch maken van PKCS#10 certificeringsondertekeningsaanvragen en X.509-certificaten voor openbare-sleutel

Vanaf .NET Framework 4.7.2 kunnen workloads certificaatondertekeningsaanvragen (CDR's) genereren, waardoor het genereren van certificaataanvragen kan worden gefaseerd in bestaande hulpprogramma's. Dit is vaak handig in testscenario's.

Zie 'Programmatisch maken van PKCS#10 certificeringsondertekeningsaanvragen en X.509-certificaten voor openbare sleutel' in de .NET Blogvoor meer informatie en codevoorbeelden.

nieuwe signerInfo-leden

Vanaf .NET Framework 4.7.2 bevat de SignerInfo klasse meer informatie over de handtekening. U kunt de waarde van de eigenschap System.Security.Cryptography.Pkcs.SignerInfo.SignatureAlgorithm ophalen om het handtekeningalgoritmen te bepalen dat door de ondertekenaar wordt gebruikt. SignerInfo.GetSignature kan worden aangeroepen om een kopie van de cryptografische handtekening voor deze ondertekenaar op te halen.

Een verpakte stream open laten nadat CryptoStream is verwijderd

Vanaf .NET Framework 4.7.2 heeft de CryptoStream-klasse een extra constructor waarmee Dispose de verpakte stroom niet kan sluiten. Als u de verpakte stroom open wilt laten nadat het CryptoStream exemplaar is verwijderd, roept u de nieuwe CryptoStream constructor als volgt aan:

var cStream = new CryptoStream(stream, transform, mode, leaveOpen: true);

Decompressiewijzigingen in DeflateStream-

Vanaf .NET Framework 4.7.2 is de implementatie van decompressiebewerkingen in de DeflateStream-klasse gewijzigd om standaard systeemeigen Windows-API's te gebruiken. Dit resulteert doorgaans in een aanzienlijke prestatieverbetering.

Ondersteuning voor decompressie met behulp van Windows-API's is standaard ingeschakeld voor toepassingen die gericht zijn op .NET Framework 4.7.2. Toepassingen die zich richten op eerdere versies van .NET Framework, maar worden uitgevoerd onder .NET Framework 4.7.2, kunnen zich voor dit gedrag aanmelden door de volgende AppContext-switch toe te voegen aan het toepassingsconfiguratiebestand:

<AppContextSwitchOverrides value="Switch.System.IO.Compression.DoNotUseNativeZipLibraryForDecompression=false" />

Aanvullende verzameling-API's

.NET Framework 4.7.2 voegt een aantal nieuwe API's toe aan de typen SortedSet<T> en HashSet<T>. Dit zijn onder andere:

De ConcurrentDictionary<TKey,TValue>-klasse bevat nieuwe overbelastingen van de AddOrUpdate en GetOrAdd methoden om een waarde op te halen uit de woordenlijst of om deze toe te voegen als deze niet wordt gevonden, en om een waarde toe te voegen aan de woordenlijst of om deze bij te werken als deze al bestaat.

public TValue AddOrUpdate<TArg>(TKey key, Func<TKey, TArg, TValue> addValueFactory, Func<TKey, TValue, TArg, TValue> updateValueFactory, TArg factoryArgument)

public TValue GetOrAdd<TArg>(TKey key, Func<TKey, TArg, TValue> valueFactory, TArg factoryArgument)

ASP.NET

Ondersteuning voor afhankelijkheidsinjectie in Web Forms

Afhankelijkheidsinjectie (DI) objecten en de bijbehorende afhankelijkheden loskoppelt, zodat de code van een object niet meer hoeft te worden gewijzigd omdat een afhankelijkheid is gewijzigd. Wanneer u ASP.NET toepassingen ontwikkelt die gericht zijn op .NET Framework 4.7.2, kunt u het volgende doen:

Ondersteuning voor cookies op dezelfde site

SameSite voorkomt dat een browser een cookie samen met een aanvraag voor meerdere sites verzendt. .NET Framework 4.7.2 voegt een HttpCookie.SameSite eigenschap toe waarvan de waarde een System.Web.SameSiteMode opsommingslid is. Als de waarde SameSiteMode.Strict of SameSiteMode.Laxis, voegt ASP.NET het kenmerk SameSite toe aan de set-cookieheader. SameSite-ondersteuning is van toepassing op HttpCookie objecten, evenals op FormsAuthentication en System.Web.SessionState cookies.

U kunt SameSite als volgt instellen voor een HttpCookie-object:

var c = new HttpCookie("secureCookie", "same origin");
c.SameSite = SameSiteMode.Lax;

U kunt SameSite-cookies ook configureren op toepassingsniveau door het web.config-bestand te wijzigen:

<system.web>
   <httpCookies sameSite="Strict" />
</system.web>

U kunt SameSite voor FormsAuthentication en System.Web.SessionState cookies toevoegen door het webconfiguratiebestand te wijzigen:

<system.web>
   <authentication mode="Forms">
      <forms cookieSameSite="Lax">
         <!-- ...   -->
      </forms>
   </authentication>
   <sessionState cookieSameSite="Lax"></sessionState>
</system.web>

Netwerken

Implementatie van httpClientHandler-eigenschappen

.NET Framework 4.7.1 heeft acht eigenschappen toegevoegd aan de klasse System.Net.Http.HttpClientHandler. Echter gooiden twee een PlatformNotSupportedException. .NET Framework 4.7.2 biedt nu een implementatie voor deze eigenschappen. De eigenschappen zijn:

SQLClient

Ondersteuning voor universele verificatie van Azure Active Directory en meervoudige verificatie

Voor groeiende nalevings- en beveiligingsvereisten is vereist dat veel klanten meervoudige verificatie (MFA) gebruiken. Daarnaast ontmoedigen huidige best practices het direct opnemen van gebruikerswachtwoorden in connectiestrings. Ter ondersteuning van deze wijzigingen wordt .NET Framework 4.7.2 uitgebreid SQLClient-verbindingsreeksen door een nieuwe waarde, 'Active Directory Interactive', toe te voegen voor het bestaande trefwoord 'Verificatie' ter ondersteuning van MFA en Azure AD Authentication. De nieuwe interactieve methode ondersteunt systeemeigen en federatieve Azure AD-gebruikers en Azure AD-gastgebruikers. Wanneer deze methode wordt gebruikt, wordt de MFA-verificatie die door Azure AD wordt opgelegd, ondersteund voor SQL-databases. Daarnaast vraagt het verificatieproces een gebruikerswachtwoord aan om te voldoen aan de aanbevolen beveiligingsprocedures.

In eerdere versies van .NET Framework ondersteunde SQL-connectiviteit alleen de opties SqlAuthenticationMethod.ActiveDirectoryPassword en SqlAuthenticationMethod.ActiveDirectoryIntegrated. Beide maken deel uit van het niet-interactieve ADAL-protocol, dat geen ondersteuning biedt voor MFA. Met de nieuwe SqlAuthenticationMethod.ActiveDirectoryInteractive optie ondersteunt SQL-connectiviteit MFA en bestaande verificatiemethoden (wachtwoord en geïntegreerde verificatie), waarmee gebruikers interactief gebruikerswachtwoorden kunnen invoeren zonder wachtwoorden in de verbindingsreeks vast te leggen.

Zie voor meer informatie en een voorbeeld 'SQL -- Azure AD Universal and Multifactor Authentication Support' in de .NET Blog.

ondersteuning voor Always Encrypted versie 2

NET Framework 4.7.2 voegt ondersteuning toe voor always encrypted op basis van enclaves. De oorspronkelijke versie van Always Encrypted is een versleutelingstechnologie aan de clientzijde waarin versleutelingssleutels de client nooit verlaten. In Always Encrypted op basis van enclaves kan de client desgewenst de versleutelingssleutels verzenden naar een beveiligde enclave. Dit is een beveiligde rekenkundige entiteit die als onderdeel van SQL Server kan worden beschouwd, maar dat sql Server-code niet kan worden gemanipuleerd. Ter ondersteuning van Always Encrypted op basis van enclaves voegt .NET Framework 4.7.2 de volgende typen en leden toe aan de System.Data.SqlClient-naamruimte:

Het toepassingsconfiguratiebestand geeft vervolgens een concrete implementatie op van de abstracte System.Data.SqlClient.SqlColumnEncryptionEnclaveProvider-klasse die de functionaliteit biedt voor de enclaveprovider. Bijvoorbeeld:

<configuration>
  <configSections>
    <section name="SqlColumnEncryptionEnclaveProviders" type="System.Data.SqlClient.SqlColumnEncryptionEnclaveProviderConfigurationSection,System.Data,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089"/>
  </configSections>
  <SqlColumnEncryptionEnclaveProviders>
    <providers>
      <add name="Azure" type="Microsoft.SqlServer.Management.AlwaysEncrypted.AzureEnclaveProvider,MyApp"/>
      <add name="HGS" type="Microsoft.SqlServer.Management.AlwaysEncrypted.HGSEnclaveProvider,MyApp" />
    </providers>
  </SqlColumnEncryptionEnclaveProviders >
</configuration>

De basisstroom van Always Encrypted op basis van enclave is:

  1. De gebruiker maakt een AlwaysEncrypted-verbinding met SQL Server die always encrypted op basis van enclaves ondersteunt. Het stuurprogramma neemt contact op met de attesteringsdienst om ervoor te zorgen dat het verbinding maakt met de juiste enclave.

  2. Zodra de enclave is getest, brengt het stuurprogramma een beveiligd kanaal tot stand met de beveiligde enclave die wordt gehost op SQL Server.

  3. Het stuurprogramma deelt versleutelingssleutels die zijn geautoriseerd door de client met de beveiligde enclave voor de duur van de SQL-verbinding.

Windows Presentation Foundation

ResourceDictionaries zoeken op bron

Vanaf .NET Framework 4.7.2 kan een diagnostische assistent de ResourceDictionaries vinden die zijn gemaakt op basis van een bepaalde bron-URI. (Deze functie is bedoeld voor gebruik door diagnostische assistenten, niet door productietoepassingen.) Met een diagnostische assistent, zoals de faciliteit 'Edit-and-Continue' van Visual Studio, kan de gebruiker een ResourceDictionary bewerken met de intentie dat de wijzigingen worden toegepast op de actieve toepassing. Een stap bij het bereiken hiervan is het vinden van alle ResourceDictionaries die door de actieve toepassing zijn gemaakt op basis van de woordenlijst die wordt bewerkt. Een toepassing kan bijvoorbeeld een ResourceDictionary declareren waarvan de inhoud wordt gekopieerd uit een bepaalde bron-URI:

<ResourceDictionary Source="MyRD.xaml" />

Een diagnostische assistent die de oorspronkelijke markering bewerkt in MyRD.xaml- kan de nieuwe functie gebruiken om de woordenlijst te vinden. De functie wordt geïmplementeerd door een nieuwe statische methode, ResourceDictionaryDiagnostics.GetResourceDictionariesForSource. De diagnostische assistent roept de nieuwe methode aan met behulp van een absolute URI die de oorspronkelijke markering identificeert, zoals wordt geïllustreerd door de volgende code:

IEnumerable<ResourceDictionary> dictionaries = ResourceDictionaryDiagnostics.GetResourceDictionariesForSource(new Uri("pack://application:,,,/MyApp;component/MyRD.xaml"));

De methode retourneert een lege opsomming, tenzij VisualDiagnostics is ingeschakeld en de omgevingsvariabele ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO is ingesteld.

ResourceDictionary-eigenaren zoeken

Vanaf .NET Framework 4.7.2 kan een diagnostische assistent de eigenaren van een bepaalde ResourceDictionaryvinden. (De functie is bedoeld voor gebruik door diagnostische assistenten en niet door productietoepassingen.) Wanneer een wijziging wordt aangebracht in een ResourceDictionary, vindt WPF automatisch alle DynamicResource verwijzingen die mogelijk worden beïnvloed door de wijziging.

Een diagnostische assistent, zoals de faciliteit 'Edit-and-Continue' van Visual Studio, kan dit uitbreiden om StaticResource- verwijzingen te verwerken. De eerste stap in dit proces is het vinden van de eigenaren van de woordenlijst; dat wil gezegd, om alle objecten te vinden waarvan Resources eigenschap verwijst naar de woordenlijst (rechtstreeks of indirect via de eigenschap ResourceDictionary.MergedDictionaries). Drie nieuwe statische methoden die zijn geïmplementeerd op de System.Windows.Diagnostics.ResourceDictionaryDiagnostics-klasse, één voor elk van de basistypen met een eigenschap Resources, ondersteunt deze stap:

Deze methoden retourneren een lege opsomming, tenzij VisualDiagnostics is ingeschakeld en de omgevingsvariabele ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO is ingesteld.

StaticResource-verwijzingen zoeken

Een diagnostische assistent kan nu een melding ontvangen wanneer een StaticResource-verwijzing is opgelost. (De functie is bedoeld voor gebruik door diagnostische assistenten, niet door productietoepassingen.) Een diagnostische assistent, zoals de faciliteit 'Edit-and-Continue' van Visual Studio, wil mogelijk alle toepassingen van een resource bijwerken wanneer de waarde in een ResourceDictionary wordt gewijzigd. WPF doet dit automatisch voor DynamicResource verwijzingen, maar dit doet dit opzettelijk niet voor StaticResource-verwijzingen. Vanaf .NET Framework 4.7.2 kan de diagnostische assistent deze meldingen gebruiken om deze toepassingen van de statische resource te vinden.

De melding wordt geïmplementeerd door de nieuwe ResourceDictionaryDiagnostics.StaticResourceResolved gebeurtenis:

public static event EventHandler<StaticResourceResolvedEventArgs> StaticResourceResolved;

Deze gebeurtenis wordt gegenereerd wanneer de runtime een StaticResource-verwijzing oplost. De StaticResourceResolvedEventArgs argumenten beschrijven de resolutie en geven het object en de eigenschap aan die als host fungeren voor de StaticResource-verwijzing en de ResourceDictionary en sleutel die voor de oplossing worden gebruikt:

public class StaticResourceResolvedEventArgs : EventArgs
{
   public Object TargetObject { get; }

   public Object TargetProperty { get; }

   public ResourceDictionary ResourceDictionary { get; }

   public object ResourceKey { get; }
}

De gebeurtenis wordt niet gegenereerd (en de add accessor wordt genegeerd) tenzij VisualDiagnostics is ingeschakeld en de ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO omgevingsvariabele is ingesteld.

ClickOnce

HDPI-compatibele toepassingen voor Windows Forms, Windows Presentation Foundation (WPF) en Visual Studio Tools for Office (VSTO) kunnen allemaal worden geïmplementeerd met ClickOnce. Als de volgende vermelding wordt gevonden in het toepassingsmanifest, slaagt de implementatie onder .NET Framework 4.7.2:

<windowsSettings>
   <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
</windowsSettings>

Voor de Windows Forms-toepassing is de vorige tijdelijke oplossing voor het instellen van DPI-bewustzijn in het toepassingsconfiguratiebestand in plaats van het toepassingsmanifest niet meer nodig om clickOnce-implementatie te voltooien.

Wat is er nieuw in .NET Framework 4.7.1

.NET Framework 4.7.1 bevat nieuwe functies op de volgende gebieden:

Daarnaast ligt een belangrijke focus in .NET Framework 4.7.1 op verbeterde toegankelijkheid, waardoor een toepassing een geschikte ervaring kan bieden voor gebruikers van technologie voor mensen met een beperking. Zie Wat is er nieuw in toegankelijkheid in .NET Frameworkvoor meer informatie over toegankelijkheidsverbeteringen in .NET Framework 4.7.1.

Basisklassen

ondersteuning voor .NET Standard 2.0

.NET Standard- definieert een set API's die beschikbaar moeten zijn voor elke .NET-implementatie die die versie van de standaard ondersteunt. .NET Framework 4.7.1 biedt volledige ondersteuning voor .NET Standard 2.0 en voegt ongeveer 200 API's toe die zijn gedefinieerd in .NET Standard 2.0 en ontbreken in .NET Framework 4.6.1, 4.6.2 en 4.7. (Houd er rekening mee dat deze versies van .NET Framework alleen .NET Standard 2.0 ondersteunen als er ook extra .NET Standard-ondersteuningsbestanden worden geïmplementeerd op het doelsysteem.) Zie BCL - .NET Standard 2.0 Support in de .NET Framework 4.7.1 Runtime and Compiler Features blogpost voor meer informatie.

ondersteuning voor configuratiebouwers

Met configuratiebouwers kunnen ontwikkelaars configuratie-instellingen voor toepassingen dynamisch tijdens runtime injecteren en bouwen. Aangepaste configuratiebouwers kunnen worden gebruikt om bestaande gegevens in een configuratiesectie te wijzigen of om een volledig nieuwe configuratiesectie te maken. Zonder configuratiebouwers zijn .config bestanden statisch en worden hun instellingen enige tijd gedefinieerd voordat een toepassing wordt gestart.

Als u een aangepaste configuratiebouwer wilt maken, leidt u de bouwer af van de abstracte ConfigurationBuilder klasse en overschrijft u de ConfigurationBuilder.ProcessConfigurationSection en ConfigurationBuilder.ProcessRawXml. U definieert ook uw bouwers in uw .config-bestand. Zie de sectie Configuration Builders in het blogbericht .NET Framework 4.7.1 ASP.NET en Configuration Features voor meer informatie.

runtime-functiedetectie

De System.Runtime.CompilerServices.RuntimeFeature-klasse biedt een mechanisme om te bepalen of een vooraf gedefinieerde functie wordt ondersteund voor een bepaalde .NET-implementatie tijdens het compileren of runtime. Tijdens het compileren kan een compiler controleren of er een opgegeven veld bestaat om te bepalen of de functie wordt ondersteund; als dat het zo is, kan er code worden verzonden die gebruikmaakt van die functie. Tijdens runtime kan een toepassing de methode RuntimeFeature.IsSupported aanroepen voordat code tijdens runtime wordt verzonden. Zie Helper-methode toevoegen voor het beschrijven van functies die worden ondersteund door de runtime-voor meer informatie.

Waardetupletypen zijn serialiseerbaar

Vanaf .NET Framework 4.7.1 worden System.ValueTuple en de bijbehorende algemene typen gemarkeerd als serialiseerbare, waardoor binaire serialisatie mogelijk is. Dit zou het migreren van Tuple-typen, zoals Tuple<T1,T2,T3> en Tuple<T1,T2,T3,T4>, naar waarde-tupletypen eenvoudiger moeten maken. Zie "Compiler -- ValueTuple is Serializable" in de .NET Framework 4.7.1 Runtime- en Compilerfuncties blogbericht voor meer informatie.

Ondersteuning voor alleen-lezen verwijzingen

.NET Framework 4.7.1 voegt de System.Runtime.CompilerServices.IsReadOnlyAttributetoe. Dit kenmerk wordt door taalcompilers gebruikt om leden te markeren die alleen-lezen ref-terugkeerwaarden of parameters hebben. Zie Compiler -- Ondersteuning voor ReadOnlyReferences in het blogbericht .NET Framework 4.7.1 Runtime- en compilerfuncties voor meer informatie. Raadpleeg Ref-retourwaarden en lokale ref-waarden en Ref-retourwaarden (Visual Basic)voor informatie over ref-retourwaarden.

Common Language Runtime (CLR)

prestatieverbeteringen garbagecollection

Wijzigingen in garbagecollection (GC) in .NET Framework 4.7.1 verbeteren de algehele prestaties, met name voor grote object heap-toewijzingen (LOH). In .NET Framework 4.7.1 worden afzonderlijke vergrendelingen gebruikt voor kleine object-heap-toewijzingen (SOH) en LOH-toewijzingen, waardoor LOH-toewijzingen kunnen optreden wanneer achtergrond-GC de SOH veegt. Als gevolg hiervan moeten toepassingen die een groot aantal LOH-toewijzingen maken, een vermindering van toewijzingsvergrendelingsconflicten en verbeterde prestaties zien. Zie de sectie Runtime -- GC Performance Improvements in het blogbericht .NET Framework 4.7.1 Runtime- en compilerfuncties voor meer informatie.

Netwerken

SHA-2-ondersteuning voor Message.HashAlgorithm

In .NET Framework 4.7 en eerdere versies ondersteunde de eigenschap Message.HashAlgorithm alleen waarden van HashAlgorithm.Md5 en HashAlgorithm.Sha. Vanaf .NET Framework 4.7.1 worden HashAlgorithm.Sha256, HashAlgorithm.Sha384en HashAlgorithm.Sha512 ook ondersteund. Of deze waarde daadwerkelijk wordt gebruikt, is afhankelijk van MSMQ, omdat het Message exemplaar zelf geen hashing doet, maar alleen waarden doorgeeft aan MSMQ. Zie de sectie Sha-2-ondersteuning voor Message.HashAlgorithm in het blogbericht .NET Framework 4.7.1 ASP.NET en configuratiefuncties voor meer informatie.

ASP.NET

uitvoeringsstappen in ASP.NET toepassingen

ASP.NET verwerkt aanvragen in een vooraf gedefinieerde pijplijn met 23 gebeurtenissen. ASP.NET voert elke gebeurtenis-handler uit als een uitvoeringsstap. In versies van ASP.NET tot .NET Framework 4.7 kan ASP.NET de uitvoeringscontext niet doorstromen vanwege het schakelen tussen systeemeigen en beheerde threads. In plaats daarvan laat ASP.NET selectief alleen de HttpContextdoorstromen. Vanaf .NET Framework 4.7.1 kunt u met de methode HttpApplication.OnExecuteRequestStep(Action<HttpContextBase,Action>) ook omgevingsgegevens herstellen. Deze functie is gericht op bibliotheken met betrekking tot tracering, profilering, diagnose of transacties, bijvoorbeeld die betrekking hebben op de uitvoeringsstroom van de toepassing. Zie de functie 'ASP.NET uitvoeringsstap' in het blogbericht .NET Framework 4.7.1 ASP.NET en configuratiefuncties voor meer informatie.

ASP.NET HttpCookie parseren

.NET Framework 4.7.1 bevat een nieuwe methode, HttpCookie.TryParse, die een gestandaardiseerde manier biedt voor het maken van een HttpCookie object op basis van een tekenreeks en het nauwkeurig toewijzen van cookiewaarden, zoals vervaldatum en pad. Zie 'ASP.NET HttpCookie parseren' in het blogbericht .NET Framework 4.7.1 ASP.NET en configuratiefuncties voor meer informatie.

SHA-2-hashopties voor ASP.NET formulierverificatie-referenties

In .NET Framework 4.7 en eerdere versies hebben ASP.NET ontwikkelaars toestemming gegeven om gebruikersreferenties op te slaan met gehashte wachtwoorden in configuratiebestanden met md5 of SHA1. Vanaf .NET Framework 4.7.1 ondersteunt ASP.NET ook nieuwe beveiligde SHA-2-hashopties zoals SHA256, SHA384 en SHA512. SHA1 blijft de standaardwaarde en er kan een niet-standaardhashalgoritme worden gedefinieerd in het webconfiguratiebestand.

Belangrijk

Microsoft raadt u aan de veiligste verificatiestroom te gebruiken die beschikbaar is. Als u verbinding maakt met Azure SQL, is Beheerde identiteiten voor Azure-resources de aanbevolen verificatiemethode.

Nieuw in .NET Framework 4.7

.NET Framework 4.7 bevat nieuwe functies op de volgende gebieden:

Zie .NET Framework 4.7 API Changes op GitHub voor een lijst met nieuwe API's die zijn toegevoegd aan .NET Framework 4.7. Zie voor een lijst met functieverbeteringen en bugfixes in .NET Framework 4.7 .NET Framework 4.7 List of Changes op GitHub. Zie Aankondiging van .NET Framework 4.7 in de .NET-blog voor meer informatie.

Basisklassen

.NET Framework 4.7 verbetert de serialisatie door DataContractJsonSerializer.

Verbeterde functionaliteit met ECC (Elliptic Curve Cryptography)*

In .NET Framework 4.7 zijn ImportParameters(ECParameters) methoden toegevoegd aan de ECDsa- en ECDiffieHellman-klassen, zodat een object een reeds gevestigde sleutel kan vertegenwoordigen. Er is ook een ExportParameters(Boolean) methode toegevoegd voor het exporteren van de sleutel met behulp van expliciete curveparameters.

.NET Framework 4.7 voegt ook ondersteuning toe voor extra curven (inclusief de Brainpool-curvesuite) en heeft vooraf gedefinieerde definities toegevoegd voor het gemak van het maken via de nieuwe Create- en Create factory-methoden.

Je kunt een voorbeeld van verbeteringen in de cryptografie van .NET Framework 4.7 op GitHub zien.

Betere ondersteuning voor besturingstekens door de DataContractJsonSerializer

In .NET Framework 4.7 serialiseert de DataContractJsonSerializer klasse controletekens in overeenstemming met de ECMAScript 6-standaard. Dit gedrag is standaard ingeschakeld voor toepassingen die gericht zijn op .NET Framework 4.7 en is een opt-in-functie voor toepassingen die worden uitgevoerd onder .NET Framework 4.7, maar die een eerdere versie van .NET Framework gebruiken. Zie de sectie Toepassingscompatibiliteit voor meer informatie.

Netwerken

.NET Framework 4.7 voegt de volgende netwerkgerelateerde functie toe:

standaardbesturingssysteemondersteuning voor TLS-protocollen*

Met de TLS-stack, die wordt gebruikt door System.Net.Security.SslStream en up-stack-onderdelen, zoals HTTP, FTP en SMTP, kunnen ontwikkelaars de standaard TLS-protocollen gebruiken die door het besturingssysteem worden ondersteund. Ontwikkelaars hoeven een TLS-versie niet meer in code te coden.

ASP.NET

In .NET Framework 4.7 bevat ASP.NET de volgende nieuwe functies:

uitbreidbaarheid van objectcache

Vanaf .NET Framework 4.7 voegt ASP.NET een nieuwe set API's toe waarmee ontwikkelaars de standaardimplementaties ASP.NET voor in-memory objectcache en geheugenbewaking kunnen vervangen. Ontwikkelaars kunnen nu een van de volgende drie onderdelen vervangen als de ASP.NET-implementatie niet voldoende is:

  • objectcacheopslag. Met behulp van de nieuwe configuratiesectie voor cacheproviders kunnen ontwikkelaars nieuwe implementaties van een objectcache voor een ASP.NET-toepassing invoegen door de nieuwe ICacheStoreProvider interface te gebruiken.

  • geheugenbewaking. De standaardgeheugenmonitor in ASP.NET toepassingen op de hoogte stelt wanneer ze dicht bij de geconfigureerde limiet voor privébytes voor het proces worden uitgevoerd, of wanneer de machine laag is op het totale beschikbare fysieke RAM-geheugen. Wanneer deze limieten bijna zijn bereikt, worden meldingen geactiveerd. Voor sommige toepassingen worden meldingen te dicht bij de geconfigureerde limieten geactiveerd om nuttige reacties mogelijk te maken. Ontwikkelaars kunnen nu hun eigen geheugenmonitors schrijven om de standaardwaarde te vervangen door de eigenschap ApplicationMonitors.MemoryMonitor te gebruiken.

  • Geheugenlimietreacties. Standaard probeert ASP.NET de objectcache te knippen en periodiek GC.Collect aan te roepen wanneer de limiet voor het privé-byteproces bijna is bereikt. Voor sommige toepassingen zijn de frequentie van aanroepen naar GC.Collect of de hoeveelheid cache die is ingekort, inefficiënt. Ontwikkelaars kunnen het standaardgedrag nu vervangen of aanvullen door IObserver implementaties te abonneren op de geheugenmonitor van de toepassing.

Windows Communication Foundation (WCF)

Windows Communication Foundation (WCF) voegt de volgende functies en wijzigingen toe:

Mogelijkheid om de standaardinstellingen voor berichtbeveiliging te configureren voor TLS 1.1 of TLS 1.2

Vanaf .NET Framework 4.7 kunt u met WCF TLS 1.1 of TLS 1.2 naast SSL 3.0 en TLS 1.0 configureren als standaardprotocol voor berichtbeveiliging. Dit is een opt-in-instelling; als u dit wilt inschakelen, moet u de volgende vermelding toevoegen aan uw toepassingsconfiguratiebestand:

<runtime>
   <AppContextSwitchOverrides value="Switch.System.ServiceModel.DisableUsingServicePointManagerSecurityProtocols=false;Switch.System.Net.DontEnableSchUseStrongCrypto=false" />
</runtime>

Verbeterde betrouwbaarheid van WCF-toepassingen en WCF-serialisatie

WCF bevat een aantal codewijzigingen die raceomstandigheden elimineren, waardoor de prestaties en de betrouwbaarheid van serialisatieopties worden verbeterd. Dit zijn onder andere:

  • Betere ondersteuning voor het combineren van asynchrone en synchrone code in aanroepen naar SocketConnection.BeginRead en SocketConnection.Read.
  • Verbeterde betrouwbaarheid bij het afbreken van een verbinding met SharedConnectionListener en DuplexChannelBinder-.
  • Verbeterde betrouwbaarheid van serialisatiebewerkingen bij het aanroepen van de methode FormatterServices.GetSerializableMembers(Type).
  • Verbeterde betrouwbaarheid bij het verwijderen van een ober door de methode ChannelSynchronizer.RemoveWaiter aan te roepen.

Windows Forms

In .NET Framework 4.7 verbetert Windows Forms de ondersteuning voor hoge DPI-beeldschermen.

hoge DPI-ondersteuning

Vanaf toepassingen die zich richten op .NET Framework 4.7, biedt .NET Framework hoge DPI- en dynamische DPI-ondersteuning voor Windows Forms-toepassingen. Hoge DPI-ondersteuning verbetert de indeling en het uiterlijk van formulieren en besturingselementen op hoge DPI-beeldschermen. Dynamische DPI wijzigt de indeling en het uiterlijk van formulieren en besturingen wanneer de gebruiker de DPI wijzigt of de schaalfactor van een actieve toepassing aanpast.

Ondersteuning voor hoge DPI is een functie waarvoor u kunt kiezen door een sectie System.Windows.Forms.ConfigurationSection<>te definiëren in uw toepassingsconfiguratiebestand. Zie High DPI Support in Windows Formsvoor meer informatie over het toevoegen van hoge DPI-ondersteuning en dynamische DPI-ondersteuning aan uw Windows Forms-toepassing.

Windows Presentation Foundation (WPF)

In .NET Framework 4.7 bevat WPF de volgende verbeteringen:

Ondersteuning voor een aanraak-/stylusstapel op basis van Windows WM_POINTER berichten

U hebt nu de mogelijkheid om een touch/stylus-stack te gebruiken op basis van WM_POINTER berichten in plaats van het Windows Ink Services Platform (WISP). Dit is een opt-in-functie in .NET Framework. Zie de sectie Toepassingscompatibiliteit voor meer informatie.

Nieuwe implementatie voor WPF-afdruk-API's

De afdruk-API's van WPF in de System.Printing.PrintQueue klasse roepen de Api voor het Afdrukken van documentpakketten voor Windows aan in plaats van de afgeschafte XPS Print API-. Zie de sectie Toepassingscompatibiliteit voor de impact van deze wijziging op toepassingscompatibiliteit.

Wat is er nieuw in .NET Framework 4.6.2

.NET Framework 4.6.2 bevat nieuwe functies op de volgende gebieden:

Zie .NET Framework 4.6.2 API Changes op GitHub voor een lijst met nieuwe API's die zijn toegevoegd aan .NET Framework 4.6.2. Zie voor een lijst met functieverbeteringen en bugfixes in .NET Framework 4.6.2 .NET Framework 4.6.2 List of Changes op GitHub. Zie Aankondiging van .NET Framework 4.6.2 in de .NET-blog voor meer informatie.

ASP.NET

In .NET Framework 4.6.2 bevat ASP.NET de volgende verbeteringen:

Verbeterde ondersteuning voor gelokaliseerde foutberichten in validators voor gegevensannotatie

Met validatie van gegevensaantekeningen kunt u validatie uitvoeren door een of meer kenmerken toe te voegen aan een klasse-eigenschap. Het ValidationAttribute.ErrorMessage-element van het kenmerk definieert de tekst van het foutbericht als de validatie mislukt. Vanaf .NET Framework 4.6.2 kunt u met ASP.NET eenvoudig foutberichten lokaliseren. Foutberichten worden gelokaliseerd als:

  1. De ValidationAttribute.ErrorMessage wordt opgegeven in het validatiekenmerk.

  2. Het resourcebestand wordt opgeslagen in de map App_LocalResources.

  3. De naam van het gelokaliseerde resourcesbestand heeft de vorm DataAnnotation.Localization.{naam}.resx, waarbij naam een cultuurnaam is in de indeling languageCode-land/regioCode of languageCode.

  4. De sleutelnaam van de resource is de tekenreeks die is toegewezen aan het kenmerk ValidationAttribute.ErrorMessage en de bijbehorende waarde is het gelokaliseerde foutbericht.

Met het volgende kenmerk voor gegevensaantekening wordt bijvoorbeeld het foutbericht van de standaardcultuur voor een ongeldige classificatie gedefinieerd.

public class RatingInfo
{
   [Required(ErrorMessage = "The rating must be between 1 and 10.")]
   [Display(Name = "Your Rating")]
   public int Rating { get; set; }
}

Vervolgens kunt u een resourcebestand maken, DataAnnotation.Localization.fr.resx, waarvan de sleutel de tekenreeks voor het foutbericht is en waarvan de waarde het gelokaliseerde foutbericht is. Het bestand moet worden gevonden in de map App.LocalResources. Het volgende is bijvoorbeeld de sleutel en de waarde ervan in een gelokaliseerd frans (fr) taalfoutbericht:

Naam Waarde
De classificatie moet tussen 1 en 10 zijn. Het cijfer moet tussen 1 en 10 liggen.

Daarnaast is lokalisatie van gegevensaantekening uitbreidbaar. Ontwikkelaars kunnen hun eigen stringlokalisatieprovider inpluggen door de IStringLocalizerProvider-interface te implementeren, zodat de lokalisatiestring ergens anders kan worden opgeslagen dan in een resourcebestand.

Async-ondersteuning met providers van sessiestatusarchieven

ASP.NET staat u nu toe dat taakverzendingsmethoden worden gebruikt met providers van sessiestatusopslag, waardoor ASP.NET apps de schaalbaarheidsvoordelen van asynchroon kunnen krijgen. Ter ondersteuning van asynchrone bewerkingen met sessiestatusopslagproviders bevat ASP.NET een nieuwe interface, System.Web.SessionState.ISessionStateModule, die overneemt van IHttpModule en ontwikkelaars in staat stelt hun eigen sessiestatusmodules en asynchrone sessieopslagproviders te implementeren. De interface wordt als volgt gedefinieerd:

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

Bovendien bevat de klasse SessionStateUtility twee nieuwe methoden, IsSessionStateReadOnly en IsSessionStateRequired, die kunnen worden gebruikt om asynchrone bewerkingen te ondersteunen.

Async-ondersteuning voor uitvoercacheproviders

Vanaf .NET Framework 4.6.2 kunnen methoden voor het retourneren van taken worden gebruikt met uitvoercacheproviders om de schaalbaarheidsvoordelen van asynchroon te bieden. Providers die deze methoden implementeren, verminderen threadblokkering op een webserver en verbeteren de schaalbaarheid van een ASP.NET-service.

De volgende API's zijn toegevoegd ter ondersteuning van asynchrone uitvoercacheproviders:

Tekencategorieën

Tekens in .NET Framework 4.6.2 worden geclassificeerd op basis van de Unicode Standard, versie 8.0.0. In .NET Framework 4.6 en .NET Framework 4.6.1 zijn tekens geclassificeerd op basis van Unicode 6.3-tekencategorieën.

Ondersteuning voor Unicode 8.0 is beperkt tot de classificatie van tekens door de CharUnicodeInfo klasse en typen en methoden die erop afhankelijk zijn. Dit zijn de StringInfo-klasse, de overbelaste Char.GetUnicodeCategory methode en de tekenklassen herkend door de reguliere expressie-engine van .NET Framework. Het vergelijken en sorteren van tekens en tekenreeksen wordt niet beïnvloed door deze wijziging en blijft afhankelijk van het onderliggende besturingssysteem of, op Windows 7-systemen, op tekengegevens van .NET Framework.

Zie De Unicode-standaard, versie 7.0.0 op de website unicode consortium voor wijzigingen in tekencategorieën van Unicode 6.0 in Unicode 7.0. Zie De Unicode-standaard, versie 8.0.0 op de website van het Unicode Consortium voor wijzigingen van Unicode 7.0 naar Unicode 8.0.

Cryptografie

Ondersteuning voor X509-certificaten met FIPS 186-3 DSA-

.NET Framework 4.6.2 voegt ondersteuning toe voor DSA-certificaten (Digital Signature Algorithm) X509-certificaten waarvan de sleutels de FIPS 186-2 1024-bits limiet overschrijden.

Naast het ondersteunen van de grotere sleutelgrootten van FIPS 186-3, maakt .NET Framework 4.6.2 computinghandtekeningen mogelijk met de SHA-2-serie hash-algoritmen (SHA256, SHA384 en SHA512). FIPS 186-3-ondersteuning wordt geleverd door de nieuwe System.Security.Cryptography.DSACng-klasse.

In overeenstemming met recente wijzigingen in de klasse RSA in .NET Framework 4.6 en de ECDsa-klasse in .NET Framework 4.6.1 heeft de DSA abstracte basisklasse in .NET Framework 4.6.2 aanvullende methoden waarmee bellers deze functionaliteit kunnen gebruiken zonder cast-conversie. U kunt de DSACertificateExtensions.GetDSAPrivateKey-extensiemethode aanroepen om gegevens te ondertekenen, zoals in het volgende voorbeeld wordt weergegeven.

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

En u kunt de DSACertificateExtensions.GetDSAPublicKey extensiemethode aanroepen om ondertekende gegevens te verifiëren, zoals in het volgende voorbeeld wordt weergegeven.

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

Verbeterde duidelijkheid voor invoer in ECDiffieHellman sleutelafleidingsroutines

.NET Framework 3.5 heeft ondersteuning toegevoegd voor Elliptic Curve Diffie-Hellman Sleutelovereenkomst met drie verschillende KDF-routines (Key Derivation Function). De invoer voor de routines, en de routines zelf, zijn geconfigureerd via eigenschappen op het ECDiffieHellmanCng-object. Maar omdat niet elke routine elke invoereigenschap leest, was er voldoende ruimte voor verwarring over het verleden van de ontwikkelaar.

Om dit in .NET Framework 4.6.2 aan te pakken, zijn de volgende drie methoden toegevoegd aan de ECDiffieHellman basisklasse om deze KDF-routines en hun invoer duidelijker weer te geven:

Methode ECDiffieHellman Beschrijving
DeriveKeyFromHash(ECDiffieHellmanPublicKey, HashAlgorithmName, Byte[], Byte[]) Sleutelmateriaal afleiden door gebruik te maken van de formule

HASH(secretPrepend || x || secretAppend)

HASH(secretPrepend OrElse x OrElse secretAppend)

waarbij x het berekende resultaat is van het EC-Diffie-Hellman-algoritme.
DeriveKeyFromHmac(ECDiffieHellmanPublicKey, HashAlgorithmName, Byte[], Byte[], Byte[]) Sleutelmateriaal afleiden met behulp van de formule

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

HMAC(hmacKey, secretPrepend OrElse x OrElse secretAppend)

waarbij x het berekende resultaat is van het EC-Diffie-Hellman-algoritme.
DeriveKeyTls(ECDiffieHellmanPublicKey, Byte[], Byte[]) Hiermee wordt sleutelmateriaal afgeleid met behulp van het PRF-afleidingsalgoritmen (pseudo-random function) van TLS.

ondersteuning voor permanente symmetrische versleuteling

De Windows-cryptografiebibliotheek (CNG) heeft ondersteuning toegevoegd voor het opslaan van persistente symmetrische sleutels en het gebruik van op hardware opgeslagen symmetrische sleutels. Met .NET Framework 4.6.2 kunnen ontwikkelaars deze functie gebruiken. Aangezien het begrip sleutelnamen en sleutelproviders implementatiespecifiek is, moet u met deze functie de constructor van de concrete implementatietypen gebruiken in plaats van de voorkeursfactorybenadering (zoals het aanroepen van Aes.Create).

Ondersteuning voor permanente symmetrische versleuteling bestaat voor de AES-algoritmen (AesCng) en 3DES (TripleDESCng). Bijvoorbeeld:

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-ondersteuning voor SHA-2-hashing

.NET Framework 4.6.2 voegt ondersteuning toe aan de SignedXml-klasse voor RSA-SHA256-, RSA-SHA384- en RSA-SHA512 PKCS#1-handtekeningmethoden, en SHA256-, SHA384- en SHA512-verwijzingssamenvattalgoritmen.

De URI-constanten worden allemaal weergegeven op SignedXml:

veld SignedXml Constant
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 programma's die een aangepaste SignatureDescription handler hebben geregistreerd in CryptoConfig om ondersteuning voor deze algoritmen toe te voegen, blijven werken zoals in het verleden, maar omdat er nu platformstandaarden zijn, is de CryptoConfig registratie niet meer nodig.

SqlClient

.NET Framework Data Provider voor SQL Server (System.Data.SqlClient) bevat de volgende nieuwe functies in .NET Framework 4.6.2:

Verbindingspooling en time-outs met Azure SQL-databases

Wanneer verbindingspooling is ingeschakeld en er een time-out of een andere aanmeldingsfout optreedt, wordt er een uitzondering gecached en wordt de gecachede uitzondering opgeworpen bij elke volgende verbindingspoging voor de komende 5 seconden tot 1 minuut. Zie SQL Server Connection Pooling (ADO.NET)voor meer informatie.

Dit gedrag is niet wenselijk wanneer u verbinding maakt met Azure SQL Databases, omdat verbindingspogingen kunnen mislukken met tijdelijke fouten die doorgaans snel worden hersteld. Om de ervaring met het opnieuw proberen van de verbinding beter te optimaliseren, wordt het gedrag van de blokkerende periode van de verbindingsgroep verwijderd wanneer verbindingen met Azure SQL Databases mislukken.

Met de toevoeging van het nieuwe PoolBlockingPeriod trefwoord kunt u de blokkerende periode selecteren die het meest geschikt is voor uw app. Waarden zijn onder andere:

Auto

De blokkerende periode van de verbindingsgroep voor een toepassing die verbinding maakt met een Azure SQL Database is uitgeschakeld en de blokkeringsperiode van de verbindingsgroep voor een toepassing die verbinding maakt met een ander SQL Server-exemplaar, is ingeschakeld. Dit is de standaardwaarde. Als de naam van het servereindpunt eindigt op een van de volgende, worden ze beschouwd als Azure SQL-databases:

  • .database.windows.net

  • .database.chinacloudapi.cn

  • .database.usgovcloudapi.net

  • .database.cloudapi.de

AlwaysBlock

De blokkeerperiode van de verbinding pool is altijd ingeschakeld.

NeverBlock

De blokkerende periode van de connectiepool is altijd uitgeschakeld.

Verbeteringen voor Always Encrypted

SQLClient introduceert twee verbeteringen voor Always Encrypted:

  • Om de prestaties van geparameteriseerde query's op versleutelde databasekolommen te verbeteren, worden versleutelingsmetagegevens voor queryparameters nu in de cache opgeslagen. Als de eigenschap SqlConnection.ColumnEncryptionQueryMetadataCacheEnabled is ingesteld op true (dit is de standaardwaarde), als dezelfde query meerdere keren wordt aangeroepen, haalt de client slechts één keer parametermetagegevens van de server op.

  • Kolomversleutelingssleutelvermeldingen in de sleutelcache worden nu verwijderd na een configureerbaar tijdsinterval, ingesteld met behulp van de eigenschap SqlConnection.ColumnEncryptionKeyCacheTtl.

Windows Communication Foundation

In .NET Framework 4.6.2 is Windows Communication Foundation uitgebreid op de volgende gebieden:

WCF-transportbeveiligingsondersteuning voor certificaten die zijn opgeslagen met CNG-

WCF-transportbeveiliging ondersteunt certificaten die zijn opgeslagen met behulp van de Windows cryptografiebibliotheek (CNG). In .NET Framework 4.6.2 is deze ondersteuning beperkt tot het gebruik van certificaten met een openbare sleutel met een exponent van maximaal 32 bits. Wanneer een toepassing is gericht op .NET Framework 4.6.2, is deze functie standaard ingeschakeld.

Voor toepassingen die gericht zijn op .NET Framework 4.6.1 en eerder, maar die worden uitgevoerd op .NET Framework 4.6.2, kan deze functie worden ingeschakeld door de volgende regel toe te voegen aan de sectie <runtime> van het bestand app.config of web.config.

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

Dit kan ook programmatisch worden gedaan met code als de volgende:

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

Betere ondersteuning voor meerdere regels voor zomertijdaanpassing door de DataContractJsonSerializer-klasse

Klanten kunnen een toepassingsconfiguratie-instelling gebruiken om te bepalen of de DataContractJsonSerializer-klasse meerdere aanpassingsregels ondersteunt voor één tijdzone. Dit is een opt-in-functie. Als u dit wilt inschakelen, voegt u de volgende instelling toe aan uw app.config-bestand:

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

Wanneer deze functie is ingeschakeld, gebruikt een DataContractJsonSerializer object het TimeZoneInfo type in plaats van het TimeZone-type om datum- en tijdgegevens te deserialiseren. TimeZoneInfo ondersteunt meerdere aanpassingsregels, waardoor het mogelijk is om te werken met historische tijdzonegegevens; TimeZone niet.

Zie Time Zone Overviewvoor meer informatie over de TimeZoneInfo structuur en tijdzone-aanpassingen.

NetNamedPipeBinding beste overeenkomst

WCF heeft een nieuwe app-instelling die kan worden ingesteld voor clienttoepassingen om ervoor te zorgen dat ze altijd verbinding maken met de service die luistert op de URI die het beste overeenkomt met de URI die ze aanvragen. Als deze app-instelling is ingesteld op false (de standaardinstelling), is het mogelijk voor clients die NetNamedPipeBinding gebruiken om verbinding te maken met een service die luistert op een URI die een subtekenreeks van de aangevraagde URI is.

Een client probeert bijvoorbeeld verbinding te maken met een service die luistert op net.pipe://localhost/Service1, maar een andere service op die computer die wordt uitgevoerd met beheerdersbevoegdheden luistert naar net.pipe://localhost. Als deze app-instelling is ingesteld op false, probeert de client verbinding te maken met de verkeerde service. Nadat u de app-instelling hebt ingesteld op true, maakt de client altijd verbinding met de best overeenkomende service.

Notitie

Klanten die NetNamedPipeBinding gebruiken, vinden diensten op basis van het basisadres van de dienst (indien beschikbaar), in plaats van het volledige adres van het eindpunt. Om ervoor te zorgen dat deze instelling altijd werkt, moet de service een uniek basisadres gebruiken.

Als u deze wijziging wilt inschakelen, voegt u de volgende app-instelling toe aan het App.config- of Web.config-bestand van uw clienttoepassing:

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

SSL 3.0 is geen standaardprotocol

Wanneer u NetTcp gebruikt met transportbeveiliging en een referentietype certificaat, is SSL 3.0 niet langer een standaardprotocol dat wordt gebruikt voor het onderhandelen over een beveiligde verbinding. In de meeste gevallen mag dit geen invloed hebben op bestaande apps, omdat TLS 1.0 is opgenomen in de protocollijst voor NetTcp. Alle bestaande clients moeten kunnen onderhandelen over een verbinding met ten minste TLS 1.0. Als Ssl3 is vereist, gebruikt u een van de volgende configuratiemechanismen om deze toe te voegen aan de lijst met onderhandelde protocollen.

Windows Presentation Foundation (WPF)

In .NET Framework 4.6.2 is Windows Presentation Foundation uitgebreid op de volgende gebieden:

Groep sorteren

Een toepassing die gebruikmaakt van een CollectionView-object om gegevens te groeperen, kan nu expliciet aangeven hoe de groepen moeten worden gesorteerd. Expliciet sorteren lost het probleem op van niet-intuïtieve volgorde die optreedt wanneer een app dynamisch groepen toevoegt of verwijdert, of wanneer deze de waarde wijzigt van itemeigenschappen die betrokken zijn bij groeperen. Het kan ook de prestaties van het proces voor het maken van groepen verbeteren door vergelijkingen van de groeperingseigenschappen van het soort volledige verzameling naar het soort groepen te verplaatsen.

Ter ondersteuning van groepssortering beschrijven de nieuwe eigenschappen GroupDescription.SortDescriptions en GroupDescription.CustomSort hoe u de verzameling groepen kunt sorteren die door het GroupDescription-object worden geproduceerd. Dit is vergelijkbaar met de manier waarop de identieke naam ListCollectionView eigenschappen beschrijven hoe de gegevensitems moeten worden gesorteerd.

Er kunnen twee nieuwe statische eigenschappen van de klasse PropertyGroupDescription, CompareNameAscending en CompareNameDescending, worden gebruikt voor de meest voorkomende gevallen.

De volgende XAML groeperen bijvoorbeeld gegevens op leeftijd, sorteren de leeftijdsgroepen in oplopende volgorde en groeperen de items binnen elke leeftijdsgroep op achternaam.

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

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

Ondersteuning voor aanraaktoetsenbord

Ondersteuning voor aanraaktoetsenbord maakt het bijhouden van focus in WPF-toepassingen mogelijk door automatisch het aanraaktoetsenbord in Windows 10 aan te roepen en te sluiten wanneer de aanraakinvoer wordt ontvangen door een besturingselement dat tekstuele invoer kan aannemen.

In eerdere versies van .NET Framework kunnen WPF-toepassingen zich niet aanmelden voor de focustracking zonder ondersteuning voor WPF-pen-/aanraakbewegingen uit te schakelen. Als gevolg hiervan moeten WPF-toepassingen kiezen tussen volledige WPF-aanraakondersteuning of afhankelijk zijn van Windows-muispromotie.

DPI per monitor

Ter ondersteuning van de recente verspreiding van hoge DPI- en hybride DPI-omgevingen voor WPF-apps maakt WPF in .NET Framework 4.6.2 bewustzijn per monitor mogelijk. Zie de voorbeelden en ontwikkelaarshandleiding op GitHub voor meer informatie over het inschakelen van uw WPF-app om DPI per monitor te detecteren.

In eerdere versies van .NET Framework zijn WPF-apps systeem-DPI-bewust. Met andere woorden, de gebruikersinterface van de toepassing wordt zo nodig geschaald door het besturingssysteem, afhankelijk van de DPI van de monitor waarop de app wordt weergegeven.

Voor apps die worden uitgevoerd onder .NET Framework 4.6.2, kunt u DPI-wijzigingen per monitor uitschakelen in WPF-apps door als volgt een configuratie-instructie toe te voegen aan de sectie <runtime> van uw toepassingsconfiguratiebestand:

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

Windows Workflow Foundation (WF)

In .NET Framework 4.6.2 is Windows Workflow Foundation uitgebreid op het volgende gebied:

Ondersteuning voor C#-expressies en IntelliSense in de opnieuw gehoste WF Designer-

Vanaf .NET Framework 4.5 ondersteunt WF C#-expressies in zowel Visual Studio Designer als in codewerkstromen. De opnieuw gehoste werkstroomontwerper is een belangrijke functie van WF waarmee workflowontwerper zich in een toepassing buiten Visual Studio bevindt (bijvoorbeeld in WPF). Windows Workflow Foundation biedt de mogelijkheid om C#-expressies en IntelliSense te ondersteunen in de opnieuw gehoste werkstroomontwerper. Zie de Windows Workflow Foundation-blogvoor meer informatie.

Availability of IntelliSense when a customer rebuilds a workflow project from Visual Studio In versies van .NET Framework vóór 4.6.2 wordt WF Designer IntelliSense verbroken wanneer een klant een werkstroomproject herbouwt vanuit Visual Studio. Hoewel de projectbuild is geslaagd, worden de werkstroomtypen niet gevonden in de ontwerper en verschijnen waarschuwingen van IntelliSense over de ontbrekende werkstroomtypen in het venster Foutenlijst. .NET Framework 4.6.2 lost dit probleem op en maakt IntelliSense beschikbaar.

Werkstroom V1-toepassingen met werkstroomtracking worden nu uitgevoerd onder de FIPS-modus

Machines waarvoor de FIPS-nalevingsmodus is ingeschakeld, kunnen nu een werkstroomtoepassing versie 1 uitvoeren waarop werkstroomtracering is ingeschakeld. Als u dit scenario wilt inschakelen, moet u de volgende wijziging aanbrengen in uw app.config-bestand:

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

Als dit scenario niet is ingeschakeld, blijft het uitvoeren van de toepassing een uitzondering genereren met het bericht 'Deze implementatie maakt geen deel uit van de door Windows Platform FIPS gevalideerde cryptografische algoritmen'.

Verbeteringen in de werkstroom bij het gebruik van dynamische bijwerking met Visual Studio Workflow Designer

De werkstroomontwerper, de stroomdiagramactiviteitontwerper en andere werkstroomactiviteitontwerpers laden nu succesvol. Ze geven werkstromen weer die zijn opgeslagen nadat de methode DynamicUpdateServices.PrepareForUpdate is aangeroepen. In versies van .NET Framework vóór .NET Framework 4.6.2 kan het laden van een XAML-bestand in Visual Studio voor een werkstroom die is opgeslagen na het aanroepen van DynamicUpdateServices.PrepareForUpdate de volgende problemen kunnen opleveren:

  • De Workflow Designer kan het XAML-bestand niet correct laden (wanneer de ViewStateData.Id aan het einde van de regel staat).

  • Activiteitontwerper voor stroomdiagrammen of andere werkstroomactiviteitontwerpers kunnen alle objecten op hun standaardlocaties weergeven in plaats van gekoppelde eigenschapswaarden.

ClickOnce

ClickOnce is bijgewerkt ter ondersteuning van TLS 1.1 en TLS 1.2, naast het 1.0-protocol dat al wordt ondersteund. ClickOnce detecteert automatisch welk protocol vereist is; er zijn geen extra stappen in de ClickOnce-toepassing vereist om ondersteuning voor TLS 1.1 en 1.2 in te schakelen.

Windows Forms en WPF-apps converteren naar UWP-apps

Windows biedt nu mogelijkheden om bestaande Windows-bureaublad-apps, waaronder WPF- en Windows Forms-apps, naar het Universal Windows Platform (UWP) te brengen. Deze technologie fungeert als een brug door u in staat te stellen uw bestaande codebasis geleidelijk te migreren naar UWP, waardoor uw app naar alle Windows 10-apparaten wordt gebracht.

Geconverteerde bureaublad-apps krijgen een app-identiteit die vergelijkbaar is met de app-identiteit van UWP-apps, waardoor UWP-API's toegankelijk zijn om functies zoals Live-tegels en meldingen in te schakelen. De app blijft zich net zo gedragen als voorheen en wordt uitgevoerd als een volledig vertrouwde app. Zodra de app is geconverteerd, kan een app-containerproces worden toegevoegd aan het bestaande proces voor volledig vertrouwen om een adaptieve gebruikersinterface toe te voegen. Wanneer alle functionaliteit wordt verplaatst naar het app-containerproces, kan het volledig vertrouwde proces worden verwijderd en kan de nieuwe UWP-app beschikbaar gemaakt worden voor alle Windows 10-apparaten.

Verbeteringen voor foutopsporing

De niet-beheerde foutopsporings-API is uitgebreid in .NET Framework 4.6.2 om extra analyses uit te voeren wanneer er een NullReferenceException wordt gegenereerd, zodat kan worden bepaald welke variabele in één regel broncode nullis. Ter ondersteuning van dit scenario zijn de volgende API's toegevoegd aan de niet-beheerde foutopsporings-API.

  • De ICorDebugCode4, ICorDebugVariableHomeen ICorDebugVariableHomeEnum interfaces, waarmee de systeemeigen huizen van beheerde variabelen beschikbaar worden gemaakt. Hierdoor kunnen debuggers een codestroomanalyse uitvoeren wanneer een NullReferenceException plaatsvindt en terugwerken om de beheerde variabele te bepalen die overeenkomt met de native locatie die nullwas.

  • De methode ICorDebugType2::GetTypeID biedt een toewijzing voor ICorDebugType aan COR_TYPEID, waardoor het foutopsporingsprogramma een COR_TYPEID kan verkrijgen zonder een exemplaar van het ICorDebugType. Bestaande API's op COR_TYPEID kunnen vervolgens worden gebruikt om de klasse-indeling van het type te bepalen.

Nieuw in .NET Framework 4.6.1

.NET Framework 4.6.1 bevat nieuwe functies op de volgende gebieden:

Zie de volgende onderwerpen voor meer informatie over .NET Framework 4.6.1:

Cryptografie: ondersteuning voor X509-certificaten met ECDSA

.NET Framework 4.6 heeft RSACng-ondersteuning toegevoegd voor X509-certificaten. .NET Framework 4.6.1 voegt ondersteuning toe voor ECDSA-certificaten (Elliptic Curve Digital Signature Algorithm) X509-certificaten.

ECDSA biedt betere prestaties en is een veiliger cryptografie-algoritme dan RSA, wat een uitstekende keuze biedt waar tls-prestaties (Transport Layer Security) en schaalbaarheid een probleem vormen. De .NET Framework-implementatie verpakt aanroepen naar bestaande Windows-functionaliteit.

In de volgende voorbeeldcode ziet u hoe eenvoudig het is om een handtekening voor een bytestream te genereren met behulp van de nieuwe ondersteuning voor ECDSA X509-certificaten die zijn opgenomen in .NET Framework 4.6.1.

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);
    }
}

Dit biedt een gemarkeerd contrast met de code die nodig is voor het genereren van een handtekening in .NET Framework 4.6.

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

Het volgende is toegevoegd aan ADO.NET:

Always Encrypted-ondersteuning voor met hardware beveiligde sleutels

ADO.NET biedt nu ondersteuning voor het opslaan van Always Encrypted kolomhoofdsleutels in HSM's (Hardware Security Modules). Met deze ondersteuning kunnen klanten gebruikmaken van asymmetrische sleutels die zijn opgeslagen in HSM's zonder dat ze aangepaste hoofdsleutelopslagproviders voor kolommen hoeven te schrijven en ze te registreren in toepassingen.

Klanten moeten de door de HSM geleverde CSP-provider of CNG-sleutelarchiefproviders installeren op de app-servers of clientcomputers om toegang te krijgen tot Always Encrypted-gegevens die zijn beveiligd met kolomhoofdsleutels die zijn opgeslagen in een HSM.

Verbeterd MultiSubnetFailover verbindingsgedrag voor AlwaysOn-

SqlClient biedt nu automatisch snellere verbindingen met een AlwaysOn-beschikbaarheidsgroep (AG). Het detecteert transparant of uw toepassing verbinding maakt met een AlwaysOn-beschikbaarheidsgroep (AG) in een ander subnet en detecteert snel de huidige actieve server en biedt een verbinding met de server. Vóór deze release moest een toepassing de verbindingsreeks instellen om "MultisubnetFailover=true" op te nemen om aan te geven dat deze verbinding maakte met een AlwaysOn-beschikbaarheidsgroep. Zonder het trefwoord voor verbinding met truein te stellen, kan een toepassing een time-out ervaren tijdens het maken van verbinding met een AlwaysOn-beschikbaarheidsgroep. Met deze release hoeft een toepassing niet meerMultiSubnetFailover op true in te stellen. Zie SqlClient-ondersteuning voor hoge beschikbaarheid, herstel na noodgevallenvoor meer informatie over sqlClient-ondersteuning voor AlwaysOn-beschikbaarheidsgroepen.

Windows Presentation Foundation (WPF)

Windows Presentation Foundation bevat een aantal verbeteringen en wijzigingen.

Verbeterde prestaties

De vertraging bij het activeren van aanraakgebeurtenissen is opgelost in .NET Framework 4.6.1. Bovendien blokkeert het invoeren van een RichTextBox-controle de renderthread niet meer bij snelle invoer.

verbeteringen voor spellingcontrole

De spellingcontrole in WPF is bijgewerkt in Windows 8.1 en nieuwere versies om gebruik te maken van besturingssysteemondersteuning voor spellingcontrole in extra talen. Er is geen wijziging in de functionaliteit van Windows-versies vóór Windows 8.1.

Net als in eerdere versies van .NET Framework wordt de taal voor een TextBox besturingselement of een RichTextBox blok gedetecteerd door te zoeken naar informatie in de volgende volgorde:

  • xml:lang, als deze aanwezig is.

  • Huidige invoertaal.

  • Huidige cultuur.

Zie het blogbericht WPF over .NET Framework 4.6.1-functiesvoor meer informatie over taalondersteuning in WPF.

Aanvullende ondersteuning voor aangepaste woordenlijsten per gebruiker

In .NET Framework 4.6.1 herkent WPF aangepaste woordenlijsten die wereldwijd zijn geregistreerd. Deze mogelijkheid is beschikbaar naast de mogelijkheid om ze per controle te registreren.

In eerdere versies van WPF herkende aangepaste woordenlijsten uitgesloten woorden en AutoCorrectie-lijsten niet. Ze worden ondersteund in Windows 8.1 en Windows 10 door het gebruik van bestanden die kunnen worden geplaatst onder de %AppData%\Microsoft\Spelling\<language tag> map. De volgende regels zijn van toepassing op deze bestanden:

  • De bestanden moeten extensies hebben van .dic (voor toegevoegde woorden), .exc (voor uitgesloten woorden) of .acl (voor AutoCorrectie).

  • De bestanden moeten UTF-16 LE plaintext zijn die begint met de Byte Order Mark (BOM).

  • Elke regel moet bestaan uit een woord (in de lijsten met toegevoegde en uitgesloten woorden) of een autocorrectie-paar met de woorden gescheiden door een verticale balk (|) (in de AutoCorrectie-woordenlijst).

  • Deze bestanden worden beschouwd als alleen-lezen en worden niet gewijzigd door het systeem.

Notitie

Deze nieuwe bestandsindelingen worden niet rechtstreeks ondersteund door de WPF-spellingcontrole-API's en de aangepaste woordenlijsten die worden geleverd aan WPF in toepassingen, moeten .lex-bestanden blijven gebruiken.

voorbeelden

Er zijn een aantal WPF-voorbeelden op de Microsoft/WPF-Samples GitHub-opslagplaats. Help ons onze voorbeelden te verbeteren door ons een pull-aanvraag te sturen of een GitHub-probleem te openen.

DirectX-extensies

WPF bevat een NuGet-pakket dat nieuwe implementaties van D3DImage biedt waarmee u eenvoudig kunt samenwerken met DX10- en Dx11-inhoud. De code voor dit pakket is open source en is beschikbaar op GitHub.

Windows Workflow Foundation: Transacties

De methode Transaction.EnlistPromotableSinglePhase kan nu een andere gedistribueerde transactiemanager dan MSDTC gebruiken om de transactie te promoten. Je doet dit door een GUID-transactiepromoter-id op te geven voor de nieuwe Transaction.EnlistPromotableSinglePhase(IPromotableSinglePhaseNotification, Guid) overload. Als deze bewerking is geslaagd, gelden er beperkingen voor de mogelijkheden van de transactie. Zodra een niet-MSDTC-transactiepromoter is ingeschreven, genereert de volgende methoden een TransactionPromotionException omdat deze methoden promotie naar MSDTC vereisen:

Zodra een niet-MSDTC transactie-bemiddelaar is aangemeld, moet deze worden gebruikt voor toekomstige duurzame aanmeldingen volgens de protocollen die het definieert. De Guid van de transactiepromoter kan worden verkregen door gebruik te maken van de eigenschap PromoterType. Wanneer de transactie wordt gepromoot, biedt de transactiepromoter een Byte array die het gepromote token vertegenwoordigt. Een toepassing kan het gepromoveerde token verkrijgen voor een niet-MSDTC gepromoveerde transactie met de GetPromotedToken methode.

Gebruikers van de nieuwe Transaction.EnlistPromotableSinglePhase(IPromotableSinglePhaseNotification, Guid) overbelasting moeten een specifieke aanroepvolgorde volgen om de promotiebewerking te kunnen voltooien. Deze regels worden beschreven in de documentatie van de methode.

Profielopbouw

De niet-beheerde profilerings-API is als volgt uitgebreid:

  • Betere ondersteuning voor toegang tot PDBs in de ICorProfilerInfo7 interface.

    In ASP.NET Core wordt het veel gebruikelijker voor assembly's die in het geheugen worden gecompileerd door Roslyn. Voor ontwikkelaars die profileringshulpprogramma's maken, betekent dit dat PDBs die historisch op schijf zijn geserialiseerd, mogelijk niet meer aanwezig zijn. Profiler-tools maken vaak gebruik van Program Database-bestanden (PDB's) om code weer toe te wijzen aan broncoderegels voor taken zoals code dekking of regel-voor-regel prestatieanalyse. De ICorProfilerInfo7 interface bevat nu twee nieuwe methoden, ICorProfilerInfo7::GetInMemorySymbolsLength en ICorProfilerInfo7::ReadInMemorySymbols, om deze profilerhulpprogramma's toegang te bieden tot de in-memory PDB-gegevens, Met behulp van de nieuwe API's kan een profiler de inhoud van een in-memory PDB als bytematrix verkrijgen en deze vervolgens verwerken of serialiseren naar schijf.

  • Betere instrumentatie met de ICorProfiler-interface.

    Profilers die gebruikmaken van de ICorProfiler API's ReJit-functionaliteit voor dynamische instrumentatie kunnen nu enkele metagegevens wijzigen. Voorheen konden dergelijke hulpprogramma's IL op elk moment instrumenteren, maar metagegevens konden alleen worden gewijzigd tijdens het laden van de module. Omdat IL verwijst naar metagegevens, beperkt dit de soorten instrumentatie die kunnen worden uitgevoerd. We hebben enkele van deze limieten opgeheven door de methode ICorProfilerInfo7::ApplyMetaData methode toe te voegen ter ondersteuning van een subset metagegevensbewerkingen na het laden van de module, met name door nieuwe AssemblyRef, TypeRef, TypeSpec, MemberRef, MemberSpecen UserString records toe te voegen. Deze wijziging maakt een veel breder scala aan on-the-fly instrumentatie mogelijk.

Native Image Generator (NGEN) PDBs

Met gebeurtenistracering op meerdere machines kunnen klanten een programma op Machine A profileren en de profileringsgegevens bekijken met bronlijntoewijzing op machine B. Met eerdere versies van .NET Framework kopieert de gebruiker alle modules en systeemeigen installatiekopieën van de geprofileerde machine naar de analysecomputer die de IL PDB bevat om de bron-naar-systeemeigen toewijzing te maken. Hoewel dit proces goed werkt wanneer de bestanden relatief klein zijn, zoals voor telefoontoepassingen, kunnen de bestanden erg groot zijn op desktopsystemen en veel tijd nodig hebben om te kopiëren.

Met NGen PDBs kan NGen een PDB maken die de IL-naar-native mapping bevat zonder afhankelijk te zijn van de IL PDB. In ons scenario voor het traceren van gebeurtenissen op meerdere machines is alles wat nodig is om de systeemeigen installatiekopie-PDB te kopiëren die wordt gegenereerd door Machine A naar Machine B en om API's voor foutopsporingsinterfacetoegang te gebruiken om de bron-to-IL toewijzing van il-to-IL en de il-to-native toewijzing van de systeemeigen installatiekopie van PDB te lezen. Het combineren van beide toewijzingen biedt een bron-naar-systeemeigen toewijzing. Omdat de systeemeigen installatiekopie PDB veel kleiner is dan alle modules en systeemeigen installatiekopieën, is het kopiëren van Machine A naar Machine B veel sneller.

Nieuw in .NET 2015

.NET 2015 introduceert .NET Framework 4.6 en .NET Core. Sommige nieuwe functies zijn van toepassing op beide en andere functies zijn specifiek voor .NET Framework 4.6 of .NET Core.

  • ASP.NET Core

    .NET 2015 bevat ASP.NET Core, een lean .NET-implementatie voor het bouwen van moderne cloud-apps. ASP.NET Core is modulair, zodat u alleen de functies kunt opnemen die nodig zijn in uw toepassing. Het kan worden gehost op IIS of zelf-hosten in een aangepast proces en u kunt apps uitvoeren met verschillende versies van het .NET Framework op dezelfde server. Het bevat een nieuw omgevingsconfiguratiesysteem dat is ontworpen voor cloudimplementatie.

    MVC, Web-API en Webpagina's zijn geïntegreerd in één framework met de naam MVC 6. U bouwt ASP.NET Core-apps via hulpprogramma's in Visual Studio 2015 of hoger. Uw bestaande toepassingen werken aan het nieuwe .NET Framework; Als u echter een app wilt bouwen die gebruikmaakt van MVC 6 of SignalR 3, moet u het projectsysteem gebruiken in Visual Studio 2015 of hoger.

    Zie ASP.NET Corevoor meer informatie.

  • ASP.NET updates

    • op taken gebaseerde API voor Asynchrone respons leegmaken

      ASP.NET biedt nu een eenvoudige taakgebaseerde API voor het asynchroon doorspoelen van reacties, HttpResponse.FlushAsync, waarmee reacties asynchroon kunnen worden doorgespoeld door gebruik te maken van de ondersteunde async/await functionaliteit van uw taal.

    • Modelbinding ondersteunt methoden voor het retourneren van taken

      In .NET Framework 4.5 heeft ASP.NET de functie Modelbinding toegevoegd waarmee een uitbreidbare, codegerichte benadering van CRUD-gegevensbewerkingen in webpagina's en gebruikersbesturingselementen mogelijk is. Het modelbindingssysteem ondersteunt nu modelbindingsmethoden die Taskretourneren. Met deze functie kunnen webformulierontwikkelaars de schaalbaarheidsvoordelen van asynchroon krijgen met het gemak van het systeem voor gegevensbinding wanneer ze nieuwere versies van ORM's gebruiken, waaronder entity framework.

      Asynchrone modelbinding wordt beheerd door de aspnet:EnableAsyncModelBinding configuratie-instelling.

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

      Bij apps wordt het .NET Framework 4.6 standaard truegebruikende. Voor apps die worden uitgevoerd op .NET Framework 4.6 die zijn gericht op een eerdere versie van .NET Framework, is deze standaard false. Deze kan worden ingeschakeld door de configuratie-instelling in te stellen op true.

    • HTTP/2-ondersteuning (Windows 10)

      HTTP/2 is een nieuwe versie van het HTTP-protocol die veel beter gebruik maakt van verbindingen (minder gegevensuitwisseling tussen client en server), wat resulteert in lagere laadtijden van webpagina's voor gebruikers. Webpagina's (in tegenstelling tot services) profiteren het meeste van HTTP/2, omdat het protocol optimaliseert voor meerdere artefacten die worden aangevraagd als onderdeel van één ervaring. HTTP/2-ondersteuning is toegevoegd aan ASP.NET in .NET Framework 4.6. Omdat de netwerkfunctionaliteit op meerdere lagen bestaat, zijn er nieuwe functies vereist in Windows, in IIS en in ASP.NET om HTTP/2 in te schakelen. U moet windows 10 gebruiken om HTTP/2 te kunnen gebruiken met ASP.NET.

      HTTP/2 wordt ook ondersteund en standaard ingeschakeld voor UWP-apps (Universal Windows Platform) voor Windows 10 die gebruikmaken van de System.Net.Http.HttpClient-API.

      Om de PUSH_PROMISE functie in ASP.NET toepassingen te kunnen gebruiken, is er een nieuwe methode met twee overbelastingen, PushPromise(String) en PushPromise(String, String, NameValueCollection), toegevoegd aan de HttpResponse-klasse.

      Notitie

      Hoewel ASP.NET Core HTTP/2 ondersteunt, is de ondersteuning voor de functie PUSH PROMISE nog niet toegevoegd.

      De browser en de webserver (IIS in Windows) doen al het werk. U hoeft geen zware werk te doen voor uw gebruikers.

      De meeste van de grote browsers ondersteunen HTTP/2, dus het is waarschijnlijk dat uw gebruikers profiteren van HTTP/2-ondersteuning als uw server dit ondersteunt.

    • ondersteuning voor het tokenbindingsprotocol

      Microsoft en Google hebben samengewerkt aan een nieuwe benadering van verificatie, het Token Binding Protocolgenoemd. Het uitgangspunt is dat verificatietokens (in uw browsercache) kunnen worden gestolen en door criminelen kunnen worden gebruikt voor toegang tot anderszins beveiligde resources (bijvoorbeeld uw bankrekening) zonder dat uw wachtwoord of andere bevoegde kennis is vereist. Het nieuwe protocol is erop gericht dit probleem te verhelpen.

      Het tokenbindingsprotocol wordt geïmplementeerd in Windows 10 als browserfunctie. ASP.NET apps deelnemen aan het protocol, zodat verificatietokens worden gevalideerd om legitiem te zijn. De client en de server-implementaties bepalen de end-to-end-beveiliging die door het protocol is opgegeven.

    • gerandomiseerde hash-algoritmen voor tekenreeksen

      .NET Framework 4.5 heeft een gerandomiseerde hash-algoritme voor tekenreeksen geïntroduceerd. Het werd echter niet ondersteund door ASP.NET omdat sommige ASP.NET functies afhankelijk waren van een stabiele hash-code. In .NET Framework 4.6 worden gerandomiseerde hash-algoritmen voor tekenreeksen nu ondersteund. Als u deze functie wilt inschakelen, gebruikt u de aspnet:UseRandomizedStringHashAlgorithm configuratie-instelling.

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

    ADO .NET ondersteunt nu de functie Always Encrypted die beschikbaar is in SQL Server 2016. Met Always Encrypted kan SQL Server bewerkingen uitvoeren op versleutelde gegevens, en het beste van alle versleutelingssleutels bevindt zich bij de toepassing in de vertrouwde omgeving van de klant en niet op de server. Always Encrypted beveiligt klantgegevens, zodat DBA's geen toegang hebben tot gegevens in platte tekst. Versleuteling en ontsleuteling van gegevens gebeurt transparant op stuurprogrammaniveau, waardoor wijzigingen die moeten worden aangebracht in bestaande toepassingen worden geminimaliseerd. Zie Always Encrypted (Database Engine) en Always Encrypted (clientontwikkeling)voor meer informatie.

  • 64-bits JIT-compiler voor beheerde code

    .NET Framework 4.6 bevat een nieuwe versie van de 64-bits JIT-compiler (oorspronkelijk met code genaamd RyuJIT). De nieuwe 64-bits compiler biedt aanzienlijke prestatieverbeteringen ten opzichte van de oudere 64-bits JIT-compiler. De nieuwe 64-bits compiler is ingeschakeld voor 64-bits processen die worden uitgevoerd boven op .NET Framework 4.6. Uw app wordt uitgevoerd in een 64-bits proces als deze is gecompileerd als 64-bits of AnyCPU en wordt uitgevoerd op een 64-bits besturingssysteem. Hoewel u ervoor hebt gezorgd dat de overgang naar de nieuwe compiler zo transparant mogelijk is, zijn er wijzigingen in het gedrag mogelijk.

    De nieuwe 64-bits JIT-compiler bevat ook hardware-SIMD-versnellingsfuncties in combinatie met SIMD-typen in de System.Numerics-naamruimte, wat goede prestatieverbeteringen kan opleveren.

  • Verbeteringen van assemblylaadprogramma's

    De montagelader gebruikt nu efficiënter geheugen door IL-assembly's te verwijderen nadat een bijbehorende NGEN-afbeelding is geladen. Deze wijziging vermindert het virtuele geheugen, wat met name nuttig is voor grote 32-bits apps (zoals Visual Studio), en bespaart ook fysiek geheugen.

  • Wijzigingen in de basisklassebibliotheek

    Er zijn veel nieuwe API's toegevoegd aan .NET Framework 4.6 om belangrijke scenario's mogelijk te maken. Deze omvatten de volgende wijzigingen en toevoegingen:

    • IReadOnlyCollection<T>-implementaties

      Aanvullende verzamelingen implementeren IReadOnlyCollection<T> zoals Queue<T> en Stack<T>.

    • CultureInfo.CurrentCulture en CultureInfo.CurrentUICulture

      De eigenschappen CultureInfo.CurrentCulture en CultureInfo.CurrentUICulture zijn nu lezen/schrijven in plaats van alleen-lezen. Als u een nieuw CultureInfo-object aan deze eigenschappen toewijst, wordt de huidige threadcultuur die is gedefinieerd door de eigenschap Thread.CurrentThread.CurrentCulture en de huidige cultuur van de ui-thread die is gedefinieerd door de eigenschappen van de Thread.CurrentThread.CurrentUICulture ook gewijzigd.

    • verbeteringen in garbagecollection (GC)

      De GC-klasse bevat nu de methoden TryStartNoGCRegion en EndNoGCRegion waarmee u garbage collection kunt uitschakelen tijdens de uitvoering van een kritisch pad.

      Met een nieuwe overbelasting van de GC.Collect(Int32, GCCollectionMode, Boolean, Boolean) methode kunt u bepalen of zowel de kleine object heap als de grote object heap worden geveegd en gecomprimeerd of alleen worden geveegd.

    • typen met SIMD-ondersteuning

      De System.Numerics naamruimte bevat nu een aantal typen simd-functionaliteit, zoals Matrix3x2, Matrix4x4, Plane, Quaternion, Vector2, Vector3en Vector4.

      Omdat de nieuwe 64-bits JIT-compiler ook hardware-SIMD-versnellingsfuncties bevat, zijn er met name aanzienlijke prestatieverbeteringen bij het gebruik van de SIMD-typen met de nieuwe 64-bits JIT-compiler.

    • cryptografie-updates

      De System.Security.Cryptography-API wordt bijgewerkt ter ondersteuning van de Windows CNG-cryptografie-API's. Eerdere versies van .NET Framework zijn volledig gebaseerd op een eerdere versie van de Windows Cryptography-API's als basis voor de System.Security.Cryptography-implementatie. We hebben aanvragen gehad om de CNG-API te ondersteunen, omdat deze ondersteuning biedt voor moderne cryptografiealgoritmen, die belangrijk zijn voor bepaalde categorieën apps.

      .NET Framework 4.6 bevat de volgende nieuwe verbeteringen ter ondersteuning van de Cryptografie-API's van Windows CNG:

      • Een set uitbreidingsmethoden voor X509-certificaten, System.Security.Cryptography.X509Certificates.RSACertificateExtensions.GetRSAPublicKey(System.Security.Cryptography.X509Certificates.X509Certificate2) en System.Security.Cryptography.X509Certificates.RSACertificateExtensions.GetRSAPrivateKey(System.Security.Cryptography.X509Certificates.X509Certificate2), die een op CNG gebaseerde implementatie retourneren in plaats van een op CAPI gebaseerde implementatie, indien mogelijk. (Sommige smartcards, enzovoort, vereisen nog steeds CAPI en de API's verwerken de terugval).

      • De System.Security.Cryptography.RSACng-klasse, die een CNG-implementatie van het RSA-algoritme biedt.

      • Verbeteringen aan de RSA-API, zodat veelgebruikte acties geen casting meer vereisen. Voor het versleutelen van gegevens met behulp van een X509Certificate2-object is bijvoorbeeld code vereist, zoals in eerdere versies van .NET Framework.

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

        Code die gebruikmaakt van de nieuwe cryptografie-API's in .NET Framework 4.6 kan als volgt worden herschreven om de cast te voorkomen.

        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);
        
    • Ondersteuning voor het converteren van datums en tijden naar of van Unix-tijd

      De volgende nieuwe methoden zijn toegevoegd aan de DateTimeOffset structuur ter ondersteuning van het converteren van datum- en tijdwaarden naar of van Unix-tijd:

    • compatibiliteitsswitches

      De AppContext-klasse voegt een nieuwe compatibiliteitsfunctie toe waarmee bibliotheekschrijvers een uniform opt-outmechanisme kunnen bieden voor nieuwe functionaliteit voor hun gebruikers. Er wordt een losjes gekoppeld contract tussen componenten tot stand gebracht om een opt-out-aanvraag te communiceren. Deze mogelijkheid is doorgaans belangrijk wanneer een wijziging wordt aangebracht in bestaande functionaliteit. Omgekeerd is er al een impliciete opt-in voor nieuwe functionaliteit.

      Met AppContextdefiniëren en beschikbaar maken bibliotheken compatibiliteitsswitches, terwijl code die ervan afhankelijk is, deze switches kunnen instellen om het gedrag van de bibliotheek te beïnvloeden. Bibliotheken bieden standaard de nieuwe functionaliteit en ze wijzigen deze alleen (dat wil gezegd, ze bieden de vorige functionaliteit) als de switch is ingesteld.

      Een toepassing (of bibliotheek) kan de waarde van een schakelaar (die altijd een Boolean-waarde is) opgeven die door een gerelateerde bibliotheek wordt gedefinieerd. De switch wordt altijd impliciet false. Als u de schakelaar instelt op true schakelt u deze in. Het expliciet instellen van de schakelaar op false biedt het nieuwe gedrag.

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

      De bibliotheek moet controleren of een consument de waarde van de switch heeft gedeclareerd en vervolgens op de juiste wijze actie heeft ondernemen.

      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
      }
      

      Het is handig om een consistente indeling te gebruiken voor switches, omdat ze een formeel contract zijn dat door een bibliotheek wordt weergegeven. Hier volgen twee voor de hand liggende formaten.

      • Switch.naamruimte.switchnaam

      • Switch.bibliotheek.switchnaam

    • Wijzigingen in het asynchrone patroon op basis van taken (TAP)

      Voor apps die zich richten op .NET Framework 4.6, nemen Task en Task<TResult> objecten de cultuur en ui-cultuur van de aanroepende thread over. Het gedrag van apps die gericht zijn op eerdere versies van .NET Framework of die geen specifieke versie van .NET Framework targeten, wordt niet beïnvloed. Zie de sectie 'Asynchrone bewerkingen op basis van cultuur en taken' van het CultureInfo klasonderwerp voor meer informatie.

      Met de System.Threading.AsyncLocal<T>-klasse kunt u omgevingsgegevens vertegenwoordigen die lokaal zijn voor een bepaalde asynchrone controlestroom, zoals een async methode. Het kan worden gebruikt om gegevens over threads vast te houden. U kunt ook een callback-methode definiëren die wordt gewaarschuwd wanneer de omgevingsgegevens worden gewijzigd, omdat de eigenschap AsyncLocal<T>.Value expliciet is gewijzigd of omdat de thread een contextovergang heeft aangetroffen.

      Er zijn drie handige methoden, Task.CompletedTask, Task.FromCanceleden Task.FromException, toegevoegd aan het asynchrone patroon op basis van taken (TAP) om voltooide taken in een bepaalde status te retourneren.

      De NamedPipeClientStream klasse ondersteunt nu asynchrone communicatie met de nieuwe ConnectAsync. methode.

    • EventSource ondersteunt nu het schrijven naar het gebeurtenislogboek

      U kunt nu de EventSource-klasse gebruiken om administratieve of operationele berichten in het gebeurtenislogboek te registreren, naast eventuele bestaande ETW-sessies die op de computer zijn gemaakt. In het verleden moest u het NuGet-pakket Microsoft.Diagnostics.Tracing.EventSource gebruiken voor deze functionaliteit. Deze functionaliteit is nu ingebouwd in .NET Framework 4.6.

      Zowel het NuGet-pakket als .NET Framework 4.6 zijn bijgewerkt met de volgende functies:

      • dynamische gebeurtenissen

        Hiermee staat u gebeurtenissen toe die 'on the fly' zijn gedefinieerd zonder gebeurtenismethoden te maken.

      • rijke payloads

        Hiermee kunnen speciaal geattribueerde klassen en arrays, evenals primitieve typen, worden doorgegeven als payload.

      • Activiteiten volgen

        Zorgt ervoor dat Start- en Stop-gebeurtenissen de gebeurtenissen ertussen taggen met een ID die alle momenteel actieve activiteiten vertegenwoordigt.

      Ter ondersteuning van deze functies is de overbelaste Write methode toegevoegd aan de EventSource-klasse.

  • Windows Presentation Foundation (WPF)

    • HDPI-verbeteringen

      HDPI-ondersteuning in WPF is nu beter in .NET Framework 4.6. Er zijn wijzigingen aangebracht in het afronden van lay-outinstellingen om het voorkomen van visuele clipping in bedieningselementen met randen te verminderen. Deze functie is standaard alleen ingeschakeld als uw TargetFrameworkAttribute is ingesteld op .NET Framework 4.6. Toepassingen die gericht zijn op eerdere versies van het framework, maar die worden uitgevoerd op .NET Framework 4.6, kunnen zich aanmelden voor het nieuwe gedrag door de volgende regel toe te voegen aan de sectie <runtime> van het app.config-bestand:

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

      WPF-vensters die meerdere beeldschermen met verschillende DPI-instellingen (Multi-DPI-setup) overspannen, worden nu volledig weergegeven zonder zwart gemaakte gebieden. U kunt zich afmelden voor dit gedrag door de volgende regel toe te voegen aan de sectie <appSettings> van het app.config-bestand om dit nieuwe gedrag uit te schakelen:

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

      Ondersteuning voor het automatisch laden van de rechtercursor op basis van DPI-instelling is toegevoegd aan System.Windows.Input.Cursor.

    • Aanraking is beter

      Klanten hebben gemeld op Connect dat aanraken onvoorspelbaar gedrag veroorzaakt, en dit is aangepakt in .NET Framework 4.6. De drempelwaarde voor dubbeltikken voor Windows Store-toepassingen en WPF-toepassingen is nu hetzelfde in Windows 8.1 en hoger.

    • ondersteuning voor transparant onderliggend venster

      WPF in .NET Framework 4.6 ondersteunt transparante onderliggende vensters in Windows 8.1 en hoger. Hiermee kunt u niet-rechthoekige en transparante onderliggende vensters maken in uw vensters op het hoogste niveau. U kunt deze functie inschakelen door de eigenschap HwndSourceParameters.UsesPerPixelTransparency in te stellen op true.

  • Windows Communication Foundation (WCF)

    • SSL-ondersteuning

      WCF biedt nu ondersteuning voor SSL-versie TLS 1.1 en TLS 1.2, naast SSL 3.0 en TLS 1.0, wanneer u NetTcp gebruikt met transportbeveiliging en clientverificatie. Het is nu mogelijk om te selecteren welk protocol moet worden gebruikt of om oude, minder veilige protocollen uit te schakelen. U kunt dit doen door de eigenschap SslProtocols in te stellen of door het volgende toe te voegen aan een configuratiebestand.

      <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>
      
    • Berichten verzenden met behulp van verschillende HTTP-verbindingen

      Met WCF kunnen gebruikers er nu voor zorgen dat bepaalde berichten worden verzonden met behulp van verschillende onderliggende HTTP-verbindingen. U kunt dit op twee manieren doen:

      • Een voorvoegsel voor de naam van een verbindingsgroep gebruiken

        Gebruikers kunnen een tekenreeks opgeven die WCF gebruikt als voorvoegsel voor de naam van de verbindingsgroep. Twee berichten met verschillende voorvoegsels worden verzonden met behulp van verschillende onderliggende HTTP-verbindingen. U stelt het voorvoegsel in door een sleutel/waardepaar toe te voegen aan de eigenschap Message.Properties van het bericht. De sleutel is "HttpTransportConnectionGroupNamePrefix"; het gewenste voorvoegsel is de waarde.

      • Verschillende kanalenfabrieken gebruiken

        Gebruikers kunnen ook een functie inschakelen die ervoor zorgt dat berichten die worden verzonden via kanalen die door verschillende kanaalfactory's zijn gemaakt, verschillende onderliggende HTTP-verbindingen gebruiken. Als u deze functie wilt inschakelen, moeten gebruikers de volgende appSetting instellen op true:

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

    U kunt nu het aantal seconden opgeven dat een werkstroomservice vasthoudt aan een verkeerd geplaatste bewerkingsaanvraag wanneer er een openstaande 'niet-protocol' bladwijzer is voordat er een time-out optreedt voor de aanvraag. Een bladwijzer zonder protocol is een bladwijzer die niet is gerelateerd aan openstaande ontvangstactiviteiten. Sommige activiteiten maken bladwijzers zonder protocol binnen hun implementatie, dus het is mogelijk niet duidelijk dat er een bladwijzer zonder protocol bestaat. Deze omvatten State en Pick. Dus als u een workflowservice hebt geïmplementeerd met een statusmachine of met een pick-activiteit, zult u waarschijnlijk niet-protocol bladwijzers hebben. U geeft het interval op door een regel als de volgende toe te voegen aan de sectie appSettings van uw app.config bestand:

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

    De standaardwaarde is 60 seconden. Als value is ingesteld op 0, worden aanvragen buiten bestelling onmiddellijk geweigerd met een fout met tekst die er als volgt uitziet:

    Operation 'Request3|{http://tempuri.org/}IService' on service instance with identifier '2b0667b6-09c8-4093-9d02-f6c67d534292' cannot be performed at this time. Please ensure that the operations are performed in the correct order and that the binding in use provides ordered delivery guarantees.
    

    Dit is hetzelfde bericht dat u ontvangt als er een verstoringsbewerkingsbericht wordt ontvangen en er geen niet-protocol bladwijzers zijn.

    Als de waarde van het element FilterResumeTimeoutInSeconds niet nul is, het time-outinterval verloopt en er bladwijzers zonder protocol zijn, mislukt de bewerking met een time-outbericht.

  • Transacties

    U kunt nu de gedistribueerde transactie-id opnemen voor de transactie die een uitzondering heeft veroorzaakt die is afgeleid van TransactionException wordt gegenereerd. U doet dit door de volgende sleutel toe te voegen aan de sectie appSettings van uw app.config bestand:

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

    De standaardwaarde is false.

  • Netwerken

    • Socket opnieuw gebruiken

      Windows 10 bevat een nieuw algoritme voor netwerken met hoge schaalbaarheid dat beter gebruik maakt van machineresources door lokale poorten te hergebruiken voor uitgaande TCP-verbindingen. .NET Framework 4.6 ondersteunt het nieuwe algoritme, waardoor .NET-apps kunnen profiteren van het nieuwe gedrag. In eerdere versies van Windows was er een kunstmatige gelijktijdige verbindingslimiet (meestal 16.384, de standaardgrootte van het dynamische poortbereik), waardoor de schaalbaarheid van een service kan worden beperkt door poortuitputting te veroorzaken wanneer de belasting wordt uitgevoerd.

      In .NET Framework 4.6 zijn twee API's toegevoegd om het hergebruik van poorten mogelijk te maken, waardoor de limiet van 64 kB voor gelijktijdige verbindingen effectief wordt verwijderd:

      De eigenschap ServicePointManager.ReusePort is standaard false, tenzij de HWRPortReuseOnSocketBind waarde van de registersleutel van HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 is ingesteld op 0x1. Als u het hergebruik van lokale poorten voor HTTP-verbindingen wilt inschakelen, stelt u de eigenschap ServicePointManager.ReusePort in op true. Dit zorgt ervoor dat alle uitgaande TCP-socketverbindingen van HttpClient en HttpWebRequest een nieuwe Windows 10-socketoptie, SO_REUSE_UNICASTPORT, gebruiken waarmee lokale poort opnieuw kan worden gebruikt.

      Ontwikkelaars die een sockets-only-toepassing schrijven, kunnen de optie System.Net.Sockets.SocketOptionName opgeven bij het aanroepen van een methode, zoals Socket.SetSocketOption, zodat uitgaande sockets lokale poorten opnieuw gebruiken tijdens de binding.

    • Ondersteuning voor internationale domeinnamen en PunyCode-

      Er is een nieuwe eigenschap, IdnHost, toegevoegd aan de Uri klasse om internationale domeinnamen en PunyCode beter te ondersteunen.

  • Het formaat veranderen in Windows Forms-besturingselementen.

    Deze functie is uitgebreid in .NET Framework 4.6 om de DomainUpDown, NumericUpDown, DataGridViewComboBoxColumn, DataGridViewColumn en ToolStripSplitButton typen en de rechthoek op te nemen die is opgegeven door de eigenschap Bounds die wordt gebruikt bij het tekenen van een UITypeEditor.

    Dit is een opt-in-functie. Als u dit wilt inschakelen, stelt u het element EnableWindowsFormsHighDpiAutoResizing in op true in het toepassingsconfiguratiebestand (app.config):

    <appSettings>
        <add key="EnableWindowsFormsHighDpiAutoResizing" value="true" />
    </appSettings>
    
  • Ondersteuning voor codepagina-encoderingen

    .NET Core ondersteunt voornamelijk de Unicode-coderingen en biedt standaard beperkte ondersteuning voor codepaginacoderingen. U kunt ondersteuning toevoegen voor codepaginacoderingen die beschikbaar zijn in .NET Framework, maar niet worden ondersteund in .NET Core door codepaginacoderingen te registreren met de methode Encoding.RegisterProvider. Zie System.Text.CodePagesEncodingProvidervoor meer informatie.

  • .NET Native

UWP-apps (Universal Windows Platform) die zijn geschreven in C# of Visual Basic, kunnen profiteren van een nieuwe technologie waarmee apps worden gecompileerd naar systeemeigen code in plaats van IL. Deze technologie produceert apps met snellere opstart- en uitvoeringstijden. Zie Apps compileren met .NET Nativevoor meer informatie. Zie voor een overzicht van .NET Native dat onderzoekt hoe deze verschilt van zowel JIT-compilatie als NGEN en wat dat betekent voor uw code, .NET Native en Compilatie-.

Uw apps worden standaard gecompileerd naar systeemeigen code wanneer u ze compileert met Visual Studio 2015 of hoger. Zie Aan de slag met .NET Nativevoor meer informatie.

Ter ondersteuning van foutopsporing van .NET Native-apps zijn een aantal nieuwe interfaces en opsommingen toegevoegd aan de niet-beheerde foutopsporings-API. Zie het onderwerp Foutopsporing (naslaginformatie over niet-beheerde API) voor meer informatie.

Wat is er nieuw in .NET Framework 4.5.2

  • Nieuwe API's voor ASP.NET-apps. Met de nieuwe HttpResponse.AddOnSendingHeaders- en HttpResponseBase.AddOnSendingHeaders-methoden kunt u responseheaders en statuscode inspecteren en wijzigen terwijl de respons wordt verzonden naar de client-app. Overweeg deze methoden te gebruiken in plaats van de gebeurtenissen PreSendRequestHeaders en PreSendRequestContent; ze zijn efficiënter en betrouwbaarder.

    Met de methode HostingEnvironment.QueueBackgroundWorkItem kunt u kleine achtergrondwerkitems plannen. ASP.NET houdt deze items bij en voorkomt dat IIS het werkproces plotseling beëindigt totdat alle achtergrondwerkitems zijn voltooid. Deze methode kan niet worden aangeroepen buiten een ASP.NET beheerde app-domein.

    De nieuwe HttpResponse.HeadersWritten- en HttpResponseBase.HeadersWritten-eigenschappen retourneren Booleaanse waarden die aangeven of de antwoordheaders zijn geschreven. U kunt deze eigenschappen gebruiken om ervoor te zorgen dat aanroepen naar API's, zoals HttpResponse.StatusCode (die uitzonderingen genereren als de headers zijn geschreven), slaagt.

  • Het formaat wijzigen in Besturingselementen voor Windows Forms. Deze functie is uitgevouwen. U kunt nu de systeem-DPI-instelling gebruiken om het formaat van onderdelen van de volgende aanvullende besturingselementen te wijzigen, zoals de vervolgkeuzepijl in keuzelijsten:

    Dit is een opt-in-functie. Als u dit wilt inschakelen, stelt u het element EnableWindowsFormsHighDpiAutoResizing in op true in het toepassingsconfiguratiebestand (app.config):

    <appSettings>
        <add key="EnableWindowsFormsHighDpiAutoResizing" value="true" />
    </appSettings>
    
  • Nieuwe werkstroomfunctie. Een resourcemanager die gebruikmaakt van de EnlistPromotableSinglePhase methode (en daarom de IPromotableSinglePhaseNotification-interface implementeert) kan de nieuwe Transaction.PromoteAndEnlistDurable methode gebruiken om het volgende aan te vragen:

    Dit kan worden gedaan binnen hetzelfde app-domein en vereist geen extra onbeheerde code om te communiceren met MSDTC om de promotie uit te voeren. De nieuwe methode kan alleen worden aangeroepen wanneer er een actieve aanroep van System.Transactions is naar de IPromotableSinglePhaseNotificationPromote methode die wordt geïmplementeerd door de promoteerbare registratie.

  • Profileringsverbeteringen. De volgende nieuwe niet-beheerde profilerings-API's bieden krachtigere profilering:

    Vorige ICorProfiler implementaties ondersteund luie belasting van afhankelijke assembly's. De nieuwe profilerings-API's vereisen afhankelijke assembly's die door de profiler worden geïnjecteerd, zodat ze onmiddellijk kunnen worden geladen in plaats van dat ze worden geladen nadat de app volledig is geïnitialiseerd. Deze wijziging heeft geen invloed op gebruikers van de bestaande ICorProfiler API's.

  • Verbeteringen voor foutopsporing. De volgende nieuwe niet-beheerde foutopsporings-API's bieden een betere integratie met een profiler. U hebt nu toegang tot metagegevens die zijn ingevoegd door de profiler, evenals lokale variabelen en code die wordt geproduceerd door Compiler ReJIT-aanvragen bij dumpfoutopsporing.

  • Wijzigingen in gebeurtenistracering. .NET Framework 4.5.2 maakt out-of-process, Event Tracing for Windows (ETW)-gebaseerde activiteitentracering mogelijk voor een groter oppervlak. Hierdoor kunnen APM-leveranciers (Advanced Power Management) lichtgewicht hulpprogramma's bieden waarmee de kosten van afzonderlijke aanvragen en activiteiten die threads kruisen nauwkeurig worden bijgehouden. Deze gebeurtenissen worden alleen gegenereerd wanneer ETW-controllers deze inschakelen; Daarom zijn de wijzigingen niet van invloed op eerder geschreven ETW-code of -code die wordt uitgevoerd met ETW uitgeschakeld.

  • een transactie promoten en converteren naar een duurzame

    Transaction.PromoteAndEnlistDurable is een nieuwe API die is toegevoegd aan .NET Framework 4.5.2 en 4.6:

    [System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.LinkDemand, Name = "FullTrust")]
    public Enlistment PromoteAndEnlistDurable(Guid resourceManagerIdentifier,
                                              IPromotableSinglePhaseNotification promotableNotification,
                                              ISinglePhaseNotification enlistmentNotification,
                                              EnlistmentOptions enlistmentOptions)
    

    De methode kan worden gebruikt door een aanwerving die eerder is gemaakt door Transaction.EnlistPromotableSinglePhase als reactie op de methode ITransactionPromoter.Promote. Er wordt System.Transactions gevraagd om de transactie te promoveren naar een MSDTC-transactie en om de promotieve registratie naar een duurzame registratie te converteren. Nadat deze methode is voltooid, wordt er niet meer naar de IPromotableSinglePhaseNotification-interface verwezen door System.Transactionsen komen toekomstige meldingen binnen op de opgegeven ISinglePhaseNotification interface. De betrokken inschrijving moet fungeren als een duurzame inschrijving, ondersteunend aan transactielogboekregistratie en herstel. Raadpleeg Transaction.EnlistDurable voor meer informatie. Bovendien moet de rekrutering ISinglePhaseNotificationondersteunen. Deze methode kan alleen worden aangeroepen tijdens het verwerken van een ITransactionPromoter.Promote aanroep. Als dat niet het geval is, wordt er een TransactionException uitzondering opgeworpen.

Wat is er nieuw in .NET Framework 4.5.1

updates van april 2014:

  • Visual Studio 2013 Update 2 bevat updates voor de portable Class Library-sjablonen ter ondersteuning van deze scenario's:

    • U kunt Windows Runtime-API's gebruiken in draagbare bibliotheken die gericht zijn op Windows 8.1, Windows Phone 8.1 en Windows Phone Silverlight 8.1.

    • U kunt XAML (Windows.UI.XAML-typen) opnemen in draagbare bibliotheken wanneer u Windows 8.1 of Windows Phone 8.1 target. De volgende XAML-sjablonen worden ondersteund: lege pagina, resourcewoordenlijst, sjabloonbeheer en gebruikersbeheer.

    • U kunt een draagbaar Windows Runtime-onderdeel (.winmd-bestand) maken voor gebruik in Store-apps die gericht zijn op Windows 8.1 en Windows Phone 8.1.

    • U kunt een Windows Store- of Windows Phone Store-klassebibliotheek opnieuw naar een Portable Class Library aanpassen.

    Zie Portable Class Libraryvoor meer informatie over deze wijzigingen.

  • De .NET Framework-inhoudsset bevat nu documentatie voor .NET Native, een precompilatietechnologie voor het bouwen en implementeren van Windows-apps. .NET Native compileert uw apps rechtstreeks naar systeemeigen code, in plaats van naar tussenliggende taal (IL), voor betere prestaties. Zie Apps compileren met .NET Nativevoor meer informatie.

  • De .NET Framework Reference Source biedt een nieuwe browse-ervaring en verbeterde functionaliteit. U kunt nu online door de broncode van .NET Framework bladeren, de referentie- downloaden voor offlineweergave en de bronnen (inclusief patches en updates) tijdens foutopsporing doorlopen. Zie het blogbericht Een nieuw uiterlijk voor .NET Reference Sourcevoor meer informatie.

Nieuwe functies en verbeteringen in de basisklassen in .NET Framework 4.5.1 zijn onder andere:

  • Automatische bindingsomleiding voor assembly's. Vanaf Visual Studio 2013, wanneer u een app compileert die is gericht op .NET Framework 4.5.1, kunnen bindingsomleidingen worden toegevoegd aan het app-configuratiebestand als uw app of de bijbehorende onderdelen verwijzen naar meerdere versies van dezelfde assembly. U kunt deze functie ook inschakelen voor projecten die gericht zijn op oudere versies van .NET Framework. Zie Procedure: Automatische bindingsomleiding in- en uitschakelenvoor meer informatie.

  • Mogelijkheid om diagnostische gegevens te verzamelen om ontwikkelaars te helpen de prestaties van server- en cloudtoepassingen te verbeteren. Zie de WriteEventWithRelatedActivityId- en WriteEventWithRelatedActivityIdCore-methoden in de klasse EventSource voor meer informatie.

  • Mogelijkheid om de grote object heap (LOH) expliciet te comprimeren tijdens garbagecollection. Zie de eigenschap GCSettings.LargeObjectHeapCompactionMode voor meer informatie.

  • Aanvullende prestatieverbeteringen, zoals ASP.NET app-ophanging, JIT-verbeteringen met meerdere kernen en sneller opstarten van apps na een .NET Framework-update. Voor meer informatie, zie de .NET Framework 4.5.1-aankondiging en het blogbericht over ASP.NET-apps opschorten.

Verbeteringen in Windows Forms zijn onder andere:

  • Formaat wijzigen in Windows Forms Controls. U kunt de systeem-DPI-instelling gebruiken om het formaat van onderdelen van besturingselementen te wijzigen (bijvoorbeeld de pictogrammen die worden weergegeven in een eigenschappenraster) door een vermelding toe te voegen in het configuratiebestand van de toepassing (app.config) voor uw app. Deze functie wordt momenteel ondersteund in de volgende Besturingselementen voor Windows Forms:

    Als u deze functie wilt inschakelen, voegt u een nieuw <appSettings>-element toe aan het configuratiebestand (app.config) en stelt u het EnableWindowsFormsHighDpiAutoResizing-element in op true:

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

Verbeteringen bij het opsporen van fouten in uw .NET Framework-apps in Visual Studio 2013 zijn onder andere:

  • Retourneert waarden in het foutopsporingsprogramma van Visual Studio. Wanneer u een beheerde app debugt in Visual Studio 2013, worden in het venster Autos de retourtypen en -waarden voor methoden weergegeven. Deze informatie is beschikbaar voor desktop-, Windows Store- en Windows Phone-apps. Voor meer informatie, zie Retourwaarden van methode-aanroepen onderzoeken.

  • Bewerken en doorgaan voor 64-bits apps. Visual Studio 2013 ondersteunt de functie Bewerken en Doorgaan voor 64-bits beheerde apps voor desktop, Windows Store en Windows Phone. De bestaande beperkingen blijven van kracht voor zowel 32-bits als 64-bits apps (zie de laatste sectie van het Ondersteunde codewijzigingen (C#) artikel).

  • Async-bewuste foutopsporing. Om het eenvoudiger te maken om fouten in asynchrone apps in Visual Studio 2013 op te sporen, verbergt de aanroepstack de infrastructuurcode van compilers ter ondersteuning van asynchrone programmering en ketens in logische bovenliggende frames, zodat u de uitvoering van logische programma's duidelijker kunt volgen. Een venster Taken vervangt het venster Parallelle taken en geeft taken weer die betrekking hebben op een bepaald onderbrekingspunt en geeft ook andere taken weer die momenteel actief of gepland zijn in de app. Meer informatie over deze functie vindt u in de sectie Asynchrone foutopsporing van de aankondiging .NET Framework 4.5.1.

  • Betere uitzonderingsondersteuning voor Windows Runtime-onderdelen. In Windows 8.1 behouden uitzonderingen die voortvloeien uit Windows Store-apps informatie over de fout die de uitzondering heeft veroorzaakt, zelfs over taalgrenzen. U kunt deze functie lezen in de sectie 'Windows Store-app-ontwikkeling' van de aankondiging .NET Framework 4.5.1.

Vanaf Visual Studio 2013 kunt u het hulpprogramma voor begeleide optimalisatie van beheerde profielen (Mpgo.exe) gebruiken om Windows 8.x Store-apps en desktop-apps te optimaliseren.

Zie voor nieuwe functies in ASP.NET 4.5.1 ASP.NET en Webhulpprogramma's voor Visual Studio 2013 Releasenotes.

Wat is er nieuw in .NET Framework 4.5?

Basisklassen

  • De mogelijkheid om het opnieuw opstarten van het systeem te verminderen door .NET Framework 4-toepassingen te detecteren en te sluiten tijdens de implementatie. Zie Het verminderen van systeemherstarts tijdens .NET Framework 4.5-installaties.

  • Ondersteuning voor matrices die groter zijn dan 2 gigabyte (GB) op 64-bits platforms. Deze functie kan worden ingeschakeld in het configuratiebestand van de toepassing. Zie de <gcAllowVeryLargeObjects> element, waarin ook andere beperkingen voor objectgrootte en matrixgrootte worden vermeld.

  • Betere prestaties door achtergrond garbageverzameling voor servers. Wanneer u servergeheugenbeheer in .NET Framework 4.5 gebruikt, wordt achtergrond-opschoonfunctie automatisch ingeschakeld. Zie de sectie Achtergrondserver Afvalophaling in het onderwerp Fundamenten van Afvalophaling.

  • JIT-compilatie (Just-In-Time) op de achtergrond, die optioneel beschikbaar is op processors met meerdere kernen om de prestaties van toepassingen te verbeteren. Zie ProfileOptimization.

  • De mogelijkheid om te beperken hoe lang de engine voor reguliere expressies probeert een reguliere expressie op te lossen voordat er een time-out optreedt. Zie de eigenschap Regex.MatchTimeout.

  • De mogelijkheid om de standaardcultuur voor een toepassingsdomein te definiëren. Zie de klasse CultureInfo.

  • Consoleondersteuning voor Unicode-codering (UTF-16). Zie de klasse Console.

  • Ondersteuning voor versiebeheer van culturele tekenreeksvolgorde en vergelijkingsgegevens. Zie de klasse SortVersion.

  • Betere prestaties bij het ophalen van middelen. Zie Resources verpakken en implementeren.

  • Verbeteringen in zip-compressie om de grootte van een gecomprimeerd bestand te verkleinen. Zie de System.IO.Compression naamruimte.

  • De mogelijkheid om een weerspiegelingscontext aan te passen om het standaardgedrag van weerspiegeling te overschrijven via de CustomReflectionContext-klasse.

  • Ondersteuning voor de 2008-versie van de standaard Geinternationaliseerde domeinnamen in toepassingen (IDNA) wanneer de System.Globalization.IdnMapping-klasse wordt gebruikt in Windows 8.

  • Delegering van tekenreeksvergelijking met het besturingssysteem, dat Unicode 6.0 implementeert wanneer het .NET Framework wordt gebruikt in Windows 8. Wanneer het op andere platforms wordt uitgevoerd, bevat het .NET Framework zijn eigen tekenreeksvergelijkingsgegevens, waarmee Unicode 5.x wordt geïmplementeerd. Zie de String-klasse en de sectie Opmerkingen van de SortVersion klasse.

  • Mogelijkheid om de hash-codes voor tekenreeksen per toepassingsdomein te berekenen. Zie <UseRandomizedStringHashAlgorithm> Element.

  • Ondersteuning voor type reflectie verdeeld tussen Type en TypeInfo klassen. Zie Weerspiegeling in .NET Framework voor Windows Store-apps.

Managed Extensibility Framework (MEF)

In .NET Framework 4.5 biedt het Managed Extensibility Framework (MEF) de volgende nieuwe functies:

  • Ondersteuning voor algemene typen.

  • Op conventies gebaseerd programmeermodel waarmee u onderdelen kunt maken op basis van naamconventies in plaats van kenmerken.

  • Meerdere reikwijdtes.

  • Een subset van MEF die u kunt gebruiken wanneer u Windows 8.x Store-apps maakt. Deze subset is beschikbaar als een downloadbaar pakket uit de NuGet Gallery. Als u het pakket wilt installeren, opent u uw project in Visual Studio, kiest u NuGet-pakketten beheren in het menu Project en zoekt u online naar het Microsoft.Composition-pakket.

Zie MANAGED Extensibility Framework (MEF)voor meer informatie.

Asynchrone bestandsbewerkingen

In .NET Framework 4.5 zijn nieuwe asynchrone functies toegevoegd aan de talen C# en Visual Basic. Met deze functies wordt een op taken gebaseerd model toegevoegd voor het uitvoeren van asynchrone bewerkingen. Als u dit nieuwe model wilt gebruiken, gebruikt u de asynchrone methoden in de I/O-klassen. Zie Asynchrone bestands-I/O-.

Gereedschap

In .NET Framework 4.5 kunt u met resourcebestandgenerator (Resgen.exe) een RESW-bestand maken voor gebruik in Windows 8.x Store-apps van een .resources-bestand dat is ingesloten in een .NET Framework-assembly. Zie Resgen.exe (Resource File Generator)voor meer informatie.

Met Managed Profile Guided Optimization (Mpgo.exe) kunt u de opstarttijd van toepassingen, het geheugengebruik (werksetgrootte) en doorvoer verbeteren door systeemeigen installatiekopieën te optimaliseren. Het opdrachtregelprogramma genereert profielgegevens voor native image applicaties en assemblies. Zie Mpgo.exe (Managed Profile Guided Optimization Tool). Vanaf Visual Studio 2013 kunt u Mpgo.exe gebruiken om Windows 8.x Store-apps en desktop-apps te optimaliseren.

Parallel computing

.NET Framework 4.5 biedt verschillende nieuwe functies en verbeteringen voor parallelle computing. Deze omvatten verbeterde prestaties, verbeterde controle, verbeterde ondersteuning voor asynchrone programmering, een nieuwe gegevensstroombibliotheek en verbeterde ondersteuning voor parallelle foutopsporing en prestatieanalyse. Zie de vermelding What's New for Parallelism in .NET Framework 4.5 in the Parallel Programming with .NET blog.

Web

ASP.NET 4.5 en 4.5.1 modelbinding toevoegen voor Web Forms, WebSocket-ondersteuning, asynchrone handlers, prestatieverbeteringen en vele andere functies. Zie de volgende bronnen voor meer informatie:

Netwerken

.NET Framework 4.5 biedt een nieuwe programmeerinterface voor HTTP-toepassingen. Zie de nieuwe System.Net.Http en System.Net.Http.Headers naamruimten voor meer informatie.

Ondersteuning is ook opgenomen voor een nieuwe programmeerinterface voor het accepteren en gebruiken van een WebSocket-verbinding met behulp van de bestaande HttpListener en gerelateerde klassen. Zie de nieuwe System.Net.WebSockets-naamruimte en de HttpListener-klasse voor meer informatie.

Daarnaast bevat .NET Framework 4.5 de volgende netwerkverbeteringen:

  • RFC-compatibele URI-ondersteuning. Zie Uri en gerelateerde klassen voor meer informatie.

  • Ondersteuning voor idN-parsering (Internationalized Domain Name). Zie Uri en gerelateerde klassen voor meer informatie.

  • Ondersteuning voor E-mailadres internationalisatie (EAI). Zie de System.Net.Mail naamruimte voor meer informatie.

  • Verbeterde IPv6-ondersteuning. Zie de System.Net.NetworkInformation naamruimte voor meer informatie.

  • Ondersteuning voor sockets met dubbele modus. Zie de klassen Socket en TcpListener voor meer informatie.

Windows Presentation Foundation (WPF)

In .NET Framework 4.5 bevat Windows Presentation Foundation (WPF) wijzigingen en verbeteringen op de volgende gebieden:

  • Het nieuwe besturingselement Ribbon, waarmee u een lintgebruikersinterface kunt implementeren die fungeert als host voor een Werkbalk voor Snelle Toegang, een toepassingsmenu en tabbladen.

  • De nieuwe INotifyDataErrorInfo-interface, die synchrone en asynchrone gegevensvalidatie ondersteunt.

  • Nieuwe functies voor de klassen VirtualizingPanel en Dispatcher.

  • Verbeterde prestaties bij het weergeven van grote sets gegroepeerde gegevens en door toegang te krijgen tot verzamelingen in niet-UI-threads.

  • Gegevensbinding naar statische eigenschappen, gegevensbinding naar aangepaste typen die de ICustomTypeProvider-interface implementeren en gegevensbindingsgegevens ophalen uit een bindingsexpressie.

  • Het verplaatsen van gegevens naarmate de waarden veranderen (live shaping).

  • Mogelijkheid om te controleren of de gegevenscontext voor een itemcontainer is verbroken.

  • De mogelijkheid om de hoeveelheid tijd in te stellen die moet worden verstreken tussen wijzigingen in eigenschappen en updates van gegevensbronnen.

  • Verbeterde ondersteuning voor het implementeren van zwakke gebeurtenispatronen. Bovendien kunnen gebeurtenissen nu markeringsextensies accepteren.

Windows Communication Foundation (WCF)

In .NET Framework 4.5 zijn de volgende functies toegevoegd om het schrijven en onderhouden van WCF-toepassingen (Windows Communication Foundation) eenvoudiger te maken:

  • Vereenvoudiging van gegenereerde configuratiebestanden.

  • Ondersteuning voor contract-first-ontwikkeling.

  • De mogelijkheid om ASP.NET compatibiliteitsmodus gemakkelijker te configureren.

  • Wijzigingen in standaardwaarden voor transporteigenschappen om de kans te verkleinen dat u ze moet instellen.

  • Updates voor de XmlDictionaryReaderQuotas-klasse om de kans te verminderen dat u handmatig quota moet configureren voor LEZERS van XML-woordenlijst.

  • Validatie van WCF-configuratiebestanden door Visual Studio als onderdeel van het buildproces, zodat u configuratiefouten kunt detecteren voordat u uw toepassing uitvoert.

  • Nieuwe ondersteuning voor asynchrone streaming.

  • Nieuwe HTTPS-protocoltoewijzing om het gemakkelijker te maken om een eindpunt beschikbaar te maken via HTTPS met IIS (Internet Information Services).

  • De mogelijkheid om metagegevens in één WSDL-document te genereren door ?singleWSDL toe te voegen aan de service-URL.

  • Websockets ondersteunen om echte bidirectionele communicatie mogelijk te maken via poorten 80 en 443 met prestatiekenmerken die vergelijkbaar zijn met het TCP-transport.

  • Ondersteuning voor het configureren van services in code.

  • Tooltips voor XML-editor.

  • ChannelFactory ondersteuning voor caching.

  • Ondersteuning voor binaire coderingscompressie.

  • Ondersteuning voor een UDP-transport waarmee ontwikkelaars services kunnen schrijven die gebruikmaken van 'fire and forget'-berichten. Een client verzendt een bericht naar een service en verwacht geen reactie van de service.

  • Mogelijkheid om meerdere authenticatiemethoden op een eindpunt van een WCF te ondersteunen met gebruik van HTTP-transport en transportbeveiliging.

  • Ondersteuning voor WCF-services die gebruikmaken van geinternationaliseerde domeinnamen (IDN's).

Zie Wat is er nieuw in Windows Communication Foundationvoor meer informatie.

Windows Workflow Foundation (WF)

In .NET Framework 4.5 zijn verschillende nieuwe functies toegevoegd aan Windows Workflow Foundation (WF), waaronder:

  • Toestandsmachine-workflows, die voor het eerst werden geïntroduceerd als onderdeel van .NET Framework 4.0.1 (.NET Framework 4 Platform Update 1). Deze update bevat verschillende nieuwe klassen en activiteiten waarmee ontwikkelaars statusmachinewerkstromen konden maken. Deze klassen en activiteiten zijn bijgewerkt voor .NET Framework 4.5, waaronder:

    • De mogelijkheid om onderbrekingspunten in te stellen op statussen.

    • De mogelijkheid om overgangen te kopiëren en plakken in de werkstroomontwerper.

    • Ondersteuning bij het ontwerpen van gedeelde triggerovergangen.

    • Activiteiten voor het maken van werkstromen voor statuscomputers, waaronder: StateMachine, Stateen Transition.

  • Verbeterde functies van Workflow Designer, zoals de volgende:

    • Verbeterde zoekmogelijkheden voor werkstromen in Visual Studio, waaronder Snel zoeken en Zoeken in bestanden.

    • Mogelijkheid om automatisch een reeksactiviteit te maken wanneer een tweede onderliggende activiteit wordt toegevoegd aan een containeractiviteit en om beide activiteiten in de reeksactiviteit op te nemen.

    • Panning-ondersteuning, waardoor het zichtbare gedeelte van een werkstroom kan worden gewijzigd zonder de schuifbalken te gebruiken.

    • Een nieuwe documentoverzichtsweergave die de onderdelen van een werkstroom in een boomstructuur overzichtsweergave toont en waardoor u een onderdeel kunt selecteren in de documentoverzichtsweergave.

    • Mogelijkheid om aantekeningen toe te voegen aan activiteiten.

    • Mogelijkheid om gedelegeerden voor activiteiten te definiëren en te gebruiken met behulp van de werkstroomontwerper.

    • Automatisch verbinding maken en automatisch invoegen voor activiteiten en overgangen in werkstromen voor statuscomputers en stroomdiagrammen.

  • Opslag van de informatie over de weergavestatus voor een werkstroom in één element in het XAML-bestand, zodat u de statusgegevens van de weergave eenvoudig kunt vinden en bewerken.

  • Een NoPersistScope-containeractiviteit om te voorkomen dat kinderactiviteiten persistent worden.

  • Ondersteuning voor C#-expressies:

    • Werkstroomprojecten die Visual Basic gebruiken, maken gebruik van Visual Basic-expressies en C#-werkstroomprojecten maken gebruik van C#-expressies.

    • C#-werkstroomprojecten die zijn gemaakt in Visual Studio 2010 en die Visual Basic-expressies hebben, zijn compatibel met C#-werkstroomprojecten die gebruikmaken van C#-expressies.

  • Versiebeheerverbeteringen:

    • De nieuwe WorkflowIdentity-klasse, die een toewijzing biedt tussen een persistente werkstroomexemplaar en bijbehorende werkstroomdefinitie.

    • Uitvoering naast elkaar van meerdere werkstroomversies op dezelfde host, inclusief WorkflowServiceHost.

    • In Dynamische Update kunt u de definitie van een persistent werkstroomexemplaar wijzigen.

  • Contract-first werkstroomserviceontwikkeling, die ondersteuning biedt voor het automatisch genereren van activiteiten die overeenkomen met een bestaand servicecontract.

Zie Wat is er nieuw in Windows Workflow Foundationvoor meer informatie.

.NET voor Windows 8.x Store-apps

Windows 8.x Store-apps zijn ontworpen voor specifieke vormfactoren en benutten de kracht van het Windows-besturingssysteem optimaal. Een subset van .NET Framework 4.5 of 4.5.1 is beschikbaar voor het bouwen van Windows 8.x Store-apps voor Windows met C# of Visual Basic. Deze subset heet .NET voor Windows 8.x Store-apps en wordt besproken in een overzicht.

Draagbare Klassenbibliotheken

Met het project Portable Class Library in Visual Studio 2012 (en latere versies) kunt u beheerde assembly's schrijven en bouwen die op meerdere .NET Framework-platforms werken. Met behulp van een Portable Class Library-project kiest u de platforms (zoals Windows Phone en .NET voor Windows 8.x Store-apps) waarop u zich wilt richten. De beschikbare typen en leden in uw project worden automatisch beperkt tot de algemene typen en leden op deze platforms. Zie Portable Class Libraryvoor meer informatie.

Zie ook