Co je nového v .NET Framework

Poznámka

.NET Framework verze 4.8 je poslední .NET Framework. .NET Framework se každý měsíc řeší opravami chyb zabezpečení a spolehlivosti. .NET Framework bude i nadále součástí Windows, ale žádné plány na jejich odebrání. Nemusíte migrovat své aplikace .NET Framework, ale pro nový vývoj použijte .NET 5 nebo novější.

Tento článek shrnuje klíčové nové funkce a vylepšení v následujících verzích .NET Framework:

Tento článek neposkytuje vyčerpávající informace o každé nové funkci a může se změnit. Obecné informace o těchto .NET Framework najdete v Začínáme. Podporované platformy najdete v tématu Požadavky na systém. Odkazy ke stažení a pokyny k instalaci najdete v průvodci instalací.

Poznámka

Tým .NET Framework také vydává funkce mimo pásmo pomocí NuGet, aby rozšířil podporu platformy a zavedl nové funkce, jako jsou neměnné kolekce a typy vektorů s podporou SIMD. Další informace najdete v tématu Další knihovny tříd a rozhraní API a .NET Framework a mimo pásmo. Úplný seznam všech balíčků NuGet pro .NET Framework.

Představujeme .NET Framework 4.8

.NET Framework 4.8 staví na předchozích verzích .NET Framework 4.x přidáním mnoha nových oprav a několika nových funkcí a zároveň zůstává velmi stabilním produktem.

Stažení a instalace .NET Framework 4.8

Můžete si .NET Framework 4.8 z následujících umístění:

.NET Framework 4.8 je možné nainstalovat na Windows 10, Windows 8.1, Windows 7 SP1 a odpovídající serverové platformy počínaje Windows Serverem 2008 R2 SP1. K instalaci .NET Framework verze 4.8 můžete použít buď webový instalační program, nebo offline instalační program. Pro většinu uživatelů doporučujeme použít webový instalační program.

Ve Visual Studio 2012 nebo novějším můžete cílit na .NET Framework 4.8 instalací sady .NET Framework 4.8 Developer Pack.

Co je nového ve .NET Framework 4.8

.NET Framework 4.8 přináší nové funkce v následujících oblastech:

Vylepšená přístupnost, která aplikaci umožňuje poskytovat vhodné prostředí pro uživatele technologie usnadnění, se nadále zaměřuje hlavně na .NET Framework 4.8. Informace o vylepšeních přístupnosti v .NET Framework 4.8 najdete v tématu Co je nového v oblasti přístupnosti v .NET Framework.

Základní třídy

Menší dopad FIPS na kryptografii. V předchozích verzích .NET Framework spravované třídy zprostředkovatele kryptografických služeb, SHA256ManagedCryptographicException jako je vyvolání , když jsou systémové kryptografické knihovny nakonfigurované v režimu FIPS. Tyto výjimky jsou vyvolány, protože spravované verze tříd zprostředkovatele kryptografických služeb na rozdíl od systémových kryptografických knihoven prošly certifikací FIPS (Federal Information Processing Standards) 140-2. Vzhledem k tomu, že několik vývojářů má své vývojové počítače v režimu FIPS, jsou výjimky běžně vyvolány v produkčních systémech.

Ve výchozím nastavení v aplikacích, které jsou .NET Framework 4.8, CryptographicException už následující třídy spravované kryptografie v tomto případě nevyhodí výjimku :

Místo toho tyto třídy přesměrovují kryptografické operace do knihovny kryptografie systému. Tato změna v podstatě eliminuje potenciálně matoucí rozdíl mezi vývojových a produkčními prostředími a zajišťuje, aby nativní komponenty a spravované komponenty byly v rámci stejných kryptografických zásad. Aplikace, které na těchto výjimce závisejí, mohou předchozí chování obnovit nastavením přepínače AppContext na Switch.System.Security.Cryptography.UseLegacyFipsThrowtrue. Další informace najdete v tématu Třídy spravované kryptografie, které nevyknou výjimku CryptographyException v režimu FIPS.

Použití aktualizované verze ZLib

Počínaje .NET Framework 4.5 používá sestavení clrcompression.dll knihovnu ZLib, nativní externí knihovnu pro kompresi dat, aby bylo možné poskytnout implementaci algoritmu deflate. Verze .NET Framework 4.8 clrcompression.dll je aktualizovaná tak, aby používejte ZLib verze 1.2.11, která obsahuje několik klíčových vylepšení a oprav.

Windows Communication Foundation (WCF)

Úvod do ServiceHealthBehavior

Koncové body stavu běžně používají nástroje pro orchestraci ke správě služeb na základě jejich stavu. Kontroly stavu mohou být také používány monitorovacími nástroji ke sledování a poskytování oznámení o dostupnosti a výkonu služby.

ServiceHealthBehavior je chování služby WCF, které rozšiřuje IServiceBehavior. Při přidání do ServiceDescription.Behaviors kolekce bude chování služby následující:

  • Vrátí stav služby s kódy odpovědí HTTP. V řetězci dotazu můžete zadat stavový kód HTTP pro požadavek sondy stavu HTTP/GET.

  • Publikuje informace o stavu služby. Podrobnosti o konkrétní službě, včetně stavu služby, počtu omezení a kapacity, je možné zobrazit pomocí požadavku HTTP/GET s řetězcem ?health dotazu. Snadný přístup k takovým informacím je důležitý při řešení potíží se službou WCF, která se chová chybně.

Existují dva způsoby, jak zveřejnit koncový bod stavu a publikovat informace o stavu služby WCF:

  • Prostřednictvím kódu. Například:

    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);
    
    Dim host As New ServiceHost(GetType(Service1),
                New Uri("http://contoso:81/Service1"))
    Dim healthBehavior As ServiceHealthBehavior =
       host.Description.Behaviors.Find(Of ServiceHealthBehavior)()
    If healthBehavior Is Nothing Then
       healthBehavior = New ServiceHealthBehavior()
    End If
    host.Description.Behaviors.Add(healthBehavior)
    
  • Pomocí konfiguračního souboru. Například:

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

Na stav služby se OnServiceFailuremůžete dotazovat pomocí parametrů dotazu, jako jsou , OnDispatcherFailure, OnListenerFailure, OnThrottlePercentExceededa pro každý parametr dotazu je možné zadat kód odpovědi HTTP. Pokud je kód odpovědi HTTP pro parametr dotazu vynechán, použije se ve výchozím nastavení kód odpovědi HTTP 503. Například:

Parametry dotazu a příklady:

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

    Stavový kód odpovědi HTTP 455 se vrátí, když je stav jakéhokoli dispečera kanálu větší než CommunicationState.Opened.

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

    Stavový kód odpovědi HTTP 465 se vrátí, když je stav jakéhokoli naslouchače kanálu větší než CommunicationState.Opened.

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

    Určuje procento {1–100}, které aktivuje odpověď, a kód odpovědi HTTP {200–599}. V tomto příkladu:

    • Pokud je procento větší než 95, vrátí se kód odpovědi HTTP 500.

    • Pokud je procento v rozmezí 70 až 95, vrátí se 350.

    • V opačném případě se vrátí hodnota 200.

Stav služby se může zobrazit buď v HTML https://contoso:81/Service1?health , zadáním řetězce dotazu, jako je nebo v jazyce XML, zadáním řetězce dotazu, jako je https://contoso:81/Service1?health&Xml. Řetězec dotazu jako vrátí https://contoso:81/Service1?health&NoContent prázdnou stránku HTML.

Windows Presentation Foundation (WPF)

Vylepšení s vysokým dpi

V .NET Framework 4.8 WPF přidává podporu pro sledování Per-Monitor V2 DPI a Mixed-Mode dpi. Další informace o vývoji s vysokým dpi najdete v tématu Vývoj desktopových aplikací s vysokým Windows DPI na virtuálních počítačích.

.NET Framework 4.8 vylepšuje podporu hostovaných disků HWND model Windows Forms vzájemné spolupráce v aplikacích WPF s vysokým dpi na platformách, které podporují škálování dpi Mixed-Mode (počínaje aktualizací z Windows 10 dubna 2018). Při hostovaných ovládacích prvcích HWND nebo model Windows Forms se vytvářejí jako okna škálovaná na dpi voláním SetThreadDpiHostingBehavior Mixed-Mode SetThreadDpiAwarenessContext, mohou být hostovány v aplikaci WPF Per-Monitor V2 a mají odpovídající velikost a škálování. Takový hostovaný obsah se nevykreslí v nativním rozlišení DPI. Místo toho operační systém škáluje hostovaný obsah na odpovídající velikost. Podpora režimu sledování DPI Per-Monitor v2 také umožňuje hostování ovládacích prvků WPF (tj. nadřazených) v nativním okně v aplikaci s vysokým rozlišením DPI.

Pokud chcete povolit podporu Mixed-Mode škálování s vysokým rozlišením DPI, můžete nastavit následující AppContext přepínače konfiguračního souboru aplikace:

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

Modul CLR (Common Language Runtime)

modul runtime v .NET Framework 4,8 obsahuje následující změny a vylepšení:

Vylepšení kompilátoru JIT. kompilátor jit (just-in-time) v .NET Framework 4,8 je založen na kompilátoru jit v rozhraní .net Core 2,1. mnohé z optimalizací a všechny opravy chyb provedené kompilátorem jit .net Core 2,1 jsou součástí kompilátoru .NET Framework 4,8 jit.

Vylepšení Ngen. Modul runtime zlepšil správu paměti pro Image generátoru nativních imagí (NGen), takže data mapovaná z imagí Ngen nejsou rezidentní v paměti. Tím se snižuje plocha dostupná pro útoky, které se pokoušejí spustit libovolný kód úpravou paměti, která se spustí.

Kontrola antimalwaru pro všechna sestavení. v předchozích verzích .NET Framework modul runtime kontroluje všechna sestavení načtená z disku pomocí Windows Defender nebo antimalwarového softwaru jiného výrobce. Nicméně sestavení načtená z jiných zdrojů, například Assembly.Load(Byte[]) metodou, nejsou prohledávána a mohou potenciálně obsahovat nezjištěné malware. počínaje .NET Framework 4,8 spuštěným v Windows 10 spustí modul runtime kontrolu antimalwarových řešení, která implementují rozhraní AMSI (antimalwar scan Interface).

co je nového v .NET Framework 4.7.2

.NET Framework 4.7.2 zahrnuje nové funkce v následujících oblastech:

dalším cílem .NET Framework 4.7.2 je lepší přístupnost, která umožňuje aplikaci poskytovat vhodné prostředí pro uživatele technologie usnadnění. informace o vylepšeních usnadnění v .NET Framework 4.7.2 najdete v tématu co je nového v přístupnosti v .NET Framework.

Základní třídy

.NET Framework 4.7.2 obsahuje velký počet kryptografických vylepšení, lepší podporu dekomprese pro archivy ZIP a další rozhraní api pro shromažďování dat.

Nová přetížení RSA. Vytvořte a DSA. Vytvořeny

DSA.Create(DSAParameters)Metody a RSA.Create(RSAParameters) umožňují zadávat klíčové parametry při vytváření instance nového DSA nebo RSA klíče. Umožňují nahradit kód podobný následujícímu:

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

podobný kód:

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

DSA.Create(Int32)Metody a RSA.Create(Int32) umožňují generovat nové DSA klíče nebo RSA klíče s určitou velikostí klíče. Například:

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

Konstruktory Rfc2898DeriveBytes přijímají název algoritmu hash.

Rfc2898DeriveBytesTřída má tři nové konstruktory s HashAlgorithmName parametrem, který IDENTIFIKUJE algoritmus HMAC, který má být použit při odvozování klíčů. Místo použití algoritmu SHA-1 by vývojáři měli používat HMAC založené na SHA-2, jako je SHA-256, jak je znázorněno v následujícím příkladu:

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);
   }
}
Private Shared Function DeriveKey(password As String, ByRef iterations As Integer,
                                  ByRef salt AS Byte(), ByRef algorithm As HashAlgorithmName) As Byte()
   iterations = 100000
   algorithm = HashAlgorithmName.SHA256

   Const SaltSize As Integer = 32
   Const  DerivedValueSize As Integer = 32

   Using pbkdf2 = New Rfc2898DeriveBytes(password, SaltSize, iterations, algorithm)
      salt = pbkdf2.Salt
      Return pbkdf2.GetBytes(DerivedValueSize)
   End Using
End Function

Podpora dočasných klíčů

Import PFX může volitelně načíst soukromé klíče přímo z paměti a obejít pevný disk. Když je nový X509KeyStorageFlags.EphemeralKeySet příznak zadán v konstruktoru nebo v X509Certificate2 jednom z přetížení X509Certificate2.Import metody, privátní klíče budou načteny jako dočasné klíče. To brání tomu, aby se klíče na disku zobrazily. Mějte však na paměti následující:

  • Vzhledem k tomu, že klíče nejsou trvale uložené na disku, certifikáty načtené pomocí tohoto příznaku nejsou vhodnými kandidáty k přidání do X509Store.

  • klíče načtené tímto způsobem jsou téměř vždy načítány prostřednictvím Windows CNG. Proto volající musí získat přístup k privátnímu klíči voláním metod rozšíření, jako je například CERT. GetRSAPrivateKey (). X509Certificate2.PrivateKeyVlastnost nefunguje.

  • Vzhledem k tomu, že vlastnost starší verze X509Certificate2.PrivateKey nefunguje s certifikáty, vývojáři by měli před přechodem na dočasné klíče provádět přísné testy.

Programové vytváření žádostí o podepsání certifikátu PKCS # 10 a certifikátů veřejných klíčů X. 509

počínaje .NET Framework 4.7.2 můžou úlohy generovat žádosti o podepsání certifikátu (oddělení it), které umožňují, aby se generování žádosti o certifikát připravilo na stávající nástroje. To je často užitečné v testovacích scénářích.

Další informace a příklady kódu naleznete v tématu "programové vytváření žádostí o podepsání certifikátu PKCS # 10 a" certifikátů veřejných klíčů X. 509 "na blogu .NET.

Noví členové SignerInfo

počínaje .NET Framework 4.7.2 SignerInfo třída zveřejňuje další informace o podpisu. Můžete načíst hodnotu System.Security.Cryptography.Pkcs.SignerInfo.SignatureAlgorithm vlastnosti a určit tak algoritmus podpisu, který používá podepisující osoba. SignerInfo.GetSignature dá se zavolat, aby se získala kopie kryptografického podpisu pro tohoto podepsaného.

Otevření zabaleného datového proudu po odstranění CryptoStream

počínaje .NET Framework 4.7.2 CryptoStream má třída další konstruktor, který umožňuje Dispose zavřít zabalený datový proud. Chcete-li nechat zabalený datový proud otevřený po CryptoStream uvolnění instance, zavolejte nový CryptoStream konstruktor následujícím způsobem:

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

Dekomprese změn v DeflateStream

počínaje .NET Framework 4.7.2 se implementace operací dekomprese ve DeflateStream třídě změnila tak, aby ve výchozím nastavení používala nativní rozhraní api Windows. Obvykle to vede k výraznému zlepšení výkonu.

podpora dekomprese pomocí Windows rozhraní api je ve výchozím nastavení povolená pro aplikace, které cílí na .NET Framework 4.7.2. aplikace, které jsou cíleny na starší verze .NET Framework, ale jsou spuštěny v rámci .NET Framework 4.7.2, se můžou na toto chování vyjádřit přidáním následujícího přepínače AppContext do konfiguračního souboru aplikace:

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

Další rozhraní API pro shromažďování

.NET Framework 4.7.2 přidá mnoho nových rozhraní api k SortedSet<T> typům a HashSet<T> . Tady jsou některé z nich:

ConcurrentDictionary<TKey,TValue>Třída obsahuje nová přetížení AddOrUpdate metod a GetOrAdd k načtení hodnoty ze slovníku nebo k jejímu přidání, pokud nebyla nalezena, a pro přidání hodnoty do slovníku nebo její aktualizaci, pokud již existuje.

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)
Public AddOrUpdate(Of TArg)(key As TKey, addValueFactory As Func(Of TKey, TArg, TValue), updateValueFactory As Func(Of TKey, TValue, TArg, TValue), factoryArgument As TArg) As TValue

Public GetOrAdd(Of TArg)(key As TKey, valueFactory As Func(Of TKey, TArg, TValue), factoryArgument As TArg) As TValue

ASP.NET

Podpora pro vkládání závislostí v Web Forms

Vkládání závislostí (di) odděluje objekty a jejich závislosti tak, že kód objektu již není nutné změnit pouze proto, že došlo ke změně závislosti. při vývoji aplikací ASP.NET, které cílí na .NET Framework 4.7.2, můžete:

Podpora souborů cookie stejného webu

SameSite zabraňuje prohlížeči v posílání souborů cookie spolu s žádostí mezi weby. .NET Framework 4.7.2 přidá HttpCookie.SameSite vlastnost, jejíž hodnota je System.Web.SameSiteMode člen výčtu. pokud je SameSiteMode.Strict jeho hodnota nebo SameSiteMode.Lax , ASP.NET přidá SameSite atribut do hlavičky set-cookie. Podpora SameSite se vztahuje na HttpCookie objekty i na FormsAuthentication soubory cookie a System.Web.SessionState .

SameSite pro HttpCookie objekt můžete nastavit takto:

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

Soubory cookie SameSite můžete na úrovni aplikace nakonfigurovat také úpravou souboru web.config:

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

SameSite pro FormsAuthentication a System.Web.SessionState soubory cookie můžete přidat úpravou konfiguračního souboru Web:

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

Sítě

Implementace vlastností HttpClientHandler

.NET Framework 4.7.1 přidal do System.Net.Http.HttpClientHandler třídy osm vlastností. Nicméně dvě vyvolaly výjimku PlatformNotSupportedException . .NET Framework 4.7.2 nyní poskytuje implementaci těchto vlastností. Mezi vlastnosti patří:

SQLClient

podpora Azure Active Directory univerzálního ověřování a vícefaktorového ověřování

Rostoucí požadavky na dodržování předpisů a požadavky na zabezpečení vyžadují, aby spousta zákazníků používala vícefaktorové ověřování (MFA). Kromě toho aktuální osvědčené postupy zabrání zahrnutí uživatelských hesel přímo v připojovacích řetězcích. Pro podporu těchto změn rozšiřuje .NET Framework 4.7.2 připojovací řetězce SQLClient přidáním nové hodnoty Active Directory Interactive pro stávající klíčové slovo Ověřování pro podporu MFA a ověřování Azure AD. Nová interaktivní metoda podporuje nativní a federované uživatele Azure AD i uživatele azure AD hosta. Při použití této metody se ověřování MFA vynucované službou Azure AD podporuje pro SQL databáze. Kromě toho proces ověřování vyžaduje uživatelské heslo, aby se dodržovaly osvědčené postupy zabezpečení.

V předchozích verzích .NET Framework SQL připojení podporovalo pouze možnosti SqlAuthenticationMethod.ActiveDirectoryPasswordSqlAuthenticationMethod.ActiveDirectoryIntegrated a . Oba tyto typy jsou součástí neinteraktivního protokolu ADAL, který nepodporuje MFA. SqlAuthenticationMethod.ActiveDirectoryInteractive Díky nové možnosti připojení SQL podporuje MFA i stávající metody ověřování (heslo a integrované ověřování), které uživatelům umožňují zadat hesla uživatelů interaktivně bez zachování hesel v připojovacím řetězci.

Další informace a příklad najdete v tématu "SQL – Azure AD Universal and Multifactor Authentication Support" (Podpora univerzálního a vícefaktorového ověřování Azure AD) na blogu .NET.

Podpora pro Always Encrypted verze 2

NET Framework 4.7.2 přidává podporu pro Always Encrypted. Původní verze nástroje Always Encrypted je technologie šifrování na straně klienta, ve které šifrovací klíče nikdy neopustí klienta. V případě Always Encrypted na základě enklávy může klient volitelně odeslat šifrovací klíče do zabezpečené enklávy, což je zabezpečená výpočetní entita, která se může považovat za součást SQL Server, ale tento kód SQL Server nemůže manipulovat. Pro podporu účtů založených na enklávách Always Encrypted .NET Framework 4.7.2 do oboru názvů přidá následující System.Data.SqlClient typy a členy:

Konfigurační soubor aplikace pak určuje konkrétní implementaci abstraktní třídy System.Data.SqlClient.SqlColumnEncryptionEnclaveProvider , která poskytuje funkce pro zprostředkovatele enklávy. Například:

<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>

Základní tok dat založených na enklávách Always Encrypted:

  1. Uživatel vytvoří připojení AlwaysEncrypted k SQL Server, která podporuje Always Encrypted. Ovladač kontaktuje službu ověření, aby se zajistilo, že se připojuje ke správné enklávě.

  2. Po otestování enklávy ovladač vytvoří zabezpečený kanál se zabezpečenou enklávou hostovanou na SQL Server.

  3. Ovladač sdílí šifrovací klíče autorizované klientem se zabezpečenou enklávou po dobu trvání SQL připojení.

Windows Presentation Foundation

Hledání ResourceDictionaries podle zdroje

Počínaje .NET Framework 4.7.2 může diagnostický asistent vyhledat objekt , ResourceDictionaries který byl vytvořen z daného identifikátoru URI zdroje. (Tuto funkci používají diagnostická asistenti, ne produkční aplikace.) Diagnostický asistent, Visual Studio zařízení pro úpravy a pokračování, umožňuje uživateli upravit ResourceDictionary se záměrem, že se změny použijí u spuštěné aplikace. Jedním z kroků, jak toho dosáhnout, je vyhledání všech slovníků ResourceDictionaries, které spuštěná aplikace vytvořila ze slovníku, který se upravuje. Aplikace může například deklarovat ResourceDictionary, jehož obsah je zkopírován z daného zdrojového identifikátoru URI:

<ResourceDictionary Source="MyRD.xaml" />

Diagnostický asistent, který upravuje původní kód v souboru MyRD.xaml , může k vyhledání slovníku použít novou funkci. Funkce je implementovaná novou statickou metodou ResourceDictionaryDiagnostics.GetResourceDictionariesForSource. Diagnostický asistent zavolá novou metodu s použitím absolutního identifikátoru URI, který identifikuje původní kód, jak je znázorněno následujícím kódem:

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

Metoda vrátí prázdné vyčíslitelné hodnoty, pokud VisualDiagnostics není povoleno a není ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO nastavena proměnná prostředí.

Vyhledání vlastníků ResourceDictionary

Počínaje .NET Framework 4.7.2 může diagnostický asistent vyhledat vlastníky daného .ResourceDictionary (Tuto funkci používají diagnostická asistenti, a ne produkční aplikace.) Pokaždé, když dojde ke změně ResourceDictionaryv , WPF automaticky najde všechny odkazy DynamicResource , které mohou být touto změnou ovlivněny.

Diagnostický asistent, jako je Visual Studio pro úpravy a pokračování, může chtít toto rozšíření rozšířit pro zpracování odkazů StaticResource. Prvním krokem tohoto procesu je vyhledání vlastníků slovníku. to znamená najít všechny objekty, jejichž Resources vlastnost odkazuje na slovník (buď přímo, nebo nepřímo prostřednictvím ResourceDictionary.MergedDictionaries vlastnosti ). Tento krok podporují tři System.Windows.Diagnostics.ResourceDictionaryDiagnostics nové statické metody implementované ve třídě , Resources jednu pro každý základní typ, který má vlastnost :

Tyto metody vracejí prázdné vyčíslitelné hodnoty, pokud VisualDiagnostics není povoleno a není ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO nastavena proměnná prostředí.

Vyhledání odkazů StaticResource

Diagnostický asistent teď může dostávat oznámení vždy, když se vyřeší odkaz StaticResource . (Tuto funkci používají diagnostická asistenti, ne produkční aplikace.) Diagnostický asistent, Visual Studio zařízení pro úpravy a pokračování, může chtít aktualizovat všechna použití prostředku, když se jeho hodnota změníResourceDictionary. WPF to dělá automaticky pro odkazy DynamicResource , ale záměrně to pro odkazy StaticResource nepro dělá. Počínaje .NET Framework 4.7.2 může diagnostický asistent pomocí těchto oznámení vyhledat tato použití statického prostředku.

Toto oznámení je implementováno novou událostí ResourceDictionaryDiagnostics.StaticResourceResolved :

public static event EventHandler<StaticResourceResolvedEventArgs> StaticResourceResolved;
Public Shared Event StaticResourceResolved As EventHandler(Of StaticResourceResolvedEventArgs)

Tato událost se vyvolala vždy, když modul runtime překládá odkaz StaticResource . Argumenty StaticResourceResolvedEventArgs popisují rozlišení a označují objekt a vlastnost, které hostují odkaz StaticResourceResourceDictionary, a klíč a použitý pro rozlišení:

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

   public Object TargetProperty { get; }

   public ResourceDictionary ResourceDictionary { get; }

   public object ResourceKey { get; }
}
Public Class StaticResourceResolvedEventArgs : Inherits EventArgs
   Public ReadOnly Property TargetObject As Object
   Public ReadOnly Property TargetProperty As Object
   Public ReadOnly Property ResourceDictionary As ResourceDictionary
   Public ReadOnly Property ResourceKey As Object
End Class

Událost není vyvolána (a její přístupový add objekt se ignoruje), VisualDiagnosticsENABLE_XAML_DIAGNOSTICS_SOURCE_INFO pokud není povolena a není nastavena proměnná prostředí.

ClickOnce

Aplikace využívající HDPI pro model Windows Forms, Windows Presentation Foundation (WPF) a Visual Studio Tools for Office (VSTO) je možné nasadit pomocí ClickOnce. Pokud se v manifestu aplikace nachází následující položka, nasazení proběhne úspěšně ve .NET Framework 4.7.2:

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

Pro model Windows Forms aplikace už předchozí alternativní řešení nastavení sledování DPI v konfiguračním souboru aplikace, a ne manifestu aplikace, už pro úspěšné nasazení ClickOnce potřeba.

Co je nového ve .NET Framework 4.7.1

.NET Framework verze 4.7.1 obsahuje nové funkce v následujících oblastech:

Kromě toho je větší zaměření na .NET Framework 4.7.1 vylepšené usnadnění, což aplikaci umožňuje poskytovat uživatelům technologie pro usnadnění odpovídající prostředí. Informace o vylepšeních přístupnosti v .NET Framework 4.7.1 najdete v tématu Co je nového v oblasti přístupnosti v .NET Framework.

Základní třídy

Podpora pro .NET Standard 2.0

.NET Standard definuje sadu rozhraní API, která musí být dostupná v každé implementaci .NET, která podporuje tuto verzi standardu. .NET Framework 4.7.1 plně podporuje .NET Standard 2.0 a přidává asi 200 rozhraní API, která jsou definována v .NET Standard 2.0 a chybí v rozhraních .NET Framework 4.6.1, 4.6.2 a 4.7. (Upozorňujeme, že tyto verze .NET Framework podporují .NET Standard 2.0 pouze v případě, že jsou v cílovém systému .NET Standard také další podpůrné soubory.) Další informace najdete v blogovém příspěvku o BCL – .NET Standard 2.0 v blogovém příspěvku o modulu runtime a kompilátoru .NET Framework 4.7.1.

Podpora tvůrců konfigurací

Tvůrci konfigurací umožňují vývojářům dynamicky v za běhu vložit a sestavit nastavení konfigurace pro aplikace. Tvůrci vlastních konfigurací je možné použít k úpravě existujících dat v konfiguračním oddílu nebo k vytvoření konfiguračního oddílu úplně od začátku. Bez tvůrců konfigurace .config statické soubory a jejich nastavení se definují nějakou dobu před tím, než se aplikace spustí.

Pokud chcete vytvořit vlastního tvůrce konfigurace, odvozte tvůrce z abstraktní třídy ConfigurationBuilder a přepište jeho a ConfigurationBuilder.ProcessRawXmlConfigurationBuilder.ProcessConfigurationSection . Tvůrce také definujete v souboru .config souboru. Další informace najdete v části Tvůrci konfigurace v blogovém příspěvku .NET Framework 4.7.1 ASP.NET a funkce konfigurace.

Detekce funkcí za běhu

Třída System.Runtime.CompilerServices.RuntimeFeature poskytuje mechanismus pro určení, zda je v dané implementaci rozhraní .NET v době kompilace nebo spuštění podporována předdefinovaná funkce. V době kompilace může kompilátor zkontrolovat, jestli zadané pole existuje, aby zjistil, jestli je funkce podporovaná. Pokud ano, může generovat kód, který tuto funkci využívá. Za běhu může aplikace volat metodu RuntimeFeature.IsSupported před vysílání kódu za běhu. Další informace najdete v tématu Přidání metody pomocníka pro popis funkcí podporovaných modulem runtime.

Typy řazené kolekce členů hodnot jsou serializovatelné

Počínaje .NET Framework 4.7.1 System.ValueTuple a jeho přidružené obecné typy jsou označeny jako Serializable, což umožňuje binární serializace. To by mělo usnadnit migraci typů řazené kolekce členů, Tuple<T1,T2,T3>Tuple<T1,T2,T3,T4>jako je a , na typy řazené kolekce členů. Další informace najdete v blogovém příspěvku o kompilátoru – valueTuple is Serializable (Kompilátor – hodnota je Serializovatelná) v blogovém příspěvku o modulu runtime a funkcích kompilátoru .NET Framework 4.7.1.

Podpora odkazů jen pro čtení

.NET Framework 4.7.1 přidá System.Runtime.CompilerServices.IsReadOnlyAttribute. Tento atribut používají kompilátory jazyka k označení členů, které mají návratové typy nebo parametry ref jen pro čtení. Další informace najdete v blogovém příspěvku o kompilátoru – podpoře readOnlyReferences v blogovém příspěvku o modulu runtime a funkcích kompilátoru .NET Framework 4.7.1. Informace o vrácených hodnotách ref najdete v tématu Návratové hodnoty a místní hodnoty ref (Průvodce jazykem C#) a Návratové hodnoty ref (Visual Basic).

Common language runtime (CLR)

Vylepšení výkonu uvolňování paměti

Změny uvolňování paměti (GC) ve .NET Framework 4.7.1 zlepšují celkový výkon, zejména u přidělení haldy velkých objektů (LOH). Ve verzi .NET Framework 4.7.1 se pro malá halda objektů (SOH) a LOH používají samostatné zámky, což umožňuje přidělení LOH při uvolňování paměti na pozadí, které soH zavře. V důsledku toho by aplikace, které mají velký počet přidělení LOH, měly vidět snížení počtu náporů zámků přidělení a lepší výkon. Další informace najdete v části Modul runtime – vylepšení výkonu uvolňování paměti v blogovém příspěvku o modulu runtime a funkcích kompilátoru .NET Framework 4.7.1.

Sítě

Podpora ALGORITMU SHA-2 pro Message.HashAlgorithm

V .NET Framework verzích 4.7 a starších Message.HashAlgorithm podporovala vlastnost pouze hodnoty HashAlgorithm.Md5HashAlgorithm.Sha a . Počínaje .NET Framework verze 4.7.1, HashAlgorithm.Sha256, HashAlgorithm.Sha384a HashAlgorithm.Sha512 se podporují také . To, jestli se tato hodnota skutečně použije, závisí na MSMQ, protože samotná instance neprochází žádnou hodnotou hash, Message ale jednoduše předává hodnoty do MSMQ. Další informace najdete v blogovém příspěvku o podpoře SHA-2 pro Message.HashAlgorithm v blogovém příspěvku .NET Framework 4.7.1 ASP.NET a funkce konfigurace.

ASP.NET

Kroky spuštění v ASP.NET aplikacích

ASP.NET zpracovává požadavky v předdefinovaném kanálu, který zahrnuje 23 událostí. ASP.NET každou obslužnou rutinu události jako krok provádění. Ve verzích ASP.NET až .NET Framework 4.7 nemůže ASP.NET tok kontextu spuštění kvůli přepínání mezi nativními a spravovanými vlákny. Místo toho ASP.NET selektivně toky pouze HttpContext. Počínaje .NET Framework 4.7.1 HttpApplication.OnExecuteRequestStep(Action<HttpContextBase,Action>) umožňuje metoda také modulům obnovit ambientní data. Tato funkce je zaměřená na knihovny, které se starají například o trasování, profilaci, diagnostiku nebo transakce, které se starají o tok provádění aplikace. Další informace najdete v blogovém ASP.NET příspěvku .NET Framework 4.7.1 ASP.NET a funkce konfigurace funkce spuštění.

ASP.NET analýzy HttpCookie

.NET Framework 4.7.1 obsahuje novou metodu , která poskytuje standardizovaný HttpCookie způsob, jak vytvořit objekt z řetězce a přesně přiřadit hodnoty souborů cookie, HttpCookie.TryParsejako je datum vypršení platnosti a cesta. Další informace najdete v blogovém příspěvku ASP.NET httpcookie parsing v blogovém příspěvku .NET Framework 4.7.1 ASP.NET a funkce konfigurace.

Možnosti algoritmu hash SHA-2 pro ASP.NET ověřování pomocí formulářů

Ve .NET Framework 4.7 a starších verzích vývojáři ASP.NET umožnili ukládat přihlašovací údaje uživatelů s použitím hodnot hash hesel v konfiguračních souborech pomocí MD5 nebo SHA1. Počínaje .NET Framework 4.7.1 podporuje ASP.NET také nové zabezpečené možnosti hash SHA-2, jako jsou SHA256, SHA384 a SHA512. ALGORITMUS SHA1 zůstává výchozí a ve webovém konfiguračním souboru je možné definovat jiné než výchozí hashovací algoritmus. Například:

<system.web>
    <authentication mode="Forms">
        <forms loginUrl="~/login.aspx">
          <credentials passwordFormat="SHA512">
            <user name="jdoe" password="6D003E98EA1C7F04ABF8FCB375388907B7F3EE06F278DB966BE960E7CBBD103DF30CA6D61F7E7FD981B2E4E3A64D43C836A4BEDCA165C33B163E6BCDC538A664" />
          </credentials>
        </forms>
    </authentication>
</system.web>

Co je nového ve .NET Framework 4.7

.NET Framework 4.7 obsahuje nové funkce v následujících oblastech:

Seznam nových rozhraní API přidaných do .NET Framework 4.7 najdete v tématu .NET Framework 4.7 API Changes on GitHub. Seznam vylepšení funkcí a oprav chyb v .NET Framework 4.7 najdete v .NET Framework 4.7 Seznam změn na GitHub. Další informace najdete v článku o oznámení .NET Framework 4.7 v blogu k .NET.

Základní třídy

.NET Framework 4.7 zlepšuje serializaci pomocí DataContractJsonSerializer:

Vylepšené funkce s ecc (elliptic curve cryptography)*

V .NET Framework 4.7 ImportParameters(ECParameters)ECDsaECDiffieHellman byly metody přidány do tříd a , aby objekt reprezentoval již zavedený klíč. Byla ExportParameters(Boolean) také přidána metoda pro export klíče pomocí explicitních parametrů křivky.

.NET Framework 4.7 také přidává podporu dalších křivek (včetně sady křivek Brainpool) CreateCreate a přidal předdefinované definice pro snadné vytváření prostřednictvím nových a výrobních metod.

Můžete si zobrazit příklad vylepšení kryptografie .NET Framework 4.7 v GitHub.

Lepší podpora řídicích znaků třídy DataContractJsonSerializer

V .NET Framework 4.7 DataContractJsonSerializer třída serializuje řídicí znaky v souladu se standardem ECMAScript 6. Toto chování je ve výchozím nastavení povolené pro aplikace, které cílí na .NET Framework 4.7, a jedná se o funkci výslovného souhlasu pro aplikace, které běží ve verzi .NET Framework 4.7, ale cílí na předchozí verzi .NET Framework. Další informace najdete v části Kompatibilita aplikací.

Sítě

.NET Framework 4.7 přidává následující funkci související se sítí:

Výchozí podpora operačního systému pro protokoly TLS*

Zásobník TLS používaný System.Net.Security.SslStream komponentami a up-stack, jako jsou HTTP, FTP a SMTP, umožňuje vývojářům používat výchozí protokoly TLS podporované operačním systémem. Vývojáři už nemusí kódovat verzi protokolu TLS.

ASP.NET

Ve .NET Framework 4.7 obsahuje ASP.NET následující nové funkce:

Rozšiřitelnost mezipaměti objektů

Počínaje .NET Framework 4.7 přidává ASP.NET novou sadu rozhraní API, která vývojářům umožňuje nahradit výchozí implementace ASP.NET pro ukládání objektů do mezipaměti v paměti a monitorování paměti. Vývojáři teď mohou nahradit libovolnou z následujících tří komponent, pokud ASP.NET implementace není dostatečná:

  • Úložiště mezipaměti objektů. Pomocí nového oddílu konfigurace zprostředkovatelů mezipaměti mohou vývojáři pomocí nového rozhraní ICacheStoreProvider připojit nové implementace mezipaměti objektů pro ASP.NET mezipaměti.

  • Monitorování paměti. Výchozí monitorování paměti v systému ASP.NET upozorní aplikace, když jsou spuštěné v blízkosti nakonfigurovaného limitu privátních bajtů pro proces nebo když má počítač nedostatek celkové dostupné fyzické paměti RAM. Když se tato omezení přichytá, oznámení se budou aktivovat. U některých aplikací se oznámení aktivují příliš blízko nakonfigurovaných limitů, aby mohla být reakce užitečná. Vývojáři teď mohou napsat vlastní monitory paměti, které nahradí výchozí hodnoty pomocí ApplicationMonitors.MemoryMonitor vlastnosti .

  • Reakce s limitem paměti. Ve výchozím nastavení ASP.NET oříznutí mezipaměti objektů a pravidelné GC.Collect volání v případě, že se privátní limit procesu byte přichytá. U některých aplikací je frekvence volání nebo GC.Collect velikost oříznuté mezipaměti neefektivní. Vývojáři teď mohou výchozí chování nahradit nebo doplnit přihlášením k odběru implementací IObserver k monitorování paměti aplikace.

Windows Communication Foundation (WCF)

Windows Communication Foundation (WCF) přidává následující funkce a změny:

Možnost nakonfigurovat výchozí nastavení zabezpečení zpráv na protokol TLS 1.1 nebo TLS 1.2

Počínaje .NET Framework 4.7 umožňuje WCF nakonfigurovat protokol TLS 1.1 nebo TLS 1.2 kromě ssl 3.0 a TLS 1.0 jako výchozího protokolu zabezpečení zpráv. Toto je nastavení výslovného souhlasu. pokud ho chcete povolit, musíte do konfiguračního souboru aplikace přidat následující položku:

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

Vyšší spolehlivost aplikací WCF a serializace WCF

WCF obsahuje řadu změn kódu, které eliminují konfliktu časování, čímž se zlepší výkon a spolehlivost možností serializace. Tady jsou některé z nich:

  • Lepší podpora pro kombinaci asynchronního a synchronního kódu ve voláních SocketConnection.BeginRead a SocketConnection.Read.
  • Vyšší spolehlivost při přerušení připojení pomocí SharedConnectionListener a DuplexChannelBinder
  • Vyšší spolehlivost operací serializace při volání FormatterServices.GetSerializableMembers(Type) metody.
  • Vyšší spolehlivost při odebírání čekání voláním metody ChannelSynchronizer.RemoveWaiter

Windows Forms

Ve .NET Framework 4.7 model Windows Forms lepší podporu pro monitory s vysokým rozlišením DPI.

Podpora vysokého rozlišení DPI

Počínaje aplikacemi, které jsou .NET Framework 4,7, .NET Framework podporuje vysoké rozlišení DPI a dynamické dpi pro model Windows Forms aplikace. Podpora vysokého rozlišení DPI zlepšuje rozložení a vzhled formulářů a ovládacích prvků na monitorech s vysokým dpi. Dynamické nastavení DPI změní rozložení a vzhled formulářů a ovládacích prvků, když uživatel změní dpi nebo faktor zobrazení měřítka spuštěné aplikace.

Podpora vysokého rozlišení DPI je funkce výslovného souhlasu, kterou nakonfigurujete definováním <system.Windows. Část Forms.ConfigurationSection> v konfiguračním souboru aplikace. Další informace o přidání podpory vysokého dpi a dynamické podpory DPI do model Windows Forms najdete v tématu Podpora vysokého dpi v model Windows Forms.

Windows Presentation Foundation (WPF)

V .NET Framework 4.7 obsahuje WPF následující vylepšení:

Podpora zásobníku dotykového ovládání a stylusu na základě Windows WM_POINTER zpráv

Nyní máte možnost použít zásobník dotykového ovládání nebo stylusu založený na WM_POINTER zpráv namísto wisp (Windows Ink Services Platform). Jedná se o funkci výslovného souhlasu v .NET Framework. Další informace najdete v části Kompatibilita aplikací.

Nová implementace pro rozhraní API tisku WPF

Tisková rozhraní System.Printing.PrintQueue API WPF ve třídě místo zastaralého rozhraní API pro tisk XPS Windows rozhraní API tiskových balíčků dokumentů. Dopad této změny na kompatibilitu aplikací najdete v části Kompatibilita aplikací.

Co je nového ve .NET Framework 4.6.2

.NET Framework 4.6.2 obsahuje nové funkce v následujících oblastech:

Seznam nových rozhraní API přidaných do .NET Framework 4.6.2 najdete v tématu .NET Framework 4.6.2 Změny rozhraní API na GitHub. Seznam vylepšení funkcí a oprav chyb v .NET Framework 4.6.2 najdete v tématu .NET Framework 4.6.2 Seznam změn na GitHub. Další informace najdete v článku o oznámení .NET Framework 4.6.2 v blogu k .NET.

ASP.NET

Ve .NET Framework 4.6.2 obsahuje ASP.NET následující vylepšení:

Vylepšená podpora lokalizovaných chybových zpráv v validátorech datových poznámek

Validátory datových poznámek umožňují provést ověření přidáním jednoho nebo více atributů do vlastnosti třídy. Element atributu definuje ValidationAttribute.ErrorMessage text chybové zprávy, pokud se ověření nezdaří. Počínaje .NET Framework 4.6.2 ASP.NET snadno lokalizovat chybové zprávy. Chybové zprávy budou lokalizovány, pokud:

  1. je ValidationAttribute.ErrorMessage k dispozici v atributu ověřování.

  2. Soubor prostředků se uloží do App_LocalResources složky.

  3. Název lokalizovaného souboru DataAnnotation.Localization.{}.resxprostředků má název formuláře, kdenázev je název jazykové verze ve formátu languageCodecountry-/regionCode nebo languageCode.

  4. Název klíče prostředku je řetězec přiřazený k ValidationAttribute.ErrorMessage atributu a jeho hodnotou je lokalizovaná chybová zpráva.

Například následující atribut datových poznámek definuje chybovou zprávu výchozí jazykové verze pro neplatné hodnocení.

public class RatingInfo
{
   [Required(ErrorMessage = "The rating must be between 1 and 10.")]
   [Display(Name = "Your Rating")]
   public int Rating { get; set; }
}
Public Class RatingInfo
   <Required(ErrorMessage = "The rating must be between 1 and 10.")>
   <Display(Name = "Your Rating")>
   Public Property Rating As Integer = 1
End Class

Pak můžete vytvořit soubor prostředků DataAnnotation.Localization.fr.resx, jehož klíčem je řetězec chybové zprávy a jehož hodnotou je lokalizovaná chybová zpráva. Soubor musí být ve složce App.LocalResources . Například následující kód obsahuje klíč a jeho hodnotu v lokalizované chybové zprávě jazyka Francouzština (fr):

Name Hodnota
Hodnocení musí být v rozmezí 1 až 10. La note doit être se skládá z 1 a 10.

Lokalizace datových poznámek je navíc rozšiřitelná. Vývojáři mohou zapojit vlastního poskytovatele lokalizátoru IStringLocalizerProvider řetězců implementací rozhraní pro uložení řetězce lokalizace někam jinam než do souboru prostředků.

Asynchronní podpora zprostředkovatelů úložiště stavu relace

ASP.NET teď umožňuje používat metody vracející úlohy s poskytovateli úložiště stavu relace, což umožňuje aplikacím ASP.NET získat výhody škálovatelnosti asynchronní metody. Pro podporu asynchronních operací s poskytovateli úložiště stavu relací obsahuje ASP.NET nové rozhraní , které IHttpModule dědí z a umožňuje vývojářům implementovat vlastní modul stavu relace a System.Web.SessionState.ISessionStateModuleposkytovatele úložiště asynchronních relací. Rozhraní je definováno takto:

public interface ISessionStateModule : IHttpModule {
    void ReleaseSessionState(HttpContext context);
    Task ReleaseSessionStateAsync(HttpContext context);
}
Public Interface ISessionStateModule : Inherits IHttpModule
   Sub ReleaseSessionState(context As HttpContext)
   Function ReleaseSessionStateAsync(context As HttpContext) As Task
End Interface

Kromě toho třída obsahuje SessionStateUtility dvě nové metody, IsSessionStateReadOnlyIsSessionStateRequireda , které lze použít k podpoře asynchronních operací.

Asynchronní podpora zprostředkovatelů výstupní mezipaměti

Počínaje .NET Framework 4.6.2 lze metody vracející úlohy použít se zprostředkovateli výstupní mezipaměti k poskytování výhod škálovatelnosti asynchronních metod. Poskytovatelé, kteří implementují tyto metody, omezují blokování vláken na webovém serveru a zlepšují škálovatelnost ASP.NET služby.

Pro podporu asynchronních poskytovatelů výstupní mezipaměti byla přidána následující rozhraní API:

Kategorie znaků

Znaky v .NET Framework 4.6.2 jsou klasifikovány na základě standardu Unicode verze 8.0.0. V .NET Framework 4.6 a .NET Framework 4.6.1 byly znaky klasifikovány na základě kategorií znaků Unicode 6.3.

Podpora kódování Unicode 8.0 je omezena na klasifikaci znaků CharUnicodeInfo třídou a na typy a metody, které na ní spoléhají. Patří mezi ně StringInfo třída, přetížená Char.GetUnicodeCategory metoda a třídy znaků rozpoznané .NET Framework regulárních výrazů. Na porovnání a řazení znaků a řetězců tato změna neovlí a nadále spoléhá na základní operační systém nebo na systémy Windows 7, na data znaků, která poskytuje .NET Framework.

Změny v kategoriích znaků z Unicode 6.0 na Unicode 7.0 najdete v článku Standard Unicode verze 7.0.0 na webu Unicode Consortium. Změny z Unicode 7.0 na Unicode 8.0 najdete na webu Unicode Standard, verze 8.0.0 na webu Unicode Consortium.

Kryptografie

Podpora certifikátů X509 obsahujících FIPS 186-3 DSA

.NET Framework 4.6.2 přidává podporu pro certifikáty X509 DSA (Digital Signature Algorithm), jejichž klíče překračují limit FIPS 186-2 1024 bitů.

Kromě podpory větších velikostí klíčů FIPS 186-3 umožňuje .NET Framework 4.6.2 výpočty podpisů s hashovacími algoritmy sha-2 (SHA256, SHA384 a SHA512). Podpora FIPS 186-3 je poskytována novou třídou System.Security.Cryptography.DSACng .

RSA V souladu s nedávnými změnami třídy v .NET Framework 4.6 ECDsa a třídy v .NET Framework 4.6.1 DSA obsahuje abstraktní základní třída v .NET Framework 4.6.2 další metody, které volajícím umožňují používat tuto funkci bez přetypování. Metodu rozšíření můžete volat DSACertificateExtensions.GetDSAPrivateKey pro podepisování dat, jak ukazuje následující příklad.

public static byte[] SignDataDsaSha384(byte[] data, X509Certificate2 cert)
{
    using (DSA dsa = cert.GetDSAPrivateKey())
    {
        return dsa.SignData(data, HashAlgorithmName.SHA384);
    }
}
Public Shared Function SignDataDsaSha384(data As Byte(), cert As X509Certificate2) As Byte()
    Using DSA As DSA = cert.GetDSAPrivateKey()
        Return DSA.SignData(data, HashAlgorithmName.SHA384)
    End Using
End Function

A můžete volat rozšiřující metodu DSACertificateExtensions.GetDSAPublicKey pro ověření podepsaných dat, jak ukazuje následující příklad.

public static bool VerifyDataDsaSha384(byte[] data, byte[] signature, X509Certificate2 cert)
{
    using (DSA dsa = cert.GetDSAPublicKey())
    {
        return dsa.VerifyData(data, signature, HashAlgorithmName.SHA384);
    }
}
 Public Shared Function VerifyDataDsaSha384(data As Byte(), signature As Byte(), cert As X509Certificate2) As Boolean
    Using dsa As DSA = cert.GetDSAPublicKey()
        Return dsa.VerifyData(data, signature, HashAlgorithmName.SHA384)
    End Using
End Function

Lepší přehlednost vstupů rutin odvození klíče ECDiffieHellman

.NET Framework 3.5 byla přidána podpora pro elliptic curve Diffie-Hellman Key Agreement se třemi různými rutinami funkce KDF (Key Derivation Function). Vstupy rutin a samotné rutiny byly nakonfigurovány prostřednictvím vlastností objektu ECDiffieHellmanCng . Ale vzhledem k tomu, že ne každá rutina čte každou vstupní vlastnost, byla v minulosti vývojáře dostatek místa pro nejasnosti.

Pro řešení tohoto .NET Framework 4.6.2 ECDiffieHellman byly do základní třídy přidány následující tři metody, které jasněji reprezentují tyto rutiny KDF a jejich vstupy:

Metoda ECDiffieHellman Description
DeriveKeyFromHash(ECDiffieHellmanPublicKey, HashAlgorithmName, Byte[], Byte[]) Odvodí materiál klíče pomocí vzorce .

HASH(secretPrepend || x || secretAppend)

HASH(secretPrepend OrElse x OrElse secretAppend)

kde x je vypočítaný výsledek algoritmu EC Diffie-Hellman algoritmu.
DeriveKeyFromHmac(ECDiffieHellmanPublicKey, HashAlgorithmName, Byte[], Byte[], Byte[]) Odvodí materiál klíče pomocí vzorce .

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

HMAC(hmacKey, secretPrepend OrElse x OrElse secretAppend)

kde x je vypočítaný výsledek algoritmu EC Diffie-Hellman algoritmu.
DeriveKeyTls(ECDiffieHellmanPublicKey, Byte[], Byte[]) Odvozuje materiál klíče pomocí algoritmu odvození pseudonáhodných funkcí TLS (PRF).

Podpora symetrického šifrování trvalého klíče

Knihovna CNG (Windows Cryptography Library) přidala podporu pro ukládání trvalých symetrických klíčů a použití hardwarově uložených symetrických klíčů a .NET Framework 4.6.2 vývojářům umožňuje tuto funkci využívat. Vzhledem k tomu, že názvy klíčů a zprostředkovatelů klíčů jsou specifické pro implementaci, použití této funkce vyžaduje použití konstruktoru konkrétních typů implementace místo upřednostňovaného přístupu k továrně (například volání Aes.Create).

Podpora symetrického šifrování trvalého klíče existuje pro algoritmy AES (AesCng) a 3DES (TripleDESCng). Například:

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);
        }
    }
}
Public Shared Function EncryptDataWithPersistedKey(data As Byte(), iv As Byte()) As Byte()
    Using Aes As Aes = New AesCng("AesDemoKey", CngProvider.MicrosoftSoftwareKeyStorageProvider)
        Aes.IV = iv

        ' Using the zero-argument overload Is required to make use of the persisted key
        Using encryptor As ICryptoTransform = Aes.CreateEncryptor()
            If Not encryptor.CanTransformMultipleBlocks Then
                Throw New InvalidOperationException("This is a sample, this case wasn't handled...")
            End If
            Return encryptor.TransformFinalBlock(data, 0, data.Length)
        End Using
    End Using
End Function

Podpora signedxml pro hashování SHA-2

.NET Framework 4.6.2 SignedXml přidává do třídy podporu pro podpisové metody RSA-SHA256, RSA-SHA384 a RSA-SHA512 PKCS#1 a referenční algoritmy hash SHA256, SHA384 a SHA512.

Všechny konstanty URI jsou vystavené v :SignedXml

Pole SignedXml Konstanta
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"

Všechny programy, které SignatureDescriptionCryptoConfig zaregistrovaly vlastní obslužnou rutinu pro přidání podpory těchto algoritmů, budou nadále fungovat stejně jako v minulosti, ale vzhledem k tomu, že teď existují výchozí nastavení platformy, CryptoConfig registrace už není nutná.

Sqlclient

.NET Framework Zprostředkovatel dat pro SQL Server (System.Data.SqlClient) obsahuje následující nové funkce ve .NET Framework 4.6.2:

Sdružování připojení a časové limity u Azure SQL databází

Pokud je povoleno sdružování připojení a dojde k časovému limitu nebo jiné chybě přihlášení, výjimka se ukládá do mezipaměti a výjimka uložená v mezipaměti se vyvolá při každém dalším pokusu o připojení po dobu dalších 5 sekund až 1 minuty. Další informace najdete v tématu SQL Server sdružování připojení (ADO.NET).

Toto chování není žádoucí při připojování ke službě Azure SQL Databases, protože pokusy o připojení selžou s přechodnými chybami, které se obvykle rychle obnovují. Pro lepší optimalizaci prostředí opakování připojení se chování blokování fondu připojení odebere, když připojení k Azure SQL databázím.

Přidáním nového klíčového slova PoolBlockingPeriod můžete vybrat nejvhodnější dobu blokování pro vaši aplikaci. Mezi tyto hodnoty patří:

Auto

Doba blokování fondu připojení pro aplikaci, která se připojuje k Azure SQL Database, je zakázaná a je povolená doba blokování fondu připojení pro aplikaci, která se připojuje k SQL Server instanci připojení. Toto je výchozí hodnota. Pokud název koncového bodu serveru končí na některý z následujících názvů, považují se Azure SQL databáze:

  • .database.windows.net

  • .database.chinacloudapi.cn

  • .database.usgovcloudapi.net

  • .database.cloudapi.de

AlwaysBlock

Doba blokování fondu připojení je vždycky povolená.

NeverBlock

Doba blokování fondu připojení je vždy zakázaná.

Vylepšení pro Always Encrypted

SQLClient přináší dvě vylepšení pro Always Encrypted:

  • Aby se zlepšil výkon parametrizovaných dotazů na šifrované databázové sloupce, šifrování metadat pro parametry dotazu se teď ukládá do mezipaměti. Když je SqlConnection.ColumnEncryptionQueryMetadataCacheEnabled vlastnost nastavená true na (což je výchozí hodnota), pokud je stejný dotaz volán vícekrát, klient načte metadata parametrů ze serveru pouze jednou.

  • Položky šifrovacího klíče sloupce v mezipaměti klíčů se teď vyřazené po konfigurovatelném časovém intervalu nastaveném pomocí SqlConnection.ColumnEncryptionKeyCacheTtl vlastnosti .

Windows Communication Foundation

Ve .NET Framework 4.6.2 byla Windows Communication Foundation vylepšena v následujících oblastech:

Podpora zabezpečení přenosu WCF pro certifikáty uložené pomocí CNG

Zabezpečení přenosu WCF podporuje certifikáty uložené pomocí Windows kryptografické knihovny (CNG). Ve .NET Framework 4.6.2 je tato podpora omezená na použití certifikátů s veřejným klíčem, který nemá exponent o maximální délku 32 bitů. Pokud je aplikace .NET Framework 4.6.2, je tato funkce ve výchozím nastavení povolená.

Pro aplikace, které cílí na .NET Framework 4.6.1 a starší, ale běží na verzi .NET Framework 4.6.2, můžete tuto funkci povolit přidáním následujícího řádku do části modulu runtime> souboru app.config nebo web.config.<

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

Můžete to také provést programově pomocí následujícího kódu:

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

Lepší podpora více pravidel úpravy letního času třídou DataContractJsonSerializer

Zákazníci mohou pomocí nastavení konfigurace aplikace určit, jestli třída DataContractJsonSerializer podporuje více pravidel úpravy pro jedno časové pásmo. Jedná se o funkci výslovného souhlasu. Pokud ho chcete povolit, přidejte do souboru app.config nastavení:

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

Pokud je tato funkce povolena, DataContractJsonSerializer objekt TimeZoneInfo používá typ místo TimeZone typu k deserializaci dat data a času. TimeZoneInfo podporuje více pravidel úpravy, což umožňuje pracovat s historickými daty časového pásma. TimeZone není.

Další informace o úpravách TimeZoneInfo struktury a časového pásma najdete v tématu Přehled časového pásma.

NetNamedPipeBinding – nejlepší shoda

WCF má nové nastavení aplikace, které je možné nastavit v klientských aplikacích, aby se zajistilo, že se vždy připojují ke službě naslouchající na identifikátoru URI, který nejlépe odpovídá tomu, který si vyžádá. Když je toto nastavení false aplikace nastavené na (výchozí nastavení), NetNamedPipeBinding klienti, kteří používají , se mohou pokusit připojit ke službě naslouchající na identifikátoru URI, který je podřetězec požadovaného identifikátoru URI.

Klient se například pokusí připojit ke net.pipe://localhost/Service1službě naslouchající v , ale na počítači běžící s oprávněním správce naslouchá jiná služba.net.pipe://localhost Když je toto nastavení aplikace nastavené na false, klient se pokusí připojit k nesprávné službě. Po nastavení aplikace na truese klient vždy připojí k nejlepší odpovídající službě.

Poznámka

Klienti NetNamedPipeBinding , kteří používají služby hledání na základě základní adresy služby (pokud existuje) místo úplné adresy koncového bodu. Aby se zajistilo, že toto nastavení bude vždy fungovat, měla by služba používat jedinečnou základní adresu.

Pokud chcete tuto změnu povolit, přidejte následující nastavení aplikace do souboru App.config nebo Web.config aplikace:

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

SSL 3.0 není výchozí protokol.

Pokud používáte NetTcp se zabezpečením přenosu a typem přihlašovacích údajů certifikátu, protokol SSL 3.0 už není výchozím protokolem používaným k vyjednávání zabezpečeného připojení. Ve většině případů by to nemělo mít žádný vliv na stávající aplikace, protože protokol TLS 1.0 je součástí seznamu protokolů pro NetTcp. Všichni stávající klienti by měli být schopni vyjednat připojení s použitím alespoň protokolu TLS 1.0. Pokud se vyžaduje ssl3, přidejte ho do seznamu vyjednaných protokolů pomocí jednoho z následujících konfiguračních mechanismů.

Windows Presentation Foundation (WPF)

V .NET Framework 4.6.2 jsme Windows Presentation Foundation vylepšení v následujících oblastech:

Řazení skupin

Aplikace, která používá objekt CollectionView k seskupení dat, teď může explicitně deklarovat, jak se mají skupiny seřadit. Explicitní řazení řeší problém ne intuitivního řazení, ke kterému dochází, když aplikace dynamicky přidává nebo odebírá skupiny nebo mění hodnotu vlastností položek, které jsou součástí seskupení. Může také zlepšit výkon procesu vytváření skupin přesunutím porovnání vlastností seskupení z typu úplné kolekce na typ skupin.

Pro podporu řazení skupin nové vlastnosti GroupDescription.SortDescriptionsGroupDescription.CustomSort a popisují, jak seřadit kolekci skupin vytvořených objektem GroupDescription . To je obdobou způsobu, jakým identicky pojmenované ListCollectionView vlastnosti popisují, jak seřadit datové položky.

Pro nejběžnější případy lze PropertyGroupDescription použít dvě CompareNameAscendingCompareNameDescendingnové statické vlastnosti třídy a .

Například následující kód XAML seskupuje data podle věku, seřadí věkové skupiny ve vzestupném pořadí a seskupí položky v rámci každé věkové skupiny podle příjmení.

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

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

Podpora dotykové klávesnice

Podpora dotykové klávesnice umožňuje sledování fokusu v aplikacích WPF automatickým vyvoláním a zavřením dotykové klávesnice v Windows 10, když ovládací prvek, který přijímá vstup dotykového ovládání, přijímá textový vstup.

V předchozích verzích .NET Framework wpf aplikace WPF nelze přihlásit ke sledování fokusu bez zakázání podpory gesta pera/dotykového ovládání WPF. V důsledku toho musí aplikace WPF vybírat mezi plnou podporou dotykového ovládání WPF nebo se spoléhat na Windows myši.

DPI pro každý monitor

Wpf v systému .NET Framework 4.6.2 podporuje nedávné nárůsty prostředí s vysokým a hybridním dpi pro aplikace WPF. Další informace o tom, jak GitHub WPF pro sledování DPI, najdete v příručce pro vývojáře a ukázky.

V předchozích verzích .NET Framework aplikace WPF systému na DPI. Jinými slovy, uživatelské rozhraní aplikace se podle potřeby škáluje podle operačního systému v závislosti na DPI monitoru, na kterém se aplikace vykresluje.

U aplikací spuštěných v systému .NET Framework 4.6.2 můžete zakázat změny DPI pro každý monitor v aplikacích WPF <přidáním konfiguračního příkazu do části modulu runtime> konfiguračního souboru aplikace následujícím způsobem:

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

Windows Workflow Foundation (WF)

Ve .NET Framework 4.6.2 jsme Windows Workflow Foundation v následující oblasti:

Podpora výrazů jazyka C# a technologie IntelliSense v návrháři WF se přehostitelem

Počínaje .NET Framework 4.5 podporuje WF výrazy jazyka C# v návrháři Visual Studio i v pracovních postupech kódu. Třída Rehosted Návrhář postupu provádění klíčovou funkcí WF, která umožňuje, aby Návrhář postupu provádění byla v aplikaci mimo Visual Studio (například ve WPF). Windows Workflow Foundation poskytuje možnost podporovat výrazy jazyka C# a technologii IntelliSense v pracovním Návrhář postupu provádění. Další informace najdete na blogu Windows Workflow Foundation.

Availability of IntelliSense when a customer rebuilds a workflow project from Visual StudioVe verzích .NET Framework verze starší než 4.6.2 je technologie IntelliSense návrháře WF poškozena, když zákazník znovu sestaví projekt pracovního postupu z Visual Studio. Sestavení projektu je úspěšné, ale typy pracovních postupů se v návrháři nenachází a v okně návrháře se zobrazí upozornění technologie IntelliSense pro chybějící typy pracovních postupů Seznam chyb okně. .NET Framework 4.6.2 řeší tento problém a z dostupných funkcí IntelliSense.

Aplikace pracovního postupu V1 se sledováním pracovních postupů nyní běží v režimu FIPS

Počítače s povoleným režimem dodržování předpisů FIPS teď mohou úspěšně spustit aplikaci ve stylu pracovního postupu verze 1 se zapnutým sledováním pracovního postupu. Pokud chcete tento scénář povolit, musíte v souboru app.config provést následující změnu:

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

Pokud tento scénář není povolený, spuštění aplikace bude dál generovat výjimku se zprávou " Tato implementace není součástí kryptografických algoritmů ověřených fips platformou Windows Platform".

Vylepšení pracovních postupů při použití dynamické aktualizace s Visual Studio Návrhář postupu provádění

Návrhář Návrhář postupu provádění, Návrhář aktivity FlowChart a další návrháři aktivit pracovních postupů teď úspěšně načítá a zobrazují pracovní postupy, které byly uloženy po volání DynamicUpdateServices.PrepareForUpdate metody . Ve verzích .NET Framework před .NET Framework 4.6.2 může načtení souboru XAML v souboru Visual Studio DynamicUpdateServices.PrepareForUpdate pro pracovní postup, který byl uložen po volání , vést k následujícím problémům:

  • Aplikace Návrhář postupu provádění nemůže správně načíst soubor XAML (pokud ViewStateData.Id je na konci řádku ).

  • Návrhář aktivity vývojového diagramu nebo jiné návrháře aktivit pracovních postupů mohou na rozdíl od hodnot připojených vlastností zobrazit všechny objekty ve svých výchozích umístěních.

ClickOnce

ClickOnce aktualizace protokolu TLS 1.1 a TLS 1.2 kromě protokolu 1.0, který už podporuje. ClickOnce automaticky zjistí, který protokol je potřeba. K povolení podpory protokolů TLS 1.1 a 1.2 nejsou potřeba žádné další kroky v rámci aplikace ClickOnce.

Převod aplikací model Windows Forms WPF na aplikace pro UPW

Windows teď nabízí možnosti, jak přenést stávající Windows desktopové aplikace, včetně APLIKACÍ WPF a model Windows Forms, do Univerzální platforma Windows (UPW). Tato technologie funguje jako most, protože umožňuje postupně migrovat stávající základ kódu do UPW, čímž se vaše aplikace přenese do všech Windows 10 zařízení.

Převedené desktopové aplikace získají identitu aplikace podobnou identitě aplikací pro UPW, díky které jsou rozhraní API UPW přístupná pro povolení funkcí, jako jsou živé dlaždice a oznámení. Aplikace se dál chová jako předtím a běží jako aplikace s plnou důvěryhodností. Po převodu aplikace je možné přidat proces kontejneru aplikace do stávajícího procesu úplné důvěryhodnosti a přidat tak adaptivní uživatelské rozhraní. Když se všechny funkce přesunou do procesu kontejneru aplikace, je možné odebrat celý proces důvěryhodnosti a nová aplikace pro UPW může být dostupná pro všechna Windows 10 zařízení.

Vylepšení ladění

Nespravované rozhraní API ladění bylo ve .NET Framework 4.6.2 NullReferenceException vylepšeno tak, aby při vyvolání metody bylo možné provést další analýzu, aby bylo možné určit, která proměnná na jednom řádku zdrojového kódu je null. Pro podporu tohoto scénáře byla do nespravovaného rozhraní API ladění přidána následující rozhraní API.

Co je nového ve .NET Framework 4.6.1

.NET Framework 4.6.1 obsahuje nové funkce v následujících oblastech:

Další informace o .NET Framework 4.6.1 najdete v následujících tématech:

Kryptografie: Podpora certifikátů X509 obsahujících ECDSA

.NET Framework verze 4.6 byla přidána podpora RSACng pro certifikáty X509. .NET Framework 4.6.1 přidává podporu certifikátů X509 ECDSA (Elliptic Curve Digital Signature Algorithm).

ECDSA nabízí lepší výkon a je bezpečnější kryptografický algoritmus než RSA, který poskytuje skvělou volbu v případě, že je důležité výkon a škálovatelnost protokolu TLS (Transport Layer Security). Implementace .NET Framework zabalí volání do existujících Windows funkcí.

Následující příklad kódu ukazuje, jak snadné je vygenerovat podpis pro datový proud bajtů pomocí nové podpory certifikátů ECDSA X509, které jsou součástí .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);
    }
}
Imports System.Security.Cryptography
Imports System.Security.Cryptography.X509Certificates

Public Class Net461Code
    Public Shared Function SignECDsaSha512(data As Byte(), cert As X509Certificate2) As Byte()
        Using privateKey As ECDsa = cert.GetECDsaPrivateKey()
            Return privateKey.SignData(data, HashAlgorithmName.SHA512)
        End Using
    End Function

    Public Shared Function SignECDsaSha512(data As Byte, privateKey As ECDsa) As Byte()
        Return privateKey.SignData(data, HashAlgorithmName.SHA512)
    End Function
End Class

To nabízí výrazný kontrast s kódem potřebným k vygenerování podpisu ve .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);
    }
}
Imports System.Security.Cryptography
Imports System.Security.Cryptography.X509Certificates

Public Class Net46Code
    Public Shared Function SignECDsaSha512(data As Byte(), cert As X509Certificate2) As Byte()
        ' 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...")
    End Function

    Public Shared Function SignECDsaSha512(data As Byte(), privateKey As ECDsa) As Byte()
        ' This way works, but SignData probably better matches what you want.
        Using hasher As SHA512 = SHA512.Create()
            Dim signature1 As Byte() = privateKey.SignHash(hasher.ComputeHash(data))
        End Using

        ' This might not be the ECDsa you got!
        Dim ecDsaCng As ECDsaCng = CType(privateKey, ECDsaCng)
        ecDsaCng.HashAlgorithm = CngAlgorithm.Sha512
        Return ecDsaCng.SignData(data)
    End Function
End Class

ADO.NET

Do souboru se přidaly následující ADO.NET:

Always Encrypted podpory hardwarově chráněných klíčů

ADO.NET teď podporuje nativně ukládání Always Encrypted hlavních klíčů sloupců do modulů hardwarového zabezpečení (HSM). Díky této podpoře mohou zákazníci využívat asymetrické klíče uložené v HSM, aniž by museli psát vlastní poskytovatele hlavního úložiště klíčů sloupců a registrovat je v aplikacích.

Zákazníci musí na servery aplikací nebo klientských počítačů nainstalovat poskytovatele CSP nebo úložiště klíčů C Always Encrypted NG od dodavatele HSM, aby mohli přistupovat k datům chráněným pomocí hlavního klíče sloupce uloženého v HSM.

Vylepšené MultiSubnetFailover chování připojení pro AlwaysOn

SqlClient teď automaticky poskytuje rychlejší připojení ke skupině dostupnosti AlwaysOn. Transparentně zjistí, jestli se vaše aplikace připojuje ke skupině dostupnosti AlwaysOn v jiné podsíti, rychle zjistí aktuální aktivní server a poskytne připojení k serveru. Před touto verzí musela aplikace "MultisubnetFailover=true" nastavit připojovací řetězec tak, aby zahrnoval indikující, že se připojuje ke skupině dostupnosti AlwaysOn. Bez nastavení klíčového slova připojení na truehodnotu může u aplikace dojít k časovému limitu při připojování ke skupině dostupnosti AlwaysOn. V této verzi už aplikace nemusí být nastavená na MultiSubnetFailovertrue . Další informace o podpoře sqlclient pro skupiny dostupnosti Always On najdete v tématu Podpora sqlClient pro vysokou dostupnost a zotavení po havárii.

Windows Presentation Foundation (WPF)

Windows Presentation Foundation zahrnuje řadu vylepšení a změn.

Vyšší výkon

Zpoždění při aktivaci dotykových událostí bylo opraveno ve .NET Framework 4.6.1. Kromě toho psaní do ovládacího prvku už RichTextBox během rychlého vstupu nesvazuje vlákno vykreslení.

Vylepšení kontroly pravopisu

Kontrola pravopisu ve WPF byla aktualizována na Windows 8.1 a novějších verzích, aby se využila podpora operačního systému pro kontrolu pravopisu v dalších jazycích. V předchozích verzích se u Windows nemění Windows 8.1.

Stejně jako v předchozích .NET Framework se TextBoxRichTextBox jazyk ovládacího prvku nebo bloku detekuje hledáním informací v následujícím pořadí:

  • xml:lang, pokud je k dispozici.

  • Aktuální jazyk vstupu.

  • Aktuální jazyková verze.

Další informace o podpoře jazyků ve WPF najdete v blogovém příspěvku WPF o funkcích .NET Framework 4.6.1.

Další podpora vlastních slovníků pro uživatele

V .NET Framework 4.6.1 rozpozná WPF vlastní slovníky, které jsou zaregistrované globálně. Tato funkce je dostupná kromě možnosti jejich registrace pro řízení.

V předchozích verzích WPF vlastní slovníky nerozpoznaly vyloučená slova a seznamy automatických oprav. Podporují se na Windows 8.1 a Windows 10 prostřednictvím souborů, které lze umístit do adresáře %AppData%\Microsoft\Spelling\<language tag> . Na tyto soubory se vztahují následující pravidla:

  • Soubory by měly mít přípony .dic (pro přidaná slova), .exc (pro vyloučená slova) nebo .acl (pro AutoCorrect).

  • Soubory by měly být ve formátu prostého textu UTF-16 LE, který začíná značkou pořadí bajtů (BOM).

  • Každý řádek by se měl skládat ze slova (v přidaných a vyloučených seznamech slov) nebo z dvojice autocorrect se slovy oddělenými svislým pruhem ("|"). (v seznamu slov AutoCorrect).

  • Tyto soubory se považují za soubory jen pro čtení a systém je neupravuje.

Poznámka

Tyto nové formáty souborů nejsou přímo podporovány rozhraními API pro kontrolu pravopisu WPF a vlastní slovníky dodávané WPF v aplikacích by měly dál používat soubory .lex.

ukázky

Microsoft/WPF-Samples obsahuje několik ukázek WPF pro GitHub WPF. Pomozte nám vylepšit naše ukázky odesláním žádosti o změnu nebo otevřením GitHub problému.

Rozšíření DirectX

WPF obsahuje NuGet,D3DImage který poskytuje nové implementace , které vám pomů e snadno spolupracovat s obsahem DX10 a Dx11. Kód pro tento balíček je open source a je k dispozici na GitHub.

Windows Workflow Foundation: Transakce

Metoda Transaction.EnlistPromotableSinglePhase nyní lze použít správce distribuovaných transakcí jiné než MSDTC k propagaci transakce. To lze provést zadáním identifikátoru propagátoru transakce GUID pro nové přetížení Transaction.EnlistPromotableSinglePhase(IPromotableSinglePhaseNotification, Guid) . Pokud je tato operace úspěšná, existují omezení týkající se možností transakce. Jakmile je povýšení transakce bez MSDTC zařazení, následující metody vyvolat, TransactionPromotionException protože tyto metody vyžadují povýšení na MSDTC:

Po zařazení non-MSDTC propagátor transakce, musí být použita pro budoucí trvalý zařazení pomocí protokolů, které definuje. Objekt Guid pro zvýšení propagátoru transakce lze získat pomocí PromoterType vlastnosti . Při povýšení transakce, propagátor transakce poskytuje Byte pole, které představuje token povýšené. Aplikace může získat token povýšit pro jiné než MSDTC povýšené transakce pomocí GetPromotedToken metody.

Aby se operace povýšení Transaction.EnlistPromotableSinglePhase(IPromotableSinglePhaseNotification, Guid) úspěšně dokončila, musí uživatelé nového přetížení postupovat podle konkrétní sekvence volání. Tato pravidla jsou zdokumentována v dokumentaci metody .

Profilace

Nespravované rozhraní API pro profilaci bylo vylepšeno následujícím způsobem:

  • Lepší podpora pro přístup k souborům PBS v rozhraní ICorProfilerInfo7

    V ASP.NET Core je čím dál častější, když Roslyn kompiluje sestavení v paměti. Pro vývojáře, kteří dělají nástroje pro profilaci, to znamená, že soubory PBS, které byly v minulosti serializovány na disku, už nemusí být k dispozici. Nástroje profileru často mapují kód zpět na zdrojové řádky pro úlohy, jako je pokrytí kódu nebo řádková analýza výkonu. Rozhraní ICorProfilerInfo7 teď obsahuje dvě nové metody , ICorProfilerInfo7::GetInMemorySymbolsLength a ICorProfilerInfo7::ReadInMemorySymbols, které poskytují těmto profilerům přístup k datům PDB v paměti. Pomocí nových rozhraní API může profiler získat obsah souboru PDB v paměti jako pole bajtů a pak ho zpracovat nebo serializovat na disk.

  • Lepší instrumentace pomocí rozhraní ICorProfiler

    Profilátory, které používají funkce ICorProfiler ReJit rozhraní API pro dynamickou instrumentaci, teď mohou upravit některá metadata. Dříve takové nástroje mohly kdykoli instrumentovat IL, ale metadata bylo možné upravit pouze při načítání modulu. Vzhledem k tomu, že IL odkazuje na metadata, omezilo to druhy instrumentace, které by bylo možné provést. Některé z těchto omezení jsme zrušili přidáním metody ICorProfilerInfo7::ApplyMetaData pro podporu podmnožiny úprav metadat po načtení modulu, AssemblyRefzejména přidáním nových záznamů , MemberRefMemberSpecTypeRefTypeSpec, UserString a . Tato změna umožňuje mnohem širší škálu instrumentace za běhu.

Soubory PBS nativního generátoru obrázků (NGEN)

Trasování událostí napříč počítači umožňuje zákazníkům profilovat program na počítači A a podívat se na data profilace s mapováním zdrojové čáry na počítači B. Pomocí předchozích verzí nástroje .NET Framework by uživatel zkopíroval všechny moduly a nativní bitové kopie z profilového počítače do analytického počítače, který obsahuje databázi IL PDB, a vytvořil tak mapování ze zdroje na nativní. I když tento proces může dobře fungovat, pokud jsou soubory relativně malé, například pro telefonní aplikace, mohou být soubory v desktopových systémech velmi velké a jejich kopírování vyžaduje značnou dobu.

Pomocí souborů PDB Ngen může NGen vytvořit databázi PDB, která obsahuje mapování IL na nativní bez závislosti na databázi IL PDB. V našem scénáři trasování událostí napříč počítači je potřeba zkopírovat soubor PDB nativní bitové kopie vygenerovaný z počítače A do počítače B a pomocí rozhraní API pro přístup k rozhraní ladění číst mapování zdroje na IL databáze IL a nativní mapování IL pro PDB nativní bitové kopie. Kombinace obou mapování poskytuje mapování ze zdroje na nativní. Vzhledem k tomu, že nativní image PDB je mnohem menší než všechny moduly a nativní bitové kopie, proces kopírování z počítače A do počítače B je mnohem rychlejší.

Co je nového v .NET 2015

.NET 2015 přináší .NET Framework 4.6 a .NET Core. Některé nové funkce platí pro obě a další funkce jsou specifické pro .NET Framework 4.6 nebo .NET Core.

  • ASP.NET Core

    .NET 2015 obsahuje ASP.NET Core, což je nenároová implementace .NET pro vytváření moderních cloudových aplikací. ASP.NET Core modulární, takže můžete zahrnout pouze ty funkce, které jsou ve vaší aplikaci potřeba. Může být hostovaný ve službě IIS nebo v vlastním procesu a můžete spouštět aplikace s různými verzemi .NET Framework na stejném serveru. Zahrnuje nový systém konfigurace prostředí, který je navržený pro nasazení do cloudu.

    MVC, webové rozhraní API a webové stránky jsou sjednocené do jediné architektury nazvané MVC 6. Aplikace pro ASP.NET Core sestavíte pomocí nástrojů v Visual Studio 2015 nebo novějším. Vaše stávající aplikace budou fungovat na novém .NET Framework. Pokud ale chcete vytvořit aplikaci, která používá MVC 6 nebo SignalR 3, musíte použít projektový systém v Visual Studio 2015 nebo novějším.

    Informace najdete v ASP.NET Core.

  • ASP.NET aktualizace

    • Rozhraní API založené na úlohách pro asynchronní vyprázdnění odpovědí

      ASP.NET teď poskytuje jednoduché rozhraní API založené na úlohách pro asynchronní vyprázdnění odpovědí , HttpResponse.FlushAsynckteré umožňuje asynchronní vyprazdnění odpovědí pomocí podpory vašeho async/await jazyka.

    • Vazby modelu podporují metody vracející úlohy

      Ve .NET Framework 4.5 jsme přidali funkci vazby modelu ASP.NET která umožnila rozšiřitelný přístup založený na kódu pro operace s daty založený na CRUD na Web Forms stránkách a uživatelských ovládacích prvcích. Systém vazby modelu teď podporuje Taskmetody vazby modelu vracející model. Tato funkce umožňuje Web Forms vývojářům získat výhody škálovatelnosti modifikátoru async s jednoduchostí systému datových vazeb při použití novějších verzí ORM, včetně Entity Framework.

      Asynchronní vazby modelu se řídí nastavením aspnet:EnableAsyncModelBinding konfigurace.

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

      V aplikacích je .NET Framework 4.6 výchozí hodnota true. U aplikací spuštěných .NET Framework 4.6, které cílí na starší verzi .NET Framework, je to false ve výchozím nastavení. Můžete ho povolit nastavením nastavení konfigurace na true.

    • Podpora HTTP/2 (Windows 10)

      HTTP/2 je nová verze protokolu HTTP, která poskytuje mnohem lepší využití připojení (méně odezvy mezi klientem a serverem), což má za následek načítání webové stránky s nižší latencí pro uživatele. Webové stránky (na rozdíl od služeb) využívají nejvíce protokolu HTTP/2, protože protokol se optimalizuje pro více artefaktů požadovaných v rámci jednoho prostředí. Ve verzi ASP.NET 4.6 byla .NET Framework HTTP/2. Vzhledem k tomu, že síťové funkce existují ve více vrstvách, byly ve službě Windows, ve službě IIS a v ASP.NET vyžadovány nové funkce pro povolení protokolu HTTP/2. Pokud chcete používat HTTP/2 s Windows 10, musíte mít spuštěný ASP.NET.

      Protokol HTTP/2 se také ve výchozím nastavení podporuje a zapíná u aplikací Windows 10 Univerzální platforma Windows (UPW), které rozhraní System.Net.Http.HttpClient API používají.

      Aby bylo možné použít funkci PUSH_PROMISE v aplikacích ASP.NET, PushPromise(String)PushPromise(String, String, NameValueCollection)HttpResponse byla do třídy přidána nová metoda se dvěma přetíženími a .

      Poznámka

      Přestože ASP.NET Core podporuje HTTP/2, podpora funkce PUSH PROMISE ještě nebyla přidána.

      Veškeré práce dělají prohlížeč a webový server (služba IIS Windows počítači). Pro uživatele nemusíte dělat nic těžkého.

      Většina hlavních prohlížečů podporuje HTTP/2, takže je pravděpodobné, že pokud to váš server podporuje, bude pro vaše uživatele výhodná podpora HTTP/2.

    • Podpora protokolu vazby tokenů

      Microsoft a Google spolupracuje na novém přístupu k ověřování, který se nazývá protokol vazby tokenů. Předpokladem je, že ověřovací tokeny (v mezipaměti prohlížeče) mohou být odcizeny a používány trestné činnosti pro přístup k jinak zabezpečeným prostředkům (například k bankovnímu účtu), aniž by to vyžadovalo vaše heslo nebo jakékoli jiné privilegované znalosti. Cílem nového protokolu je zmírnit tento problém.

      Protokol vazby tokenů se bude implementovat Windows 10 jako funkce prohlížeče. ASP.NET se budou protokol účastnit, aby se ověřovací tokeny ověřily jako legitimní. Implementace klienta a serveru vytvoří koncovou ochranu určenou protokolem.

    • Náhodné hashovací algoritmy řetězců

      .NET Framework 4.5 jsme zavedli randomizovaný řetězcový hashovací algoritmus. Nepodporuje ho ale kvůli ASP.NET funkcím ASP.NET na stabilním hashovacím kódu. Ve .NET Framework 4.6 se teď podporují náhodné řetězcové hashovací algoritmy. Pokud chcete tuto funkci povolit, použijte nastavení aspnet:UseRandomizedStringHashAlgorithm konfigurace.

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

    ADO .NET teď podporuje funkci Always Encrypted dostupnou v SQL Server 2016. S Always Encrypted může SQL Server provádět operace se šifrovaným daty a nejlepší šifrovací klíč se nachází v aplikaci v důvěryhodném prostředí zákazníka, a ne na serveru. Always Encrypted zabezpečení zákaznických dat, aby DBA přistupovat k datům v prostém textu. Šifrování a dešifrování dat probíhá transparentně na úrovni ovladače, takže se minimalizují změny, které je třeba provést ve stávajících aplikacích. Podrobnosti najdete v tématu Always Encrypted (databázový stroj) a Always Encrypted (vývoj pro klienty).

  • 64bitový kompilátor JIT pro spravovaný kód

    .NET Framework verze 4.6 obsahuje novou verzi 64bitového kompilátoru JIT (původně s názvem kódem RyuJIT). Nový 64bitový kompilátor poskytuje významná vylepšení výkonu oproti staršímu 64bitovému kompilátoru JIT. Nový 64bitový kompilátor je povolený pro 64bitové procesy spuštěné nad .NET Framework 4.6. Vaše aplikace bude spuštěná v 64bitovém procesu, pokud je zkompilovaná jako 64bitová nebo AnyCPU a běží v 64bitovém operačním systému. Přechod na nový kompilátor je sice co nejprůhlednější, ale změny v chování jsou možné.

    Nový 64bitový kompilátor JIT obsahuje také hardwarové funkce akcelerace SIMD, pokud jsou v oboru názvů spolu s typy s podporou SIMD System.Numerics , což může přinést dobrá vylepšení výkonu.

  • Vylepšení zavaděče sestavení

    Zavaděč sestavení teď používá paměť efektivněji uvolněním sestavení IL po načtení odpovídající bitové kopie NGEN. Tato změna snižuje virtuální paměť, což je zvlášť výhodné pro velké 32bitové aplikace (například Visual Studio) a také šetří fyzickou paměť.

  • Změny knihovny základních tříd

    V systému .NET Framework 4.6 bylo přidáno mnoho nových rozhraní API. Patří mezi ně následující změny a doplňky:

    • Implementace IReadOnlyCollectionT<>

      Další kolekce implementují IReadOnlyCollection<T> například a Stack<T>Queue<T> .

    • CultureInfo.CurrentCulture a CultureInfo.CurrentUICulture

      Vlastnosti CultureInfo.CurrentCulture a CultureInfo.CurrentUICulture jsou teď pro čtení i zápis, nikoli jen pro čtení. Pokud těmto vlastnostem CultureInfo přiřadíte nový objekt, Thread.CurrentThread.CurrentCultureThread.CurrentThread.CurrentUICulture změní se také aktuální jazyková verze vlákna definovaná vlastností a aktuální jazyková verze vlákna uživatelského rozhraní definovaná vlastnostmi.

    • Vylepšení uvolňování paměti (GC)

      Třída GC teď obsahuje metody TryStartNoGCRegionEndNoGCRegion a , které umožňují zakázat uvolňování paměti během provádění kritické cesty.

      Nové přetížení GC.Collect(Int32, GCCollectionMode, Boolean, Boolean) metody umožňuje řídit, zda halda malých objektů i halda velkého objektu jsou přetáhněny a zkomprimovány nebo pouze přetáhněny.

    • Typy s povoleným SIMD

      Obor System.Numerics názvů teď obsahuje řadu typů s podporou SIMD, Matrix3x2například , Matrix4x4, Plane, QuaternionVector2, , Vector3a Vector4.

      Vzhledem k tomu, že nový 64bitový kompilátor JIT obsahuje také hardwarové funkce akcelerace SIMD, existují zvláště významná vylepšení výkonu při používání typů s podporou SIMD s novým 64bitovým kompilátorem JIT.

    • Aktualizace kryptografie

      Rozhraní System.Security.Cryptography API se aktualizuje tak, aby podporovalo Windows rozhraní API kryptografie CNG. Předchozí verze .NET Framework zcela spoléhaly na starší verzi rozhraní WINDOWS Cryptography API jako základ pro System.Security.Cryptography implementaci. Měli jsme požadavky na podporu rozhraní CNG API, protože podporuje moderní kryptografické algoritmy, které jsou důležité pro určité kategorie aplikací.

      .NET Framework 4.6 obsahuje následující nová vylepšení pro podporu rozhraní API kryptografie Windows CNG:

      • Sada rozšiřujících metod pro certifikáty X509 a , které vracejí implementaci založenou na CNG, a ne implementaci založenou na CAPI, System.Security.Cryptography.X509Certificates.RSACertificateExtensions.GetRSAPublicKey(System.Security.Cryptography.X509Certificates.X509Certificate2)System.Security.Cryptography.X509Certificates.RSACertificateExtensions.GetRSAPrivateKey(System.Security.Cryptography.X509Certificates.X509Certificate2)pokud je to možné. (Některé čipové karty atd., stále vyžadují CAPI a rozhraní API se o záložní řešení řešila).

      • Třída System.Security.Cryptography.RSACng , která poskytuje implementaci algoritmu RSA pro CNG.

      • Vylepšení rozhraní RSA API tak, aby běžné akce už nevyžadují přetypování. Například šifrování dat pomocí objektu vyžaduje X509Certificate2 kód jako v předchozích verzích .NET Framework.

        RSACryptoServiceProvider rsa = (RSACryptoServiceProvider)cert.PrivateKey;
        byte[] oaepEncrypted = rsa.Encrypt(data, true);
        byte[] pkcs1Encrypted = rsa.Encrypt(data, false);
        
        Dim rsa As RSACryptoServiceProvider = CType(cert.PrivateKey, RSACryptoServiceProvider)
        Dim oaepEncrypted() As Byte = rsa.Encrypt(data, True)
        Dim pkcs1Encrypted() As Byte = rsa.Encrypt(data, False)
        

        Kód, který používá nová kryptografické rozhraní API ve .NET Framework 4.6, lze přepsat následujícím způsobem, aby se zabránilo přetypování.

        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);
        
        Dim rsa As RSA = cert.GetRSAPrivateKey()
        If rsa Is Nothing Then
            Throw New InvalidOperationException("An RSA certificate was expected")
        End If
        
        Dim oaepEncrypted() As Byte = rsa.Encrypt(data, RSAEncryptionPadding.OaepSHA1)
        Dim pkcs1Encrypted() As Byte = rsa.Encrypt(data, RSAEncryptionPadding.Pkcs1)
        
    • Podpora převodu dat a časů na unixový čas nebo z času Unixu

      Do struktury byly přidány DateTimeOffset následující nové metody, které podporují převod hodnot data a času na unixový čas nebo z času Unixu:

    • Přepínače kompatibility

      Třída AppContext přidává novou funkci kompatibility, která umožňuje zapisovačům knihoven poskytovat jednotný mechanismus odhlášení pro nové funkce pro jejich uživatele. Vytváří volně prováděný kontrakt mezi komponentami, aby bylo možné komunikovat žádost o odhlášení. Tato schopnost je obvykle důležitá, když dojde ke změně stávajících funkcí. Naopak už existuje implicitní výslovný souhlas s novými funkcemi.

      V AppContextsystému knihovny definují a zpřístupňuje přepínače kompatibility, zatímco kód, který na nich závisí, může tyto přepínače nastavit tak, aby ovlivnily chování knihovny. Ve výchozím nastavení poskytují knihovny nové funkce a mění je (to znamená, že poskytují předchozí funkce), pouze pokud je přepínač nastavený.

      Aplikace (nebo knihovna) může deklarovat hodnotu přepínače (což Boolean je vždy hodnota), kterou definuje závislá knihovna. Přepínač je vždy implicitně false. Když přepínač nastavíte true na , povolíte ho. Explicitní nastavení přepínače na false poskytuje nové chování.

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

      Knihovna musí zkontrolovat, jestli příjemce deklaroval hodnotu přepínače, a pak na něj odpovídajícím způsobem jednat.

      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
      }
      
      If Not AppContext.TryGetSwitch("Switch.AmazingLib.ThrowOnException", shouldThrow) Then
          ' 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.
      End If
      
      ' The library can use the value of shouldThrow to throw exceptions or not.
      If shouldThrow Then
          ' old code
      Else
          ' new code
      End If
      

      Pro přepínače je výhodné používat konzistentní formát, protože se jedná o formální kontrakt vystavený knihovnou. Níže jsou dva zřejmé formáty.

      • Switch (Přepnout). obor názvů. název přepínače

      • Switch (Přepnout). knihovna.název přepínače

    • Změny asynchronního vzoru založeného na úlohách (klepnutím)

      pro aplikace, které cílí na .NET Framework 4,6, Task a Task<TResult> objekty dědí jazykovou verzi a jazykovou verzi uživatelského rozhraní volajícího vlákna. chování aplikací, které cílí na předchozí verze .NET Framework nebo které necílí na konkrétní verzi .NET Framework, není ovlivněno. Další informace naleznete v části CultureInfo "jazyková verze a asynchronní operace založené na úlohách" v tématu třídy.

      System.Threading.AsyncLocal<T>Třída umožňuje znázornit ambientní data, která jsou lokální pro daný tok asynchronního řízení, jako async je například metoda. Dá se použít k uchovávání dat napříč vlákny. Můžete také definovat metodu zpětného volání, která je upozorněna vždy, když se změní okolní data buď z AsyncLocal<T>.Value důvodu explicitního Změna vlastnosti, nebo protože vlákno zaznamenalo kontextový přechod.

      Do asynchronního vzoru založeného na úlohách (klepnutím) byly přidány tři praktické metody, Task.CompletedTaskTask.FromCanceled , a Task.FromException , které budou vracet dokončené úkoly v určitém stavu.

      NamedPipeClientStreamTřída teď podporuje asynchronní komunikaci s jejím novým ConnectAsync . Metoda.

    • EventSource teď podporuje zápis do protokolu událostí.

      Nyní můžete použít EventSource třídu k protokolování administrativních a provozních zpráv do protokolu událostí, a to i na všechny existující relace ETW, které byly vytvořeny v počítači. v minulosti jste pro tuto funkci museli použít balíček Microsoft. diagnostics. tracing. EventSource NuGet. tato funkce je teď integrovaná .NET Framework 4,6.

      balíček NuGet i .NET Framework 4,6 byly aktualizovány následujícími funkcemi:

      • Dynamické události

        Povoluje události definované "průběžně" bez vytváření metod událostí.

      • Bohatá datová část

        Povoluje jako datovou část speciálně definované třídy a pole a také primitivní typy, které mají být předány.

      • Sledování aktivit

        Způsobí, že události spuštění a zastavení mezi nimi budou označovat události s ID, které představuje všechny aktuálně aktivní aktivity.

      Pro podporu těchto funkcí byla přetížená Write Metoda přidána do EventSource třídy.

  • Windows Presentation Foundation (WPF)

    • Vylepšení HDPI

      podpora HDPI v subsystému WPF je teď v .NET Framework 4,6 lepší. Byly provedeny změny rozložení při zaokrouhlování, aby se snížily instance oříznutí v ovládacích prvcích s ohraničením. ve výchozím nastavení je tato funkce povolená, jenom když TargetFrameworkAttribute je nastavená na .NET Framework 4,6. aplikace, které jsou cíleny na starší verze rozhraní, ale jsou spuštěny v .NET Framework 4,6, mohou přihlášeni k novému chování přidáním následujícího řádku do < části runtime > souboru app.config:

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

      WPF Windows přecházející z více monitorů s různými nastaveními DPI (nastavení s více DPI) se teď kompletně vykreslují bez černých oblastí. Toto chování můžete odhlásit přidáním následujícího řádku do <appSettings> části souboru app.config, abyste zakázali toto nové chování:

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

      Do se System.Windows.Input.Cursor přidala podpora pro automatické načtení správného kurzoru na základě nastavení DPI.

    • Dotykové ovládání je lepší

      sestavy zákazníků na Připojení , že dotykové ovládání přináší nepředvídatelné chování, se řeší v .NET Framework 4,6. prahová hodnota dvojitého kliknutí pro aplikace Windows storu a aplikace WPF je teď stejná jako v Windows 8.1 a vyšších.

    • Podpora transparentního podřízeného okna

      WPF v .NET Framework 4,6 podporuje transparentní podřízená okna v Windows 8.1 a vyšším. To umožňuje vytvořit v oknech nejvyšší úrovně neobdélníkové a průhledné podřízené okna. Tuto funkci můžete povolit nastavením HwndSourceParameters.UsesPerPixelTransparency vlastnosti na true .

  • Windows Communication Foundation (WCF)

    • Podpora SSL

      Služba WCF teď podporuje protokol SSL verze TLS 1,1 a TLS 1,2 kromě protokolu SSL 3,0 a TLS 1,0 při použití NetTcp s zabezpečením přenosu a ověřováním klientů. Nyní je možné vybrat, který protokol se má použít, nebo zakázat staré méně zabezpečené protokoly. To lze provést buď nastavením SslProtocols vlastnosti, nebo přidáním následujícího do konfiguračního souboru.

      <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>
      
    • Posílání zpráv pomocí různých připojení HTTP

      WCF teď umožňuje uživatelům zajistit, aby se určité zprávy odesílaly pomocí různých základních připojení HTTP. Toto lze provést dvěma způsoby:

      • Použití předpony názvu skupiny připojení

        Uživatelé můžou zadat řetězec, který bude WCF používat jako předponu pro název skupiny připojení. Dvě zprávy s různými předponami jsou odesílány pomocí různých základních připojení HTTP. Předponu můžete nastavit přidáním páru klíč-hodnota k vlastnosti zprávy Message.Properties . Klíč je "HttpTransportConnectionGroupNamePrefix"; hodnota je požadovaná předpona.

      • Používání různých továrn kanálů

        Uživatelé taky můžou povolit funkci, která zajistí, že se zprávy odeslané pomocí kanálů vytvořených různými továrnami kanálů budou používat v různých podkladových připojeních HTTP. Chcete-li povolit tuto funkci, musí uživatelé nastavit následující appSettingtrue :

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

    Nyní můžete zadat počet sekund, po které bude služba pracovního postupu pojmout požadavek na operaci mimo pořadí, pokud před vypršením časového limitu žádosti existuje nevyřízená záložka bez protokolu. Záložka "non-Protocol" je záložka, která nesouvisí s nezpracovanými aktivitami příjmu. Některé aktivity vytvářejí záložky bez protokolu v rámci jejich implementace, takže nemusí být zřejmé, že existuje záložka bez protokolu. Mezi ně patří stav a výběr. Takže pokud máte službu pracovního postupu implementovanou se stavovým počítačem nebo obsahuje aktivitu vyskladnění, pravděpodobně budete mít záložky bez protokolu. Interval zadejte tak, že do appSettings části souboru app.config přidáte řádek podobný následujícímu:

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

    Výchozí hodnota je 60 sekund. Pokud value je hodnota nastavena na 0, žádosti mimo pořadí jsou okamžitě odmítnuty s chybou text, který vypadá takto:

    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.
    

    Jedná se o stejnou zprávu, kterou dostanete, pokud je přijata zpráva o operacích mimo pořadí a nejsou k dispozici žádné záložky bez protokolu.

    Pokud hodnota FilterResumeTimeoutInSeconds elementu je nenulová, neexistují žádné záložky bez protokolu a časový limit vyprší, operace se nezdařila se zprávou o vypršení časového limitu.

  • Transakce

    Nyní můžete zahrnout identifikátor distribuované transakce pro transakci, která způsobila výjimku odvozenou od TransactionException vyvolání. Uděláte to tak, že do appSettings části souboru app.config přidáte následující klíč:

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

    Výchozí hodnota je false.

  • Sítě

    • Opakované použití soketu

      Windows 10 zahrnují nový síťový algoritmus s vysokou škálovatelností, který zajišťuje lepší využívání prostředků počítače tím, že znovu používá místní porty pro odchozí připojení TCP. .NET Framework 4,6 podporuje nový algoritmus a umožňuje aplikacím .net využít nové chování. v předchozích verzích Windows bylo navázáno umělé souběžné připojení (obvykle 16 384, výchozí velikost dynamického rozsahu portů), což může omezit škálovatelnost služby tím, že způsobuje vyčerpání portů při zatížení.

      v .NET Framework 4,6 byly přidány dvě rozhraní api, aby bylo možné znovu použít port, což efektivně odstraní limit 64 KB pro souběžná připojení:

      Ve výchozím nastavení vlastnost je false , ServicePointManager.ReusePort Pokud HWRPortReuseOnSocketBind hodnota HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 klíče registru není nastavená na 0x1. Chcete-li povolit používání místních portů u připojení HTTP, nastavte ServicePointManager.ReusePort vlastnost na true hodnotu. to způsobí, že všechna odchozí připojení soketu TCP z HttpClient a HttpWebRequest použije novou možnost soketu Windows 10 SO_REUSE_UNICASTPORT, která umožňuje použití místního portu.

      Vývojáři, kteří vytvářejí pouze sokety, mohou určit System.Net.Sockets.SocketOptionName možnost při volání metody, například Socket.SetSocketOption tak, aby odchozí sokety opakovaně znovu vyvolaly místní porty během vytváření vazby.

    • Podpora mezinárodních názvů domén a PunyCode

      Do třídy se přidala Uri Nová vlastnost, IdnHost která bude lépe podporovat názvy mezinárodních domén a Punycode.

  • změna velikosti v ovládacích prvcích model Windows Forms.

    tato funkce byla rozšířena v .NET Framework 4,6, aby zahrnovala DomainUpDown typy, NumericUpDown , ToolStripSplitButtonDataGridViewComboBoxColumnDataGridViewColumn a a obdélník určený Bounds vlastností použitou při vykreslování UITypeEditor .

    Toto je funkce výslovného souhlasu. Pokud ho chcete povolit, nastavte EnableWindowsFormsHighDpiAutoResizing element na true v souboru konfigurace aplikace (app.config):

    <appSettings>
        <add key="EnableWindowsFormsHighDpiAutoResizing" value="true" />
    </appSettings>
    
  • Podpora kódování znakových stránek

    .NET Core primárně podporuje kódování Unicode a ve výchozím nastavení poskytuje omezené podpory pro kódování znakových stránek. můžete přidat podporu pro kódování znakových stránek, která jsou k dispozici v .NET Framework, ale nepodporovaná v .net Core, registrací kódování znakové stránky pomocí Encoding.RegisterProvider metody. Další informace naleznete v tématu System.Text.CodePagesEncodingProvider.

  • .NET Native

aplikace Univerzální platforma Windows (UWP), které jsou napsané v jazyce C# nebo Visual Basic, mohou využívat novou technologii, která kompiluje aplikace do nativního kódu namísto IL. Tato technologie vytváří aplikace, které mají rychlejší spuštění a dobu spuštění. Další informace najdete v tématu kompilace aplikací pomocí .NET Native. přehled .NET Native, který prověřuje, jak se liší od kompilace JIT i NGEN a co znamená pro váš kód, naleznete v tématu .NET Native a kompilace.

vaše aplikace jsou kompilovány do nativního kódu ve výchozím nastavení při kompilování s Visual Studio 2015 nebo novějším. další informace najdete v tématu Začínáme s .NET Native.

pro podporu ladění aplikací .NET Native bylo přidáno několik nových rozhraní a výčtů do nespravovaného ladicího rozhraní API. Další informace naleznete v tématu ladění (nespravované rozhraní API) .

co je nového v .NET Framework 4.5.2

  • nová rozhraní api pro aplikace ASP.NET. Nové HttpResponse.AddOnSendingHeaders metody a HttpResponseBase.AddOnSendingHeaders umožňují kontrolovat a upravovat hlavičky odpovědí a stavový kód, protože odpověď se vyprazdňuje do klientské aplikace. Zvažte použití těchto metod namísto PreSendRequestHeaders událostí a PreSendRequestContent . jsou efektivnější a spolehlivé.

    HostingEnvironment.QueueBackgroundWorkItemMetoda umožňuje naplánovat malé pracovní položky na pozadí. ASP.NET sleduje tyto položky a brání službě IIS v náhlém ukončení pracovního procesu, dokud nebudou dokončeny všechny pracovní položky na pozadí. tuto metodu nejde volat mimo ASP.NET doménu spravované aplikace.

    Nové HttpResponse.HeadersWritten vlastnosti a HttpResponseBase.HeadersWritten vrátí logické hodnoty, které určují, zda byly napsány hlavičky odpovědi. Tyto vlastnosti můžete použít k tomu, abyste se ujistili, že volání rozhraní API HttpResponse.StatusCode (která vyvolávají výjimky při zápisu hlaviček) budou úspěšná.

  • změna velikosti v ovládacích prvcích model Windows Forms. Tato funkce se rozšířila. Nyní můžete použít nastavení systému DPI pro změnu velikosti součástí následujících dalších ovládacích prvků (například šipky rozevíracího seznamu v polích se seznamem):

    Toto je funkce výslovného souhlasu. Pokud ho chcete povolit, nastavte EnableWindowsFormsHighDpiAutoResizing element na true v souboru konfigurace aplikace (app.config):

    <appSettings>
        <add key="EnableWindowsFormsHighDpiAutoResizing" value="true" />
    </appSettings>
    
  • Nová funkce pracovního postupu. Správce prostředků, který používá EnlistPromotableSinglePhase metodu (a proto implementuje IPromotableSinglePhaseNotification rozhraní), může použít novou Transaction.PromoteAndEnlistDurable metodu k vyžádání následujícího:

    To se dá udělat v rámci stejné domény aplikace a nevyžaduje žádný dodatečný nespravovaný kód pro interakci se službou MSDTC, aby bylo možné provést povýšení. Nová metoda může být volána pouze v System.Transactions případě, že existuje nedokončené volání do IPromotableSinglePhaseNotificationPromote metody, která je implementována prostřednictvím zařazení do propagačního objektu.

  • Vylepšení profilace. Následující nová nespravovaná rozhraní API pro profilaci poskytují robustnější profilaci:

    Předchozí ICorProfiler implementace podporovaly opožděné načítání závislých sestavení. Nové rozhraní API pro profilování vyžadují závislá sestavení, která jsou vložená profilerem tak, aby se spustitelný hned, místo aby se načetla po úplné inicializaci aplikace. Tato změna neovlivní uživatele existujících ICorProfiler rozhraní API.

  • Vylepšení ladění. Následující nová nespravovaná ladicí rozhraní API poskytují lepší integraci s profilerem. Teď můžete přistupovat k metadatům vloženým profilerem a také k místním proměnným a kódu vytvořeným požadavky kompilátoru ReJIT při ladění výpisu.

  • Změny trasování událostí. .NET Framework 4.5.2 umožňuje trasování aktivit založené na procesu trasování událostí pro Windows (ETW) pro větší plochu. To umožňuje prodejcům pokročilého řízení spotřeby (APM) poskytovat odlehčené nástroje, které přesně sledují náklady na jednotlivé požadavky a aktivity, které procházejí vlákny. Tyto události jsou vyvolány pouze v případě, že je povolí řadič ETW. Proto změny neovlivní dříve psaný kód ETW nebo kód, který běží se zakázanou ETW.

  • Zvýšení úrovně transakce a její převedení na trvalý zařazení

    Transaction.PromoteAndEnlistDurableje nové rozhraní API přidané do .NET Framework 4.5.2 a 4,6:

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

    Metodu lze použít pro zařazení, které bylo dříve vytvořeno Transaction.EnlistPromotableSinglePhase v reakci na ITransactionPromoter.Promote metodu. Žádá System.Transactions o povýšení transakce na transakci MSDTC a na "převést" zařazení do trvalého zařazení. Po úspěšném IPromotableSinglePhaseNotification dokončení této metody již nebude odkazováno System.Transactions na rozhraní a veškerá budoucí oznámení budou doručena do poskytnutého ISinglePhaseNotification rozhraní. Příslušné zařazení musí působit jako trvalé zařazení, které podporuje protokolování a obnovení transakcí. Transaction.EnlistDurablePodrobnosti najdete v tématu. Zařazení navíc musí podporovat ISinglePhaseNotification . Tuto metodu lze volat pouze během zpracovávání ITransactionPromoter.Promote volání. V takovém případě TransactionException je vyvolána výjimka.

co je nového ve .NET Framework 4.5.1

Aktualizace z dubna 2014:

  • Visual Studio 2013 aktualizace 2 obsahuje aktualizace šablon přenosných knihoven tříd pro podporu těchto scénářů:

    • rozhraní prostředí Windows Runtime api můžete použít v přenosných knihovnách, které cílí na Windows 8.1, Windows Phone 8,1 a Windows Phone Silverlight 8,1.

    • Můžete zahrnout XAML (Windows. Rozhraní. typy XAML) v přenosných knihovnách, když cílíte Windows 8.1 nebo Windows Phone 8,1. Podporovány jsou následující šablony XAML: prázdná stránka, slovník prostředků, ovládací prvek s šablonou a uživatelský ovládací prvek.

    • můžete vytvořit přenosnou součást prostředí Windows Runtime (soubor. winmd) pro použití v aplikacích pro Store, které cílí na Windows 8.1 a Windows Phone 8,1.

    • můžete změnit cílení na Windows store nebo Windows Phone úložiště knihovny tříd, jako je přenosná knihovna tříd.

    Další informace o těchto změnách naleznete v tématu Přenosná knihovna tříd.

  • sada .NET Framework obsahu teď obsahuje dokumentaci pro .NET Native, což je předkompilace technologie pro sestavování a nasazování aplikací Windows. .NET Native zkompiluje vaše aplikace přímo do nativního kódu, spíše než do mezilehlého jazyka (IL), pro lepší výkon. Podrobnosti najdete v tématu kompilace aplikací pomocí .NET Native.

  • zdroj odkazů .NET Framework poskytuje nové prostředí pro procházení a vylepšené funkce. nyní můžete procházet zdrojový kód .NET Framework online, stahovat reference pro zobrazení v režimu offline a procházet zdroje (včetně oprav a aktualizací) během ladění. Další informace najdete v blogu o novém hledání zdroje odkazů .NET.

mezi nové funkce a vylepšení základních tříd v .NET Framework 4.5.1 patří:

  • Automatické přesměrování vazby pro sestavení. počínaje Visual Studio 2013 se při kompilování aplikace, která cílí na .NET Framework 4.5.1, dají přesměrování vazby přidat do konfiguračního souboru aplikace, pokud vaše aplikace nebo její součásti odkazují na více verzí stejného sestavení. Tuto funkci můžete také povolit pro projekty, které cílí na starší verze .NET Framework. Další informace najdete v tématu Postup: povolení a zákaz automatického přesměrování vazby.

  • Možnost shromažďovat diagnostické informace, které vývojářům pomůžou zlepšit výkon serverových a cloudových aplikací. Další informace naleznete v tématu WriteEventWithRelatedActivityId metody EventSource a WriteEventWithRelatedActivityIdCore třídy.

  • Schopnost explicitně komprimovat haldu velkých objektů (LOH) během uvolňování paměti. Další informace najdete v tématu GCSettings.LargeObjectHeapCompactionMode vlastnost.

  • další vylepšení výkonu, jako je například pozastavení aplikace ASP.NET, multi-core vylepšení JIT a rychlejší spuštění aplikace po aktualizaci .NET Framework. podrobnosti najdete v příspěvku na blogu .NET Framework 4.5.1 a v blogovém příspěvku o ASP.NET pozastavení aplikace .

mezi vylepšení model Windows Forms patří:

  • změna velikosti v ovládacích prvcích model Windows Forms. Pomocí nastavení rozlišení DPI systému můžete změnit velikost součástí ovládacích prvků (například ikony, které se zobrazí v mřížce vlastností), tím, že se přiřadíte k položce v konfiguračním souboru aplikace (app.config) pro vaši aplikaci. tato funkce je aktuálně podporována v následujících ovládacích prvcích model Windows Forms:

    Chcete-li povolit tuto funkci, přidejte nový < Element appSettings > do konfiguračního souboru (app.config) a nastavte EnableWindowsFormsHighDpiAutoResizing element na true :

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

vylepšení při ladění .NET Frameworkch aplikací v Visual Studio 2013 zahrnují:

  • návratové hodnoty v ladicím programu Visual Studio. při ladění spravované aplikace v Visual Studio 2013 zobrazí okno automatické hodnoty návratové typy a hodnoty pro metody. tyto informace jsou k dispozici pro stolní počítače, Windows Store a aplikace Windows Phone. Další informace naleznete v tématu Kontrola vrácených hodnot volání metody.

  • Upravit a pokračovat pro 64 aplikace Visual Studio 2013 podporuje funkci upravit a pokračovat pro 64 spravované aplikace pro stolní počítače, Windows Store a Windows Phone. Stávající omezení zůstávají v platnosti pro 32 i pro 64-bitové aplikace (viz poslední část článku podporované změny kódu (C#) ).

  • Asynchronní ladění. aby bylo snazší ladit asynchronní aplikace v Visual Studio 2013, zásobník volání skrývá kód infrastruktury poskytnutý kompilátory pro podporu asynchronního programování a také řetězení v logických nadřazených snímcích, takže můžete pořídit provádění logického programu podrobněji. Okno Úlohy nahradí okno Paralelní úlohy a zobrazí úkoly, které se týkají konkrétní zarážky, a také zobrazí všechny ostatní úlohy, které jsou aktuálně aktivní nebo naplánované v aplikaci. O této funkci si můžete přečíst v části Ladění s modifikátorem Async v .NET Framework 4.5.1.

  • Lepší podpora výjimek pro prostředí Windows Runtime komponenty. V Windows 8.1 výjimek, které vznikají z aplikace Windows Store, si zachovávají informace o chybě, která výjimku způsobila, a to i napříč hranicemi jazyka. O této funkci si můžete přečíst v části Windows Store app development (Vývoj aplikací pro Store) v .NET Framework 4.5.1.

Od Visual Studio 2013 můžete k optimalizaci aplikací pro Store Windows 8.x i desktopových aplikací použít nástroj pro optimalizaci spravovaného profilu s asilerovanou optimalizací (Mpgo.exe).

Nové funkce ve verzi ASP.NET 4.5.1 najdete v ASP.NET and Web Tools pro Visual Studio 2013 k vydání verze.

Co je nového ve .NET Framework 4.5

Základní třídy

  • Schopnost snížit počet restartování systému rozpoznáním a zavřením .NET Framework 4 aplikace během nasazování. Viz Snížení počtu restartování systému během .NET Framework 4.5.

  • Podpora polí, která jsou větší než 2 gigabajty (GB) na 64bitových platformách. Tuto funkci je možné povolit v konfiguračním souboru aplikace. Podívejte se na< element gcAllowAllowLargeObjects>, který obsahuje také další omezení velikosti objektu a velikosti pole.

  • Lepší výkon díky uvolňování paměti na pozadí pro servery. Při použití uvolňování paměti serveru ve .NET Framework 4.5 je uvolňování paměti na pozadí automaticky povoleno. Viz část Uvolňování paměti serveru na pozadí tématu Základy uvolňování paměti.

  • Kompilace JIT (Background Just-in-Time), která je volitelně dostupná na vícejádrových procesorech, aby se zlepšil výkon aplikace. Viz třída ProfileOptimization.

  • Schopnost omezit, jak dlouho se modul regulárních výrazů pokusí přeložit regulární výraz před jeho časového limitu. Podívejte se na Regex.MatchTimeout vlastnost .

  • Možnost definovat výchozí jazykovou verzi pro doménu aplikace. Viz třída CultureInfo .

  • Podpora konzoly pro kódování Unicode (UTF-16). Viz třída Console .

  • Podpora verzí kulturního řazení řetězců a srovnávacích dat Viz třída SortVersion .

  • Lepší výkon při načítání prostředků Viz Balení a nasazování prostředků.

  • Vylepšení komprese zip pro zmenšování velikosti komprimovaného souboru Viz obor System.IO.Compression názvů .

  • Možnost přizpůsobit kontext reflexe pro přepsání výchozího chování reflexe prostřednictvím CustomReflectionContext třídy .

  • Podpora standardu IDNA (Internationalized Domain Names in Applications) System.Globalization.IdnMapping verze 2008 při použití třídy v Windows 8.

  • Delegování porovnání řetězců s operačním systémem, který implementuje Unicode 6.0, pokud se .NET Framework v Windows 8. Při spouštění na jiných platformách obsahuje .NET Framework data porovnání řetězců, která implementují Unicode 5.x. Podívejte se String na třídu a část Poznámky třídy SortVersion .

  • Možnost vypočítat hashovací kódy pro řetězce na základě domény aplikace. Viz <Element UseRandomizedStringHashAlgorithm>.

  • Reflexe typu podporuje rozdělení mezi třídy TypeTypeInfo a . Viz Reflexe v .NET Framework pro Windows Store.

Managed Extensibility Framework (MEF)

Ve .NET Framework 4.5 poskytuje Managed Extensibility Framework (MEF) následující nové funkce:

  • Podpora obecných typů

  • Programovací model založený na konvencích, který umožňuje vytvářet části na základě konvencí vytváření názvů místo atributů.

  • Více oborů.

  • Podmnožina MEF, kterou můžete použít při vytváření aplikací Windows 8.x Store. Tato podmnožina je k dispozici jako balíček ke stažení z NuGet Gallery. Pokud chcete balíček nainstalovat, otevřete projekt v Visual Studio, v nabídce Project zvolte Spravovat balíčky NuGet aMicrosoft.Composition vyhledejte balíček online.

Další informace najdete v tématu Managed Extensibility Framework (MEF).

Asynchronní operace se souborem

Ve .NET Framework 4.5 byly do jazyků C# a Visual Basic přidány nové asynchronní funkce. Tyto funkce přidávají model založený na úkolech pro provádění asynchronních operací. Chcete-li použít tento nový model, použijte asynchronní metody ve třídách V/V. Viz Asynchronní V/V soubory.

nástroje

Ve verzi .NET Framework 4.5 umožňuje generátor souborů prostředků (Resgen.exe) vytvořit soubor .resw pro použití v aplikacích pro Store Windows 8.x ze souboru .resources vloženého do sestavení .NET Framework. Další informace najdete v tématu Resgen.exe (Generátor souborů prostředků).

Optimalizace na základě spravovaného profilu (Mpgo.exe) umožňuje zlepšit dobu spuštění aplikace, využití paměti (velikost pracovní sady) a propustnost optimalizací sestavení nativní bitové kopie. Nástroj příkazového řádku generuje data profilu pro sestavení aplikací nativní bitové kopie. Viz Mpgo.exe (Nástroj pro optimalizaci na základě spravovaného profilu). Od Visual Studio 2013 můžete pomocí Mpgo.exe optimalizovat aplikace Windows 8.x Store i desktopové aplikace.

Paralelní výpočty

.NET Framework 4.5 poskytuje několik nových funkcí a vylepšení paralelního computingu. Patří sem vylepšený výkon, lepší řízení, vylepšená podpora asynchronního programování, nová knihovna toků dat a vylepšená podpora paralelního ladění a analýzy výkonu. Podívejte se na položku Co je nového pro paralelismus v .NET Framework 4.5 v blogu Paralelní programování s .NET.

Web

ASP.NET 4.5 a 4.5.1 můžete přidat vazbu modelu pro Web Forms, podporu protokolu WebSocket, asynchronní obslužné rutiny, vylepšení výkonu a mnoho dalších funkcí. Další informace naleznete v následujících zdrojích:

Sítí

.NET Framework 4.5 poskytuje nové programovací rozhraní pro aplikace HTTP. Další informace najdete v nových oborech názvů System.Net.HttpSystem.Net.Http.Headers a .

Součástí je také podpora nového programovacího rozhraní pro přijetí a interakci s připojením WebSocket HttpListener pomocí existujících a souvisejících tříd. Další informace najdete v novém oboru názvů System.Net.WebSockets a třídě HttpListener .

Kromě toho .NET Framework 4.5 následující vylepšení sítě:

  • Podpora identifikátorů URI kompatibilních s RFC. Další informace najdete v tématu a Uri souvisejících třídách.

  • Podpora pro analýzu IDN (Internationalized Domain Name). Další informace najdete v tématu a Uri souvisejících třídách.

  • Podpora pro globalizaci e-mailových adres (EAI) Další informace najdete v tématu obor System.Net.Mail názvů .

  • Vylepšená podpora protokolu IPv6 Další informace najdete v tématu obor System.Net.NetworkInformation názvů .

  • Podpora soketů v duálním režimu. Další informace najdete v třídách SocketTcpListener a .

Windows Presentation Foundation (WPF)

V .NET Framework 4.5 obsahuje Windows Presentation Foundation (WPF) změny a vylepšení v následujících oblastech:

  • Nový ovládací Ribbon prvek, který umožňuje implementovat uživatelské rozhraní pásu karet, které je hostitelem panelu nástrojů Rychlý přístup, nabídky aplikace a karet.

  • Nové rozhraní INotifyDataErrorInfo , které podporuje synchronní a asynchronní ověřování dat.

  • Nové funkce pro třídy VirtualizingPanelDispatcher a .

  • Vyšší výkon při zobrazení velkých sad seskupených dat a přístupem ke kolekcím ve vláknech mimo uživatelské rozhraní

  • Datová vazba ke statickým vlastnostem, datová vazba ICustomTypeProvider na vlastní typy, které implementují rozhraní, a načtení informací o datové vazbě z vazbového výrazu.

  • Změna umístění dat při změně hodnot (živé tvarování).

  • Možnost zkontrolovat, jestli je kontext dat pro kontejner položky odpojený.

  • Možnost nastavit dobu, která by měla uplynout mezi změnami vlastností a aktualizacemi zdroje dat.

  • Vylepšená podpora pro implementaci slabých vzorů událostí Události teď také mohou přijímat rozšíření značek.

Windows Communication Foundation (WCF)

Ve .NET Framework 4.5 byly přidány následující funkce, které vám pospíší psaní a údržbu aplikací WCF (Windows Communication Foundation):

  • Zjednodušení generovaných konfiguračních souborů

  • Podpora vývoje na základě kontraktů.

  • Možnost konfigurace ASP.NET režim kompatibility snadněji.

  • Změnou výchozích hodnot vlastností přenosu snížíte pravděpodobnost, že je budete muset nastavit.

  • Aktualizace třídy pro XmlDictionaryReaderQuotas snížení pravděpodobnosti, že budete muset ručně nakonfigurovat kvóty pro čtenáře slovníku XML.

  • Ověření konfiguračních souborů WCF Visual Studio v rámci procesu sestavení, abyste před spuštěním aplikace mohli detekovat chyby konfigurace.

  • Nová podpora asynchronního streamování

  • Nové mapování protokolu HTTPS, které usnadňuje vystavení koncového bodu přes https pomocí Internetová informační služba (IIS).

  • Možnost generovat metadata v jednom dokumentu WSDL připojením ?singleWSDL k adrese URL služby.

  • Podpora protokolu WebSocket umožňující skutečně obousměrnou komunikaci přes porty 80 a 443 s charakteristikami výkonu podobnými přenosu TCP.

  • Podpora konfigurace služeb v kódu

  • Popisy editoru XML.

  • ChannelFactory ukládání do mezipaměti.

  • Podpora komprese binárního kodéru.

  • Podpora přenosu UDP, který vývojářům umožňuje psát služby, které používají "aktivovat a zapomenout" zasílání zpráv. Klient odešle zprávu do služby a neočekává od služby žádnou odpověď.

  • Schopnost podporovat více režimů ověřování v jednom koncovém bodu WCF při použití přenosu a zabezpečení přenosu HTTP.

  • Podpora služeb WCF, které používají mezinárodní názvy domén (IDN).

Další informace najdete v tématu Co je nového ve Windows Communication Foundation.

Windows Workflow Foundation (WF)

Ve verzi .NET Framework 4.5 bylo do služby Windows Workflow Foundation (WF) přidáno několik nových funkcí, mezi které patří:

  • Pracovní postupy stavového stroje, které byly poprvé zavedeny jako součást .NET Framework 4.0.1 (.NET Framework 4 Platform Update 1). Tato aktualizace zahrnovala několik nových tříd a aktivit, které vývojářům umožnily vytvářet pracovní postupy stavového počítače. Tyto třídy a aktivity byly aktualizovány .NET Framework 4.5, aby zahrnovaly:

    • Možnost nastavit zarážky u stavů.

    • Možnost kopírovat a vkládat přechody v návrháři postupu provádění.

    • Podpora návrháře pro vytvoření sdíleného přechodu triggeru

    • Aktivity pro vytváření pracovních postupů stavového stroje, včetně: StateMachineState, a Transition.

  • Vylepšené Návrhář postupu provádění, jako jsou následující:

    • Vylepšené možnosti vyhledávání pracovních postupů v Visual Studio, včetně rychlého hledání a hledání v souborech.

    • Schopnost automaticky vytvořit aktivitu Sequence při přidání druhé podřízené aktivity do aktivity kontejneru a zahrnout obě aktivity do aktivity Sequence.

    • Podpora posouvání, která umožňuje změnit viditelnou část pracovního postupu bez použití posuvníků.

    • Nové zobrazení Osnova dokumentu, které zobrazuje součásti pracovního postupu v zobrazení obrysu ve stylu stromu a umožňuje vybrat komponentu v zobrazení Osnova dokumentu.

    • Možnost přidávat poznámky k aktivitám

    • Schopnost definovat a využívat delegáty aktivit pomocí návrháře postupu provádění.

    • Automatické připojení a automatické vkládání pro aktivity a přechody v pracovních postupech stavového stroje a vývojového diagramu

  • Storage informace o stavu zobrazení pracovního postupu v jednom prvku v souboru XAML, takže můžete snadno vyhledat a upravit informace o stavu zobrazení.

  • Aktivita kontejneru NoPersistScope, která brání zachování podřízených aktivit.

  • Podpora výrazů jazyka C#:

    • Projekty pracovních postupů, které Visual Basic, budou používat Visual Basic výrazy a projekty pracovních postupů jazyka C# budou používat výrazy jazyka C#.

    • Projekty pracovních postupů jazyka C#, které byly vytvořeny v Visual Studio 2010 a které mají Visual Basic výrazy, jsou kompatibilní s projekty pracovních postupů jazyka C#, které používají výrazy jazyka C#.

  • Vylepšení verzí:

    • Nová třída WorkflowIdentity , která poskytuje mapování mezi trvalé instance pracovního postupu a její definici pracovního postupu.

    • Vedle sebe spuštění více verzí pracovního postupu ve stejném hostiteli, včetně WorkflowServiceHost.

    • V dynamické aktualizaci je možnost upravit definici trvalé instance pracovního postupu.

  • Vývoj služby pracovního postupu kontraktu, který poskytuje podporu pro automatické generování aktivit tak, aby odpovídaly existujícímu kontraktu služby.

Další informace najdete v tématu Co je nového v Windows Workflow Foundation.

Aplikace .NET pro Windows 8.x Store

Windows 8.x Store jsou navržené pro konkrétní formátové faktory a využívají výkon Windows systému. Podmnožina verzí .NET Framework 4.5 nebo 4.5.1 je k dispozici pro vytváření aplikací Windows 8.x Store pro Windows pomocí jazyka C# nebo Visual Basic. Tato podmnožina se nazývá .NET Windows 8.x Store a je probíráná v přehledu.

Přenosné knihovny tříd

Projekt Knihovny přenosných tříd v Visual Studio 2012 (a novějších verzích) umožňuje psát a sestavovat spravovaná sestavení, která fungují na více .NET Framework platformách. Pomocí projektu knihovny přenosných tříd zvolíte platformy (například aplikace Windows Phone a .NET pro aplikace Windows 8.x Store), na které chcete cílit. Dostupné typy a členy v projektu jsou automaticky omezeny na běžné typy a členy napříč těmito platformami. Další informace najdete v tématu Přenosná knihovna tříd.

Viz také