Co je nového v .NET Framework

Poznámka

.NET Framework 4,8 je poslední verze .NET Framework. .NET Framework se provádí měsíčně s opravami chyb zabezpečení a spolehlivosti. .NET Framework bude i nadále zahrnutá do Windows, aniž by se k nim odebraly žádné plány. nemusíte migrovat aplikace .NET Framework, ale pro vývoj nových aplikací použijte rozhraní .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 .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é mimo pásmo vydává funkce, které využívají NuGet, k rozšíření podpory platformy a zavedení nových funkcí, 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 out-of-band vydání. Ú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 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, jako je vyvolání , když jsou systémové kryptografické knihovny nakonfigurované SHA256Managed CryptographicException 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, už následující třídy spravované kryptografie v tomto případě CryptographicException 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 Switch.System.Security.Cryptography.UseLegacyFipsThrow na true . 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í ServiceDescription.Behaviors do 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 ?health řetězcem 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. Pří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. Příklad:

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

Na stav služby se můžete dotazovat pomocí parametrů dotazu, jako jsou , , , a pro každý parametr dotazu je možné zadat kód odpovědi OnServiceFailure OnDispatcherFailure OnListenerFailure OnThrottlePercentExceeded 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. Pří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, zadáním řetězce dotazu, jako je nebo v jazyce XML, zadáním řetězce dotazu, jako https://contoso:81/Service1?health je https://contoso:81/Service1?health&Xml . Řetězec dotazu jako https://contoso:81/Service1?health&NoContent vrátí 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 HWND a Windows Forms v aplikacích WPF s vysokým dpi na platformách, které podporují škálování Mixed-Mode DPI (počínaje aktualizací z Windows 10 dubna 2018). Když jsou hostované ovládací prvky HWND nebo Windows Forms vytvořeny jako okna škálovaná na dpi voláním SetThreadDpiHostingBehavior Mixed-Mode a 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í Per-Monitor v2 DPI také umožňuje hostování ovládacích prvků WPF (nadřazené) v nativním okně v aplikaci s vysokým rozlišením.

Pokud chcete povolit podporu Mixed-Mode vysokou velikostí DPI, můžete nastavit následující přepínače AppContext 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 ve .NET Framework 4.8 zahrnuje následující změny a vylepšení:

Vylepšení kompilátoru JIT. Kompilátor JIT (Just-in-Time) ve verzi .NET Framework 4.8 je založený na kompilátoru JIT v .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é klíče DSA nebo RSA klíče s určitou velikostí klíče. Pří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 X509Certificate2 konstruktoru nebo v 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 (). Vlastnost nefunguje X509Certificate2.PrivateKey .

  • Vzhledem k tomu X509Certificate2.PrivateKey , že vlastnost starší verze 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> HashSet<T> typům a. Tady jsou některé z nich:

ConcurrentDictionary<TKey,TValue>Třída obsahuje nová přetížení AddOrUpdate GetOrAdd metod a 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 jeho hodnota SameSiteMode.Strict nebo SameSiteMode.Lax , ASP.NET přidá SameSite atribut do hlavičky set-cookie. Podpora SameSite se vztahuje na HttpCookie objekty i na FormsAuthentication System.Web.SessionState soubory cookie a.

SameSite pro objekt můžete nastavit takto HttpCookie :

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 třídy osm vlastností System.Net.Http.HttpClientHandler . 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 .NET Framework 4.7.2 rozšiřuje 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 uživatele v rámci nativních a federovaných uživatelů Azure AD i uživatele typu Host služby Azure AD. při použití této metody se pro databáze SQL podporuje ověřování MFA, které ukládá služba Azure AD. Kromě toho proces ověřování požaduje heslo uživatele, aby dodržoval osvědčené postupy zabezpečení.

v předchozích verzích .NET Framework připojení SQL podporuje jenom SqlAuthenticationMethod.ActiveDirectoryPassword SqlAuthenticationMethod.ActiveDirectoryIntegrated možnosti a. Obě tyto součásti jsou součástí neinteraktivního protokolu ADAL, který nepodporuje vícefaktorové ověřování. 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 SqlAuthenticationMethod.ActiveDirectoryInteractive 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 enklávy. 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, SQL Server ale tento kód 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í typy a System.Data.SqlClient členy:

Konfigurační soubor aplikace pak určuje konkrétní implementaci abstraktní třídy, která poskytuje System.Data.SqlClient.SqlColumnEncryptionEnclaveProvider funkce pro zprostředkovatele enklávy. Pří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 , který byl vytvořen z daného ResourceDictionaries 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í ve spuštěné aplikaci. 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 není povoleno a VisualDiagnostics 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ě v , WPF automaticky najde všechny ResourceDictionary odkazy DynamicResource, které mohou být touto změnou ovlivněny.

Diagnostický asistent, Visual Studio upravit a pokračovat, 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ž vlastnost odkazuje na slovník (buď přímo, nebo nepřímo Resources prostřednictvím ResourceDictionary.MergedDictionaries vlastnosti ). Tento krok podporují tři nové statické metody implementované ve třídě , jednu pro každý základní typ, který System.Windows.Diagnostics.ResourceDictionaryDiagnostics Resources má vlastnost :

Tyto metody vracejí prázdné vyčíslitelné hodnoty, pokud není povoleno a VisualDiagnostics 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 ResourceDictionary změní. 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 ResourceDictionaryDiagnostics.StaticResourceResolved událostí:

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 popisují rozlišení a označují objekt a vlastnost, které hostují odkaz StaticResourceResolvedEventArgs StaticResource, a klíč a použitý ResourceDictionary 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ý objekt se ignoruje), pokud není povolena a add VisualDiagnostics není ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO nastavena proměnná prostředí.

ClickOnce

Aplikace využívající HDPI pro 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ě .NET Framework 4.7.2:

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

U Windows Forms 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 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 usnadnění přístupu 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ě, .NET Standard jsou v cílovém systému nasazené 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 funkcích 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 a ConfigurationBuilder přepište jeho ConfigurationBuilder.ProcessConfigurationSection a ConfigurationBuilder.ProcessRawXml . Tvůrce také definujete v .config souboru. Další informace najdete v části Tvůrci konfigurace v blogovém příspěvku o .NET Framework 4.7.1 ASP.NET a funkcí konfigurace.

Detekce funkcí za běhu

Třída poskytuje mechanismus pro určení, zda je v dané implementaci rozhraní .NET v době kompilace nebo spuštění podporována System.Runtime.CompilerServices.RuntimeFeature 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 RuntimeFeature.IsSupported metodu 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 a jeho přidružené obecné typy jsou označeny jako System.ValueTuple Serializable, což umožňuje binární serializace. To by mělo usnadnit migraci typů řazené kolekce členů, jako je a Tuple<T1,T2,T3> Tuple<T1,T2,T3,T4> , na typy řazené kolekce členů. Další informace najdete v blogovém příspěvku o kompilátoru – valueTuple is Serializable .NET Framework 4.7.1 Runtime and Compiler Features.

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). V .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, ke kterým dochází 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 4.7 a starších verzích Message.HashAlgorithm podporovala vlastnost pouze hodnoty HashAlgorithm.Md5 a HashAlgorithm.Sha . Počínaje .NET Framework verze 4.7.1, HashAlgorithm.Sha256 , a se podporují také HashAlgorithm.Sha384 HashAlgorithm.Sha512 . To, jestli se tato hodnota skutečně použije, závisí na MSMQ, protože samotná instance neprochází žádnou hodnotou hash, ale jednoduše předává hodnoty do Message MSMQ. Další informace najdete v blogovém příspěvku o podpoře SHA-2 pro Message.HashAlgorithm v blogovém příspěvku o funkcích .NET Framework 4.7.1 ASP.NET a 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 umožňuje metoda také modulům HttpApplication.OnExecuteRequestStep(Action<HttpContextBase,Action>) 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 příspěvku ASP.NET 4.7.1 ASP.NET a funkce konfigurace funkce spuštění v .NET Framework 4.7.1.

ASP.NET analýzy HttpCookie

.NET Framework 4.7.1 obsahuje novou metodu , která poskytuje standardizovaný způsob, jak vytvořit objekt z řetězce a přesně přiřadit hodnoty souborů cookie, jako je datum vypršení platnosti HttpCookie.TryParse HttpCookie a cesta. Další informace najdete v blogovém příspěvku ASP.NET httpcookie parsing v .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 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. Pří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 byly metody přidány do tříd a , aby objekt reprezentoval již ImportParameters(ECParameters) ECDsa zavedený ECDiffieHellman klíč. Byla ExportParameters(Boolean) také přidána metoda pro export klíče pomocí explicitních parametrů křivky.

.NET Framework verze 4.7 také přidává podporu dalších křivek (včetně sady křivek Brainpool) a přidal předdefinované definice pro snadné vytváření prostřednictvím nových a výrobních Create Create 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 třída serializuje řídicí znaky v souladu DataContractJsonSerializer 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ý komponentami a up-stack, jako jsou HTTP, FTP a SMTP, umožňuje vývojářům používat výchozí protokoly TLS podporované System.Net.Security.SslStream 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 verze 4.7 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 aplikace.

  • Monitorování paměti. Výchozí monitorování paměti v 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é volání v případě, že se privátní limit procesu GC.Collect byte přichytá. U některých aplikací je frekvence volání nebo velikost oříznuté mezipaměti GC.Collect 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 Windows Forms zlepšuje podporu pro monitory s vysokým rozlišením DPI.

Podpora vysokého rozlišení DPI

Počínaje aplikacemi, které cílí na .NET Framework 4,7, .NET Framework funkce vysoké dpi a dynamické podpory DPI pro Windows Forms. 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.Forms.ConfigurationSection> oddílu v konfiguračním souboru aplikace. Další informace o přidání podpory vysokého rozlišení DPI a dynamické podpory DPI do aplikace Windows Forms najdete v tématu Podpora vysokého dpi v 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í API WPF ve třídě místo zastaralého rozhraní API pro tisk XPS Windows rozhraní API tiskových balíčků System.Printing.PrintQueue 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 ValidationAttribute.ErrorMessage definuje text chybové zprávy, pokud se ověření nezdaří. Počínaje .NET Framework 4.6.2 ASP.NET usnadňuje lokalizaci chybových zpráv. Chybové zprávy budou lokalizovány, pokud:

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

  2. Soubor prostředků je uložený v App_LocalResources složce.

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

  4. Název klíče prostředku je řetězec přiřazený k atributu a ValidationAttribute.ErrorMessage 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 App.LocalResources složce . Například následující kód obsahuje klíč a jeho hodnotu v lokalizované chybové zprávě jazyka Francouzština (fr):

Název 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 řetězců implementací rozhraní pro uložení řetězce lokalizace někam jinam IStringLocalizerProvider 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 se zprostředkovateli ú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é dědí z a umožňuje vývojářům implementovat vlastní modul stavu relace a poskytovatele úložiště System.Web.SessionState.ISessionStateModule IHttpModule 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 dvě nové metody, a , které lze SessionStateUtility IsSessionStateReadOnly použít k podpoře IsSessionStateRequired 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ů třídou a na typy a metody, které na ní CharUnicodeInfo spoléhají. Patří mezi ně třída, přetížená metoda a třídy znaků rozpoznané .NET Framework StringInfo Char.GetUnicodeCategory 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 rodiny SHA-2 (SHA256, SHA384 a SHA512). Podpora FIPS 186-3 je poskytována novou System.Security.Cryptography.DSACng třídou.

V souladu s nedávnými změnami třídy v .NET Framework 4.6 a třídy v .NET Framework 4.6.1 obsahuje abstraktní základní třída v RSA ECDsa .NET Framework 4.6.2 další metody, které volajícím umožňují používat tuto funkci bez DSA přetypování. Metodu rozšíření můžete DSACertificateExtensions.GetDSAPrivateKey volat 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í DSACertificateExtensions.GetDSAPublicKey metodu 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í ECDiffieHellmanCng objektu . 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 byly do základní třídy přidány následující tři metody, které jasněji reprezentují tyto rutiny KDF a ECDiffieHellman 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 ( ) a AesCng 3DES ( TripleDESCng ). Pří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 přidává do třídy podporu pro podpisové metody SignedXml 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é 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, registrace SignatureDescription CryptoConfig už není CryptoConfig nutná.

Sqlclient

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

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

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 v případě selhání připojení k Azure SQL Databases.

Přidáním nového klíčového PoolBlockingPeriod slova 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 za azure SQL Databases:

  • .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 vlastnost nastavená na (což je výchozí hodnota), pokud je stejný dotaz volán vícekrát, klient načte metadata parametrů ze SqlConnection.ColumnEncryptionQueryMetadataCacheEnabled true 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 jsme Windows Communication Foundation 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 souboru <runtime> 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 podporuje více pravidel DataContractJsonSerializer ú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, objekt používá typ místo typu DataContractJsonSerializer TimeZoneInfo k TimeZone 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 struktury a TimeZoneInfo č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í aplikace nastavené na (výchozí nastavení), klienti, kteří používají , se mohou pokusit připojit ke službě naslouchající na identifikátoru URI, který je podřetězec false NetNamedPipeBinding požadovaného identifikátoru URI.

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

Poznámka

Klienti, kteří používají služby hledání na základě základní adresy služby (pokud existuje) místo úplné NetNamedPipeBinding 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 k seskupení dat, teď CollectionView 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 a popisují, jak seřadit kolekci skupin GroupDescription.SortDescriptions GroupDescription.CustomSort vytvořených GroupDescription objektem . To je obdobou způsobu, jakým identicky pojmenované vlastnosti ListCollectionView popisují, jak seřadit datové položky.

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

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 aplikaci WPF povolit, abyste měli přehled o dpi pro každý monitor, najdete v ukázkách a příručce pro vývojáře na webu GitHub.

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 .NET Framework 4.6.2 můžete zakázat změny DPI podle monitoru v aplikacích WPF přidáním konfiguračního příkazu do oddílu konfiguračního souboru aplikace <runtime> následujícím způsobem:

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

Windows Workflow Foundation (WF)

V .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í Seznam chyb pracovních postupů. .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 provést následující změnu v app.config souboru:

<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 pro pracovní postup, který byl uložen po volání , vést k DynamicUpdateServices.PrepareForUpdate následujícím problémům:

  • Aplikace Návrhář postupu provádění nemůže správně načíst soubor XAML (pokud je na ViewStateData.Id 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 jsme aktualizovali tak, aby kromě protokolu 1.0, který už podporuje, podporoval i protokoly TLS 1.1 a TLS 1.2. 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 Windows Forms a WPF na aplikace pro UPW

Windows teď nabízí možnosti, jak přenést stávající desktopové Windows aplikace, včetně aplikací WPF a Windows Forms, na Univerzální platformu Windows Platform (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 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 NullReferenceException 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 pro certifikáty x509 obsahující ECDSA

.NET Framework 4,6 přidal podporu algoritmem rsacng pro certifikáty X509. .NET Framework 4.6.1 přidává podporu pro ECDSA (s eliptickou křivkou digitálního podpisu Algorithm) certifikátů X509.

ECDSA nabízí lepší výkon a jedná se o bezpečnější algoritmus šifrování než RSA. poskytuje skvělou volbu toho, kde je výkon a škálovatelnost protokolu TLS (Transport Layer Security) obavy. implementace .NET Framework zabalí volání do existující funkce Windows.

následující příklad kódu ukazuje, jak snadné je generovat signaturu pro datový proud bajtů pomocí nové podpory pro certifikáty ECDSA X509 zahrnuté v .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í označený rozdíl na kód potřebný k vygenerování podpisu v .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 ADO.NET byly přidány následující:

Always Encrypted podpora pro klíče chráněné hardwarem

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

Aby mohli uživatelé získat přístup k Always Encrypted chráněným pomocí hlavních klíčů, které jsou uložené v modulu hardwarového zabezpečení (HSM), musí si do aplikačních serverů nebo klientských počítačů nainstalovat poskytovatele kryptografických služeb na základě dodavatele modulu hardwarového zabezpečení (HSM).

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

SqlClient nyní automaticky poskytuje rychlejší připojení ke skupině dostupnosti AlwaysOn (AG). Transparentně detekuje, jestli se vaše aplikace připojuje ke skupině dostupnosti AlwaysOn (AG) v jiné podsíti, a rychle zjistí aktuální aktivní server a poskytuje připojení k serveru. Před touto verzí musela aplikace nastavit připojovací řetězec tak, aby obsahovala "MultisubnetFailover=true" , aby označovala, že se připojil ke skupině dostupnosti AlwaysOn. Bez nastavení klíčového slova Connection na true se může u aplikace při připojování ke skupině dostupnosti AlwaysOn vyskytnout časový limit. V této verzi nemusí aplikace nastavovat MultiSubnetFailover true již. Další informace o podpoře SqlClient pro skupiny dostupnosti Always On najdete v článku Podpora SqlClient pro vysokou dostupnost a zotavení po havárii.

Windows Presentation Foundation (WPF)

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

Vylepšený výkon

zpoždění při vyvolávání událostí dotyku bylo opraveno v .NET Framework 4.6.1. Kromě toho psaní v RichTextBox ovládacím prvku již během rychlého vstupu nespojuje vlákno vykreslování.

Vylepšení kontroly pravopisu

kontrola pravopisu v subsystému WPF byla aktualizována na Windows 8.1 a novějších verzích, aby bylo možné využívat operační systém pro kontrolu pravopisu dalších jazyků. v Windows verzích před Windows 8.1 se nezměnila funkčnost.

stejně jako v předchozích verzích .NET Framework se TextBox detekuje jazyk ovládacího prvku nebo bloku tím, že si RichTextBox vyhledá informace 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ů v subsystému wpf najdete v blogovém příspěvku wpf o funkcích .NET Framework 4.6.1.

Další podpora pro vlastní slovníky pro jednotlivé uživatele

v .NET Framework 4.6.1 rozpozná WPF vlastní slovníky, které jsou zaregistrované globálně. Tato funkce je kromě možnosti registrace pro jednotlivé ovládací prvky k dispozici.

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

  • Soubory by měly mít přípony. dic (pro přidaná slova),. EXC (vyloučená slova) nebo. ACL (pro automatické opravy).

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

  • Každý řádek by měl obsahovat slovo (v seznamech přidaných a vyloučených slov) nebo dvojici automatických slov oddělených svislým pruhem ("|") (v seznamu slov pro automatické opravy).

  • Tyto soubory jsou považovány za jen pro čtení a systém je nemění.

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

k dispozici je několik ukázek WPF v úložišti Microsoft/WPF-samples GitHub. nám pomůžou vylepšit naše ukázky odesláním žádosti o přijetí změn nebo otevřením GitHub problému.

Rozšíření DirectX

WPF obsahuje balíček NuGet , který poskytuje nové implementace D3DImage , které usnadňují spolupráci s DX10 a Dx11 obsahem. Kód pro tento balíček je otevřený source a je k dispozici na GitHub.

programovací model Windows Workflow Foundation: transakcí

Transaction.EnlistPromotableSinglePhaseMetoda teď může použít jiný správce distribuovaných transakcí než MSDTC k povýšení transakce. To provedete tak, že zadáte identifikátor ID zvýšení transakce GUID k novému Transaction.EnlistPromotableSinglePhase(IPromotableSinglePhaseNotification, Guid) přetížení. Pokud je tato operace úspěšná, existují omezení na možnosti transakce. Jakmile je povýšen na transakci bez služby MSDTC, následující metody vyvolávají výjimku, TransactionPromotionException protože tyto metody vyžadují povýšení na MSDTC:

Jakmile je vyřazení transakce bez služby MSDTC, je nutné ji použít pro budoucí trvalé zařazení pomocí protokolů, které definuje. Na Guid zvýšení transakce lze získat pomocí PromoterType Vlastnosti. V případě, že transakce propaguje, poskytne vykonavatel transakce Byte pole, které představuje povýšený token. Aplikace může získat povýšený token pro transakci, která není povýšena MSDTC, s GetPromotedToken metodou.

Aby Transaction.EnlistPromotableSinglePhase(IPromotableSinglePhaseNotification, Guid) bylo možné operaci povýšení úspěšně dokončit, musí se uživatelé nového přetížení řídit konkrétní sekvencí volání. Tato pravidla jsou popsána v dokumentaci metody.

Profilace

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

  • Lepší podpora pro přístup k soubory PDB v rozhraní ICorProfilerInfo7 .

    v ASP.NET Core se sestavení stane mnohem častější, aby sestavení bylo zkompilováno v paměti pomocí Roslyn. Pro vývojáře, kteří vytvářejí nástroje pro profilaci, to znamená, že soubory PDB, který historicky byly serializovány na disk, již nemusí být k dispozici. Nástroje profileru často používají soubory PDB k mapování kódu zpět na zdrojové řádky pro úlohy, jako je pokrytí kódu nebo analýza výkonu po jednotlivých řádcích. Rozhraní ICorProfilerInfo7 nyní obsahuje dvě nové metody, ICorProfilerInfo7:: GetInMemorySymbolsLength a ICorProfilerInfo7:: ReadInMemorySymbolsk poskytnutí těchto nástrojů profileru s přístupem k datům PDB v paměti pomocí nových rozhraní API může Profiler získat obsah souboru PDB v paměti jako bajtové pole a pak ho zpracovat nebo serializovat na disk.

  • Lepší instrumentaci pomocí rozhraní ICorProfiler.

    Profilery, které používají ICorProfiler funkci ReJIT rozhraní API pro dynamickou instrumentaci, teď můžou upravovat některá metadata. Dříve takové nástroje mohly instrumentaci IL kdykoli instrumentovat, ale metadata se dají upravovat jenom v době načtení modulu. Vzhledem k tomu, že IL odkazuje na metadata, omezíme tak druhy instrumentace, které by bylo možné provést. Některé z těchto omezení jsme převedli přidáním metody ICorProfilerInfo7:: ApplyMetaData pro podporu podmnožiny úprav metadat po načtení modulu, zejména přidáním nových AssemblyRef záznamů,,,, a TypeRef TypeSpec MemberRef MemberSpec UserString . Tato změna přináší mnohem širší množství možností instrumentace.

Generátor nativních bitových kopií (NGEN) soubory PDB

trasování událostí mezi počítači umožňuje zákazníkům profilovat program na počítači a a prohlédnout si data profilace pomocí mapování zdrojového řádku na počítači B. pomocí předchozích verzí .NET Framework by uživatel zkopíroval všechny moduly a nativní bitové kopie z profilované počítače do analytického počítače, který obsahuje soubor. PDB, aby vytvořil mapování zdrojové na nativní. I když tento proces může fungovat i v případě, že jsou soubory relativně malé, například pro telefonní aplikace, můžou být soubory velmi velké na stolních počítačích a vyžadovat delší dobu kopírování.

V případě Ngen soubory PDB může NGen vytvořit PDB, který obsahuje mapování IL-to-Native bez závislosti na souboru PDB IL. V našem scénáři trasování událostí mezi počítači je potřeba ke zkopírování nativní bitové kopie image generované počítačem A na počítač B a k použití rozhraní API pro přístup k rozhraní ladění , aby se načetlo mapování typu source-to-Il z nativního souboru PDB na nativní. Kombinování obou mapování poskytuje mapování zdrojové na nativní. Vzhledem k tomu, že je soubor PDB nativní image mnohem menší než všechny moduly a nativní bitové kopie, proces kopírování z počítače A na počítač B je mnohem rychlejší.

Co je nového v .NET 2015

.net 2015 zavádí .NET Framework 4,6 a .net Core. některé nové funkce platí i pro i další funkce jsou specifické pro .NET Framework 4,6 nebo .net Core.

  • ASP.NET Core

    .net 2015 zahrnuje ASP.NET Core, což je implementace štíhlé aplikace .net pro vytváření moderních cloudových aplikací. ASP.NET Core je modulární, takže můžete zahrnout jenom ty funkce, které jsou potřeba ve vaší aplikaci. dá se hostovat ve službě IIS nebo v místním prostředí ve vlastním procesu a můžete spouštět aplikace s různými verzemi .NET Framework na stejném serveru. Obsahuje nový systém konfigurace prostředí, který je určený pro nasazení v cloudu.

    MVC, webové rozhraní API a webové stránky jsou sjednocené do jediného rozhraní s názvem MVC 6. ASP.NET Core aplikace můžete vytvářet prostřednictvím nástrojů v Visual Studio 2015 nebo novějším. vaše existující aplikace budou fungovat na novém .NET Framework, ale pokud chcete sestavit aplikaci, která používá MVC 6 nebo signal 3, musíte použít systém projektu v Visual Studio 2015 nebo novějším.

    Informace najdete v tématu ASP.NET Core.

  • aktualizace ASP.NET

    • Rozhraní API založené na úlohách pro vyprazdňování asynchronních odpovědí

      ASP.NET nyní poskytuje jednoduché rozhraní API založené na úlohách pro vyprazdňování asynchronních odpovědí, HttpResponse.FlushAsync což umožňuje, aby odpovědi byly asynchronně vyprázdněny pomocí podpory vašeho jazyka async/await .

    • Vazba modelu podporuje metody vracející úlohy

      v .NET Framework 4,5 ASP.NET přidali funkci vazby modelu, která povolila rozšiřitelný přístup k datům na základě kódu na operace CRUD na stránkách Web Forms a uživatelských ovládacích prvcích. Systém vazby modelu teď podporuje Task – vrací metody vazby modelu. tato funkce umožňuje vývojářům Web Forms získat výhody, které jsou při použití novější verze systému ORMs, a to v případě, že jsou k výhodám, včetně Entity Framework.

      Vazba asynchronního modelu je řízena aspnet:EnableAsyncModelBinding nastavením konfigurace.

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

      u aplikací, které cílí na .NET Framework 4,6, se nastaví jako výchozí true . v aplikacích běžících na .NET Framework 4,6, které cílí na starší verzi .NET Framework, je false ve výchozím nastavení. Dá se 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ě zpátečních cest mezi klientem a serverem). Výsledkem je načítání webových stránek s nižší latencí pro uživatele. Webové stránky (na rozdíl od služeb) využívají maximum HTTP/2, protože protokol je optimalizován pro více artefaktů, které jsou požadovány v rámci jednoho prostředí. do ASP.NET v .NET Framework 4,6 byla přidána podpora protokolu HTTP/2. vzhledem k tomu, že síťové funkce existují na více vrstvách, byly v Windows, ve službě IIS a v ASP.NET k povolení protokolu HTTP/2 požadovány nové funkce. abyste mohli používat protokol HTTP/2 s ASP.NET, musíte běžet na Windows 10.

      HTTP/2 se podporuje i ve výchozím nastavení pro aplikace Windows 10 Univerzální platforma Windows (UWP), které používají System.Net.Http.HttpClient rozhraní API.

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

      Poznámka

      i když ASP.NET Core podporuje HTTP/2, podpora funkce PUSH promise ještě není přidaná.

      v prohlížeči a webovém serveru (služba IIS on Windows) provede veškerou práci. Nemusíte pro uživatele dělat těžkou zdvihání.

      Většina hlavních prohlížečů podporuje HTTP/2, takže pokud je server podporuje, bude vám vaše uživatelé moci podporu HTTP/2 využít.

    • Podpora pro protokol vazby tokenů

      Microsoft a Google spolupracuje na novém přístupu k ověřování, který se nazývá protokol vazby tokenů. Místní je, že ověřovací tokeny (v mezipaměti prohlížeče) můžou být odcizené a používané podvodníky pro přístup k jiným zabezpečeným prostředkům (třeba k bankovnímu účtu) bez vyžadování hesla nebo jakýchkoli dalších privilegovaných znalostí. Nový protokol se zaměřuje na zmírnění tohoto problému.

      protokol vazby tokenu bude implementován v Windows 10 jako funkce prohlížeče. aplikace ASP.NET se budou podílet na protokolu, aby ověřovací tokeny byly ověřené jako legitimní. Implementace klienta a serveru vytvoří kompletní ochranu určenou protokolem.

    • Algoritmy hash s náhodným řetězcem

      .NET Framework 4,5 představil algoritmus hash s náhodným řetězcem. není však podporováno nástrojem ASP.NET, protože některé ASP.NET funkce závisejí na stabilním kódu hash. v .NET Framework 4,6 jsou nyní podporovány algoritmy hash s náhodným řetězcem. Pokud chcete tuto funkci povolit, použijte aspnet:UseRandomizedStringHashAlgorithm nastavení konfigurace.

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

    rozhraní ADO .net teď podporuje funkci Always Encrypted dostupnou v SQL Server 2016. pomocí Always Encrypted může SQL Server provádět operace s šifrovanými daty a nejlepší ze všech šifrovacích klíčů se nachází v rámci důvěryhodného prostředí zákazníka, nikoli na serveru. Always Encrypted zabezpečuje zákaznická data, takže specializující nemají přístup k datům ve formátu prostého textu. Šifrování a dešifrování dat probíhá transparentně na úrovni ovladače a minimalizuje změny, které je třeba provést u existujících aplikací. Podrobnosti najdete v tématu Always Encrypted (databázový stroj) a Always Encrypted (vývoj klientů).

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

    .NET Framework 4,6 obsahuje novou verzi 64 kompilátoru JIT (původně kódu s názvem RyuJIT). Nový 64 kompilátor poskytuje významné zlepšení výkonu oproti staršímu 64 kompilátoru JIT. nový 64 kompilátor je povolen pro 64 procesy spuštěné nad .NET Framework 4,6. Vaše aplikace bude spuštěna v 64m procesu, pokud je kompilována jako 64-bit nebo AnyCPU a je spuštěna v operačním systému 64. I když jste se ujistili, že přechod na nový kompilátor je co možná transparentní, jsou možné změny v chování.

    Nový 64 kompilátor JIT zahrnuje také funkce akcelerace hardwarového SIMDu v případě, že se v oboru názvů společně s typy SIMD podporují System.Numerics , což může přinést dobré zlepšení výkonu.

  • Vylepšení zavaděče sestavení

    Zavaděč sestavení nyní používá paměť efektivněji uvolněním sestavení IL po načtení odpovídající image NGEN. tato změna snižuje virtuální paměť, což je zvláště užitečné pro velké 32ové aplikace (například Visual Studio), a také šetří fyzickou paměť.

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

    k .NET Framework 4,6 bylo přidáno mnoho nových rozhraní api, které umožňuje použití klíčových scénářů. Mezi ně patří tyto změny a dodatky:

    • <T>Implementace IReadOnlyCollection

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

    • CultureInfo. CurrentCulture a CultureInfo. CurrentUICulture

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

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

      GCTřída teď obsahuje TryStartNoGCRegion metody a EndNoGCRegion , 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 je halda malých objektů i halda pro velké objekty Swept a komprimována nebo Swept pouze.

    • Typy s povoleným SIMD

      System.NumericsObor názvů teď obsahuje několik typů s povoleným SIMD, jako Matrix3x2 jsou, Matrix4x4 ,, Plane Quaternion , Vector2 , Vector3 a Vector4 .

      Vzhledem k tomu, že nový 64 kompilátor JIT zahrnuje také funkce akcelerace hardwarového SIMD, existují obzvláště významná zlepšení výkonu při použití typů SIMD s novým 64 kompilátorem JIT.

    • Aktualizace kryptografie

      System.Security.Cryptographyrozhraní api se aktualizuje tak, aby podporovalo rozhraní api kryptografie Windows CNG. předchozí verze .NET Framework se spoléhaly výhradně na starší verzi rozhraní api pro Windows kryptografie jako základ pro System.Security.Cryptography implementaci. Měli jsme požadavky na podporu rozhraní API CNG, 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 kryptografických rozhraní api Windows CNG:

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

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

      • Vylepšení rozhraní RSA API tak, aby běžné akce již nevyžadovaly přetypování. Například šifrování dat pomocí X509Certificate2 objektu vyžaduje kód podobný následujícímu 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á rozhraní api kryptografie v .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ů do nebo z času v systému UNIX

      Do struktury byly přidány následující nové metody DateTimeOffset , které podporují převod hodnot data a času na čas systému UNIX nebo z něj:

    • Přepínače kompatibility

      AppContextTřída přidává novou funkci kompatibility, která umožňuje zapisovačům knihoven poskytnout jednotný mechanismus pro odhlášení pro nové funkce pro své uživatele. Zřizuje volně spojený kontrakt mezi komponentami, aby bylo možné sdělit požadavek na výslovný souhlas. Tato možnost je obvykle důležitá, když dojde ke změně existující funkce. Naopak pro nové funkce už existuje implicitní výslovný souhlas.

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

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

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

      Knihovna musí ověřit, zda příjemce deklaroval hodnotu přepínače a následně na něj musí reagovat.

      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
      

      Je výhodné použít pro přepínače konzistentní formát, protože se jedná o formální kontrakt, který je zpřístupněný knihovnou. Níže jsou uvedené dva zjevné formáty.

      • Přepínač. obor názvů. přepínač

      • Přepínač. Knihovna. přepínač

    • 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 objekty dědí jazykovou verzi Task<TResult> 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 "jazyková verze a asynchronní operace založené na úlohách" v CultureInfo 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 je například async 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 důvodu AsyncLocal<T>.Value explicitního Změna vlastnosti, nebo protože vlákno zaznamenalo kontextový přechod.

      Task.CompletedTask Task.FromCanceled Task.FromException Do asynchronního vzoru založeného na úlohách (klepnutím) byly přidány tři praktické metody,, a, 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í.

      Třídu teď můžete použít k protokolování administrativních nebo provozních zpráv do protokolu událostí kromě všech existujících relací Trasování událostí pro Windows EventSource vytvořených na počítači. V minulosti jste pro tuto funkci museli použít NuGet Microsoft.Diagnostics.Tracing.EventSource. Tato funkce je teď integrovaná ve .NET Framework 4.6.

      Balíček NuGet i .NET Framework 4.6 byly aktualizovány o následující funkce:

      • Dynamické události

        Umožňuje události definované "za běhu" bez vytváření metod událostí.

      • Bohaté datové části

        Umožňuje, aby se speciálně atributované třídy a pole a primitivní typy předaly jako datová část.

      • Sledování aktivit

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

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

  • Windows Presentation Foundation (WPF)

    • Vylepšení HDPI

      Podpora HDPI ve WPF je teď lepší ve .NET Framework 4.6. Byly provedeny změny zaokrouhlení rozložení, aby se snížil počet instancí oříznutí v ovládacích prvcích s ohraničením. Ve výchozím nastavení je tato funkce povolená jenom v případě, že je TargetFrameworkAttribute nastavená .NET Framework 4.6. Aplikace, které cílí na starší verze architektury, ale běží na verzi .NET Framework 4.6, se mohou přihlásit k novému chování přidáním následujícího řádku do části souboru <runtime> app.config:

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

      Okna WPF, která přikážou více monitorů s různým nastavením DPI (nastavení s více dpi), se teď zcela vykreslují bez začerněných oblastí. Toto chování můžete odhlásit přidáním následujícího řádku do části souboru app.config zakázat <appSettings> toto nové chování:

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

      Do systému byla přidána podpora automatically loading the right cursor based on DPI setting (Automatické načítání pravého kurzoru na základě nastavení System.Windows.Input.Cursor DPI).

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

      Zákazníci hlásí, Připojení že dotykové ovládání vytváří nepředvídatelné chování, bylo vyřešeno ve .NET Framework 4.6. Prahová hodnota dvojitého klepnutí pro aplikace Windows Store a aplikace WPF je teď stejná v Windows 8.1 a vyšších úrovních.

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

      WPF v .NET Framework 4.6 podporuje transparentní podřízených oken v Windows 8.1 a vyšší. V oknech nejvyšší úrovně tak můžete vytvořit ne obdé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

      WCF teď kromě SSL 3.0 a TLS 1.0 podporuje protokol TLS 1.1 a TLS 1.2 i při použití NetTcp se 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é protokoly s nižším zabezpečením. Můžete to provést nastavením vlastnosti nebo přidáním následujícího do SslProtocols 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>
      
    • Odesí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ílané pomocí různých podkladových připojení HTTP. Toto lze provést dvěma způsoby:

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

        Uživatelé mohou zadat řetězec, který WCF použije jako předponu názvu skupiny připojení. Dvě zprávy s různými předponami se odesílat pomocí různých podkladových připojení HTTP. Předponu nastavíte přidáním páru klíč-hodnota do vlastnosti Message.Properties zprávy. Klíč je HttpTransportConnectionGroupNamePrefix. hodnota je požadovaná předpona.

      • Použití různých továren kanálů

        Uživatelé mohou také povolit funkci, která zajišťuje, že zprávy odeslané pomocí kanálů vytvořených různými objekty pro vytváření kanálů budou používat různá základní připojení HTTP. Aby bylo možné tuto funkci povolit, musí uživatelé nastavit následující appSetting true nastavení:

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

    Teď můžete zadat počet sekund, po který bude služba pracovního postupu uchovat požadavek na operaci mimo pořadí, pokud existuje nevyřízená záložka "bez protokolu" před časovým limitem požadavku. Záložka "bez protokolu" je záložka, která nesouvisí s nevyřízenou aktivitou příjmu. Některé aktivity v rámci své implementace vytvářejí záložky, které nejsou protokolem, takže nemusí být zřejmé, že existuje záložka bez protokolu. Patří mezi ně State (Stát) a Pick (Vybrat). Takže pokud máte službu pracovního postupu implementované se stavovým strojem nebo obsahující aktivitu Pick, budete pravděpodobně mít záložky bez protokolu. Interval určíte přidáním řádku do oddílu vašeho souboru app.config appSettings takto:

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

    Výchozí hodnota je 60 sekund. Pokud je nastavená na 0, požadavky mimo pořadí se okamžitě zamítnou s chybou value s textem, který vypadá takhle:

    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 obdržíte, když je přijata zpráva o operaci mimo pořadí a neexistují žádné záložky, které nejsou protokolem.

    Pokud je hodnota prvku nenulová, jsou záložky bez protokolu a vyprší časový limit, operace selže se zprávou FilterResumeTimeoutInSeconds o vypršení časového limitu.

  • Transakce

    Nyní můžete zahrnout identifikátor distribuované transakce pro transakci, která způsobila výjimku odvozenou TransactionException z má být vyvolána. To můžete provést přidáním následujícího klíče do oddílu appSettings vašeho app.config souboru:

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

    Výchozí hodnota je false.

  • Sítě

    • Opakované použití soketů

      Windows 10 obsahuje nový síťový algoritmus s vysokou škálovatelností, který umožňuje lepší využití prostředků počítače tím, že pro odchozí připojení TCP znovu používá místní porty. .NET Framework 4.6 podporuje nový algoritmus, který aplikacím .NET umožňuje využívat nové chování. V předchozích verzích Windows došlo k umělému limitu souběžného připojení (obvykle 16 384, výchozí velikost dynamického rozsahu portů), což by mohlo omezit škálovatelnost služby tím, že by při zatížení způsobilo vyčerpání portů.

      V .NET Framework 4.6 byla přidána dvě rozhraní API, která umožňují opakované použití portů, což ve podstatě eliminuje limit 64 kB pro souběžná připojení:

      Ve výchozím nastavení je vlastnost nastavená na , pokud není hodnota klíče registru ServicePointManager.ReusePort false HWRPortReuseOnSocketBind HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 nastavená 0x1. Pokud chcete povolit opakované použití místních portů u připojení HTTP, nastavte ServicePointManager.ReusePort vlastnost na true . To způsobí, že všechna odchozí připojení přes soket TCP z a používají novou Windows 10 soketu , SO_REUSE_UNICASTPORT , která umožňuje HttpClient HttpWebRequest opakované použití místních portů.

      Vývojáři, kteří píšou aplikaci pouze se sokety, mohou při volání metody určit možnost , aby odchozí sokety opakovaně při vytváření vazby opakovaně System.Net.Sockets.SocketOptionName Socket.SetSocketOption používejte místní porty.

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

      Do třídy byla přidána nová vlastnost , která lépe podporuje mezinárodní názvy domén a IdnHost Uri punycode.

  • Změna velikosti v Windows Forms.

    Tato funkce byla rozšířena ve .NET Framework 4.6 DomainUpDown NumericUpDown DataGridViewComboBoxColumn tak, aby DataGridViewColumn ToolStripSplitButton Bounds zahrnovala typy , , a a obdélník UITypeEditor určený vlastností použitou při kreslení .

    Jedná se o funkci výslovného souhlasu. Pokud ho chcete povolit, nastavte element na v EnableWindowsFormsHighDpiAutoResizing true konfiguračním souboru aplikace (app.config):

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

    .NET Core primárně podporuje kódování Unicode a ve výchozím nastavení poskytuje omezenou podporu kódování znakových stránek. Můžete přidat podporu kódování znakové stránky dostupné 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 pro Univerzální platformu Windows platformy (UPW) napsané v jazyce C# nebo Visual Basic mohou využívat novou technologii, která kompiluje aplikace do nativního kódu, nikoli do IL. Tato technologie vytváří aplikace, které mají rychlejší spouštění a spouštění. Další informace najdete v tématu Kompilace aplikací pomocí .NET Native. Přehled funkcí, .NET Native se liší od kompilace JIT a NGEN a co to znamená pro váš kód, najdete v .NET Native a Kompilace.

Vaše aplikace se ve výchozím nastavení kompilují do nativního kódu, když je zkompilujte pomocí Visual Studio 2015 nebo novější. Další informace najdete v tématu Začínáme s .NET Native.

Pro podporu ladění .NET Native aplikací byla do nespravovaného rozhraní API ladění přidána řada nových rozhraní a výčtů. Další informace najdete v tématu Ladění (referenční dokumentace nespravovaného rozhraní API).

  • Open source .NET Framework balíčky

    Balíčky .NET Core, jako jsou neměnné kolekce, rozhraní SIMD APIa síťová rozhraní API, jako jsou například balíčky v oboru názvů , jsou teď dostupné jako open source balíčky na System.Net.Http GitHub. Pokud chcete získat přístup ke kódu, podívejte se na .NET na GitHub. Další informace a informace o tom, jak přispívat k těmto balíčkům, najdete v tématu Úvod do .NET, domovská stránka .NET na GitHub.

Co je nového ve .NET Framework 4.5.2

  • Nová rozhraní API pro ASP.NET aplikace Nové metody a umožňují kontrolovat a upravovat hlavičky odpovědi a stavový kód při vyprázdnění odpovědi HttpResponse.AddOnSendingHeaders HttpResponseBase.AddOnSendingHeaders do klientské aplikace. Zvažte použití těchto metod místo událostí a . Jsou efektivnější a PreSendRequestHeaders PreSendRequestContent spolehlivější.

    Metoda HostingEnvironment.QueueBackgroundWorkItem 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 se nedokončí všechny pracovní položky na pozadí. Tuto metodu nelze volat mimo doménu spravované ASP.NET aplikace.

    Vlastnosti new HttpResponse.HeadersWritten a vracejí logické hodnoty, které označují, jestli byly hlavičky odpovědi HttpResponseBase.HeadersWritten zapsány. Pomocí těchto vlastností můžete zajistit, že volání rozhraní API, jako je například (která vyvolá výjimky v případě zápisu HttpResponse.StatusCode hlaviček), budou úspěšná.

  • Změna velikosti v Windows Forms. Tato funkce byla rozšířena. Nastavení DPI systému teď můžete použít ke změně velikosti součástí následujících dalších ovládacích prvků (například pomocí šipky rozevíracího seznamu v polích se seznamem):

    Jedná se o funkci výslovného souhlasu. Pokud ho chcete povolit, nastavte element na v EnableWindowsFormsHighDpiAutoResizing true konfiguračním souboru aplikace (app.config):

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

    To lze provést v rámci stejné domény aplikace a nevyžaduje žádný další nespravovaný kód pro interakci s příkazem MSDTC k provedení povýšení. Novou metodu lze volat pouze v případě, že existuje nevyřízené volání metody , která je System.Transactions IPromotableSinglePhaseNotification Promote implementována zařazením.

  • 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 profilaci vyžadují, aby závislá sestavení, která jsou vložena profilerem, byla okamžitě načtena, místo aby byla načtena po úplné inicializaci aplikace. Tato změna nemá vliv na uživatele ICorProfiler stávajících rozhraní API.

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

  • Změny trasování událostí. .NET Framework 4.5.2 umožňuje trasování událostí pro trasování aktivit na základě Windows (ETW) mimo proces pro větší oblast. To umožňuje dodavatelům rozšířeného řízení spotřeby (APM) poskytovat odlehčené nástroje, které přesně sledují náklady na jednotlivé požadavky a aktivity, které se napříč vlákny. Tyto události se vyvolaly pouze v případě, že je kontrolery Trasování událostí pro Windows povolí. Proto tyto změny neovlivní dříve napsaný kód EtW ani kód, který běží se zakázaným Trasováním událostí pro Windows.

  • Zvýšením náklady na transakci a převodem 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 může použít zařazení, které bylo dříve vytvořeno v Transaction.EnlistPromotableSinglePhase reakci na ITransactionPromoter.Promote metodu . Požádá o zvýšení transakce na System.Transactions transakci MSDTC a "převést" zařazení možné na trvalý zařazení. Po úspěšném dokončení této metody už rozhraní nebude odkazováno pomocí a všechna budoucí oznámení budou IPromotableSinglePhaseNotification System.Transactions doručena do poskytnutého ISinglePhaseNotification rozhraní. Sporný zařazení musí fungovat jako trvalý zařazení, podpora protokolování transakcí a obnovení. Podrobnosti Transaction.EnlistDurable najdete v tématu . Kromě toho musí zařazení podporovat ISinglePhaseNotification . Tuto metodu je možné volat pouze při ITransactionPromoter.Promote zpracování volání. Pokud tomu tak není, TransactionException je vyvolána výjimka.

Co je nového ve .NET Framework 4.5.1

Aktualizace z dubna 2014:

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

    • Rozhraní API Windows Runtime můžete používat 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. UI. Typy XAML) v přenosných knihovnách při cílení na Windows 8.1 nebo Windows Phone 8.1. Podporují se následující šablony XAML: prázdná stránka, slovník prostředků, ovládací prvek bez šablony a uživatelský ovládací prvek.

    • Můžete vytvořit přenosnou komponentu 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í knihovny tříd Windows Store nebo Windows Phone Store, jako je přenosná knihovna tříd.

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

  • Sada .NET Framework obsahu teď obsahuje dokumentaci pro .NET Native, což je technologie předkompilace pro vytváření a nasazování Windows aplikací. .NET Native lepší výkon zkompiluje aplikace přímo do nativního kódu, nikoli do přechodného jazyka (IL). Podrobnosti najdete v tématu Kompilace aplikací pomocí .NET Native.

  • Referenční .NET Framework nabízí nové prostředí procházení a vylepšené funkce. Teď můžete procházet zdrojový kód .NET Framework online, stáhnout odkaz pro offline zobrazení a procházet zdroje (včetně oprav a aktualizací) během ladění. Další informace najdete v položce blogu Nový vzhled referenčního zdroje .NET.

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

  • Automatické přesměrování vazby pro sestavení. Počínaje verzí Visual Studio 2013 může být při kompilaci aplikace, která cílí na .NET Framework 4.5.1, přesměrování vazeb přidána do konfiguračního souboru aplikace, pokud vaše aplikace nebo její komponenty odkazují na více verzí stejného sestavení. Tuto funkci můžete povolit také pro projekty, které cílí na starší verze .NET Framework. Další informace najdete v tématu Postupy: Povolení a zakázání automatického přesměrování vazby.

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

  • Možnost explicitně komprimovat haldu velkých objektů (LOH) během uvolňování paměti. Další informace najdete ve vlastnosti GCSettings.LargeObjectHeapCompactionMode .

  • Další vylepšení výkonu, jako je ASP.NET aplikace, vylepšení JIT s více jádry a rychlejší spouštění aplikací po .NET Framework aktualizaci. Podrobnosti najdete v oznámení .NET Framework 4.5.1 a v blogovém ASP.NET pozastavení aplikace.

Mezi vylepšení Windows Forms patří:

  • Změna velikosti v Windows Forms. Nastavení DPI systému můžete použít ke změně velikosti součástí ovládacích prvků (například ikon, které se zobrazují v mřížce vlastností) tím, že se přihlásíte k zadání položky 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 Windows Forms:

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

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

Mezi vylepšení při ladění .NET Framework aplikací v Visual Studio 2013 patří:

  • Vrátí hodnoty v Visual Studio ladicím programu. Při ladění spravované aplikace v Visual Studio 2013 se v okně Automatické hodnoty zobrazí návratové typy a hodnoty pro metody. Tyto informace jsou k dispozici pro desktopové, Windows Store a Windows Phone aplikace. Další informace najdete v tématu Prozkoumání návratových hodnot volání metod.

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

  • Ladění s modifikátorem Async. Aby bylo snazší ladit asynchronní aplikace v Visual Studio 2013, skryje zásobník volání kód infrastruktury poskytovaný kompilátory pro podporu asynchronního programování a také řetězí v logických nadřazených rámcích, abyste mohli lépe sledovat provádění logického programu. 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 Windows Runtime. 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.

Počínaje Visual Studio 2013 můžete k optimalizaci aplikací pro Store Windows 8.x a desktopových aplikací použít nástroj pro optimalizaci spravovaného profilu Mpgo.exe (Managed Profile Guided Optimization Tool).

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 nasazení. 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 <gcAllowVeryLargeObjects> na element, který také uvádí 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 CultureInfo třída .

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

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

  • 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) verze 2008 při použití třídy v System.Globalization.IdnMapping Windows 8.

  • Delegování porovnání řetězců s operačním systémem, který implementuje Unicode 6.0, pokud se .NET Framework na 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 String se na třídu a část Poznámky SortVersion třídy .

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

  • Reflexe typu podporuje rozdělení mezi Type třídy TypeInfo 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 a vyhledejte Microsoft.Composition 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 soubor.

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 Windows 8.x Store ze souboru .resources vloženého do sestavení .NET Framework. Další informace najdete v tématu Resgen.exe (Resource File Generator).

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 System.Net.Http názvů System.Net.Http.Headers a .

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

Kromě toho .NET Framework 4.5 zahrnuje 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 Socket třídách TcpListener a .

Windows Presentation Foundation (WPF)

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

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

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

  • Nové funkce pro VirtualizingPanel třídy Dispatcher 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 na vlastní typy, které implementují rozhraní, a načtení informací o datové vazbě ICustomTypeProvider 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íší zápis 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 snížení pravděpodobnosti, že budete muset ručně nakonfigurovat kvóty pro XmlDictionaryReaderQuotas č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 k ?singleWSDL 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 Podpora ukládání do mezipaměti.

  • Podpora komprese binárního kodéru

  • Podpora pro přenos UDP, který vývojářům umožňuje psát služby, které používají zprávy "oheň a zapomenout". Klient pošle zprávu službě a neočekává odpověď ze služby.

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

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

další informace najdete v tématu co je nového v Windows Communication Foundation.

Windows Workflow Foundation (WF)

v .NET Framework 4,5 byly do programovací model Windows Workflow Foundation (WF) přidány některé nové funkce, včetně těchto:

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

    • Možnost nastavovat zarážky na stavech.

    • Možnost Kopírovat a vkládat přechody v Návrháři postupu.

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

    • Aktivity pro vytváření pracovních postupů stavového počítače, včetně: StateMachine , State a Transition .

  • Rozšířené funkce Návrhář postupu provádění, například následující:

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

    • Schopnost automaticky vytvořit aktivitu sekvence, když se do aktivity kontejneru přidá druhá podřízená aktivita, a zahrnout obě aktivity do aktivity sekvence.

    • 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í osnovy ve stylu stromu a umožňuje v zobrazení Osnova dokumentu vybrat komponentu.

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

    • Možnost definovat a spotřebovat delegáty aktivit pomocí návrháře pracovních postupů.

    • Automatické připojení a automatické vložení pro aktivity a přechody v pracovních postupech stavového stroje a vývojového diagramu.

  • Storage informací 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 oboru NoPersistScope, která zabraňuje zachování podřízených aktivit.

  • Podpora pro výrazy jazyka C#:

    • projekty pracovního postupu, které používají Visual Basic, budou používat výrazy Visual Basic a projekty pracovního postupu c# budou používat výrazy jazyka c#.

    • projekty pracovního postupu c#, které byly vytvořeny v Visual Studio 2010 a které mají Visual Basic výrazy jsou kompatibilní s projekty pracovního postupu c#, které používají výrazy jazyka c#.

  • Vylepšení správy verzí:

    • Nová WorkflowIdentity třída, která poskytuje mapování mezi trvalou instancí pracovního postupu a její definicí pracovního postupu.

    • Souběžné spouštění více verzí pracovních postupů ve stejném hostiteli, včetně WorkflowServiceHost .

    • V případě dynamické aktualizace je možné změnit definici trvalé instance pracovního postupu.

  • Vývoj služby pracovního postupu prvního kontraktu, který poskytuje podporu pro automatické generování aktivit, které se shodují s existující smlouvou služby.

další informace najdete v tématu co je nového v programovací model Windows Workflow Foundation.

Aplikace .NET pro Windows 8.x Store

aplikace pro Store Windows 8. x jsou navržené pro konkrétní faktory a využívají sílu operačního systému Windows. podmnožina .NET Framework 4,5 nebo 4.5.1 je k dispozici pro sestavování Windows 8 aplikací pro Store Windows pomocí jazyka C# nebo Visual Basic. tato podmnožina se nazývá .net pro Windows 8 aplikace pro store. x a je popsána v přehledu.

Přenositelné knihovny tříd

přenosný projekt knihovny 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 Frameworkch platforem. pomocí přenositelného projektu knihovny tříd zvolíte platformy (například Windows Phone a .net pro Windows 8 aplikace pro Store. x) k cíli. Dostupné typy a členy v projektu jsou automaticky omezeny na společné typy a členy napříč těmito platformami. Další informace naleznete v tématu Přenosná knihovna tříd.

Viz také