Co je nového v .NET Framework

Poznámka

.NET Framework 4,8 je poslední verzí .NET Framework a nebudou zveřejněny žádné další verze. .NET Framework se ale budou dál obsluhovat pomocí měsíčních oprav chyb zabezpečení a spolehlivosti. Kromě toho bude i nadále součástí systému Windows, bez plánů k jeho odebrání. Nemusíte migrovat aplikace .NET Framework, ale pro nový vývoj použijte .net 5,0 nebo novější.

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

Tento článek neposkytuje vyčerpávající informace o každé nové funkci a může se změnit. Obecné informace o těchto .NET Framework najdete v tématu 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 pomocí NuGetu, aby rozšířil podporu platformy a zavedl nové funkce, jako jsou neměnné kolekce a typy vektorů s podporou SIMD. Další informace najdete v tématu Další knihovny tříd a rozhraní API a .NET Framework a mimo pásmo. Podívejte se na úplný seznam 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 lze nainstalovat do systému Windows 10, Windows 8.1, Windows 7 SP1 a odpovídajících serverových platforem od verze Windows Server 2008 R2 SP1. .NET Framework 4,8 můžete nainstalovat buď pomocí webové instalační služby, nebo v offline instalačním programu. Doporučeným způsobem pro většinu uživatelů je použití webové instalační služby.

Můžete cílit .NET Framework 4,8 v sadě Visual Studio 2012 nebo novější instalací sady .NET Framework 4,8 Developer Pack.

Co je nového v .NET Framework 4,8

.NET Framework 4,8 zavádí nové funkce v následujících oblastech:

Vylepšené přístupnost, která aplikaci umožňuje zajistit vhodné prostředí pro uživatele technologie pro usnadnění práce, je nadále hlavním cílem .NET Framework 4,8. Informace o vylepšeních usnadnění v .NET Framework 4,8 najdete v tématu co je nového v přístupnosti v .NET Framework.

Základní třídy

Byl snížen dopad FIPS na kryptografii. V předchozích verzích .NET Framework spravované třídy zprostředkovatele kryptografických služeb, jako je například SHA256Managed throw a, CryptographicException Pokud jsou systémové šifrovací knihovny nastaveny 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, neprošly certifikací FIPS (Federal Information Processing Standards) 140-2. Vzhledem k tomu, že někteří vývojáři mají své vývojové počítače v režimu FIPS, jsou výjimky obvykle vyvolány v produkčních systémech.

Ve výchozím nastavení nejsou v aplikacích, které cílí na .NET Framework 4,8, následující spravované třídy kryptografie již CryptographicException v tomto případě vyvolávat:

Místo toho tyto třídy přesměrují kryptografické operace do systémové knihovny kryptografie. Tato změna efektivně odstraňuje potenciálně matoucí rozdíl mezi vývojářskými prostředími a provozními prostředími a zpřístupňuje nativní komponenty a spravované komponenty v rámci stejných kryptografických zásad. Aplikace, které závisí na těchto výjimkách, mohou obnovit předchozí chování nastavením přepínače AppContext Switch.System.Security.Cryptography.UseLegacyFipsThrow na true . Další informace najdete v tématu spravované kryptografické třídy nevyvolávají výjimku CryptographyException v režimu FIPS.

Použití aktualizované verze ZLib

Počínaje .NET Framework 4,5 clrcompression.dll sestavení používá ZLib, nativní externí knihovnu pro kompresi dat, aby bylo možné poskytnout implementaci pro algoritmus deflate. Verze clrcompression.dll .NET Framework 4,8 se aktualizuje tak, aby používala ZLib verze 1.2.11, která zahrnuje několik klíčových vylepšení a oprav.

Windows Communication Foundation (WCF)

Úvod do ServiceHealthBehavior

Nástroje pro orchestraci využívají koncové body stavu ke správě služeb na základě jejich stavu. Kontroly stavu lze také použít pomocí nástrojů pro monitorování ke sledování a poskytování oznámení o dostupnosti a výkonu služby.

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

  • 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 na test stavu HTTP/GET.

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

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

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

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

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

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

Parametry a příklady dotazů:

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

    Stavový kód odpovědi HTTP 455 se vrátí, pokud je stav některého z přeslaných kanálů větší než CommunicationState.Opened .

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

    Stavový kód odpovědi HTTP 465 se vrátí, pokud je stav jakéhokoli naslouchacího procesu 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 vráceno procento nebo mezi 70 a 95, 350.

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

Stav služby se dá zobrazit v HTML zadáním řetězce dotazu, jako je https://contoso:81/Service1?health nebo v XML, zadáním řetězce dotazu, jako 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í vysokého rozlišení DPI

V .NET Framework 4,8 WPF přidává podporu pro sledování DPI Per-Monitor v2 a Mixed-Mode škálování DPI. Další informace o vývoji vysokého rozlišení DPI najdete v tématu vývoj desktopových aplikací s vysokým rozlišením v systému Windows .

.NET Framework 4,8 vylepšuje podporu hostovaných HWND a model Windows Forms spolupráce v aplikacích WPF s vysokým rozlišením DPI na platformách, které podporují škálování Mixed-Mode DPI (od aktualizace Windows 10. dubna 2018). Když jsou hostované ovládací prvky HWND nebo model Windows Forms vytvořené jako Mixed-Mode systému Windows s rozlišením DPI voláním SetThreadDpiHostingBehavior a SetThreadDpiAwarenessContext, můžou být hostované v aplikaci WPF v Per-Monitor v2 a správně škálovat a měnit jejich velikost. Takový hostovaný obsah se nevykresluje s nativním rozlišením DPI; operační systém místo toho škáluje hostovaný obsah na příslušnou velikost. Podpora režimu sledování Per-Monitor v2 DPI také umožňuje hostování ovládacích prvků WPF (tj. nadřazených prvků) 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é optimalizace a všechny opravy chyb provedené v kompilátoru JIT .NET Core 2.1 jsou součástí kompilátoru JIT .NET Framework 4.8.

Vylepšení NGEN : Modul runtime vylepšil správu paměti pro image NGEN (Native Image Generator), aby data mapovaná z imagí NGEN nebyla v paměti. Tím se omezí plocha dostupná pro útoky, které se pokoušejí spustit libovolný kód úpravou paměti, která se spustí.

Antimalwarová kontrola všech 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 třetích stran. Sestavení načtená z jiných zdrojů, například metodou , se však neskenuje a mohou potenciálně obsahovat Assembly.Load(Byte[]) nezjáznaný malware. Počínaje .NET Framework 4.8 běžící na Windows 10 aktivuje modul runtime kontrolu antimalwarových řešení, která implementují rozhraní AMSI (Antimalware Scan Interface).

Co je nového ve .NET Framework 4.7.2

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

Neustálé zaměření na .NET Framework 4.7.2 je vylepšená přístupnost, což aplikaci umožňuje poskytovat uživatelům technologie usnadnění odpovídající prostředí. Informace o vylepšeních přístupnosti v .NET Framework 4.7.2 najdete v tématu Co je nového v usnadnění přístupu 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. Například:

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

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

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

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

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

   using (Rfc2898DeriveBytes pbkdf2 = new Rfc2898DeriveBytes(password, SaltSize,
                                                             iterations, algorithm))
   {
      salt = pbkdf2.Salt;
      return pbkdf2.GetBytes(DerivedValueSize);
   }
}
Private Shared Function DeriveKey(password As String, ByRef iterations As Integer,
                                  ByRef salt AS Byte(), ByRef algorithm As HashAlgorithmName) As Byte()
   iterations = 100000
   algorithm = HashAlgorithmName.SHA256

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

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

Podpora dočasných klíčů

Import PFX může volitelně načíst soukromé klíče přímo z paměti a obejít pevný disk. Když je nový X509KeyStorageFlags.EphemeralKeySet příznak zadán v 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. Naopak

  • 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 služby 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 mohou úlohy generovat žádosti o podepsání certifikátu ( CSR), což umožňuje vytvoření žádosti o certifikát ve stávajících nástrojích. To je často užitečné v testovacích scénářích.

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

Noví členové SignerInfo

Počínaje .NET Framework 4.7.2 třída zveřejňuje SignerInfo další informace o podpisu. Hodnotu vlastnosti můžete System.Security.Cryptography.Pkcs.SignerInfo.SignatureAlgorithm načíst, abyste určili podpisový algoritmus používaný podepisovattelem. SignerInfo.GetSignature je možné volat a získat kopii kryptografického podpisu pro tohoto podepisovatera.

Ponechání zabaleného datového proudu otevřeného po vyřazení CryptoStream

Počínaje .NET Framework 4.7.2 má třída další konstruktor, který umožňuje CryptoStream Dispose nezabalit zabalený datový proud. Pokud chcete nechat zabalený datový proud otevřený CryptoStream po vyřazení 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)

Dekompresní změny v DeflateStream

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

Podpora dekomprese pomocí rozhraní API systému Windows je ve výchozím nastavení povolená pro aplikace, které cílí .NET Framework 4.7.2. Aplikace, které cílí na starší verze .NET Framework, ale běží pod verzí .NET Framework 4.7.2, se mohou k tomuto chování přihlásit 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á do typů a několik nových SortedSet<T> HashSet<T> rozhraní API. 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í ve webových formulářích

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 soubory cookie a FormsAuthentication System.Web.SessionState můžete přidat úpravou konfiguračního souboru webu:

<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 jsme do třídy přidali System.Net.Http.HttpClientHandler osm vlastností. Dvě vyvolaly PlatformNotSupportedException . .NET Framework 4.7.2 teď 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 zabezpečení vyžadují, aby mnoho zákazníků používá vícefaktorové ověřování (MFA). Kromě toho aktuální osvědčené postupy odrazují od zahrnutí uživatelských hesel přímo do připojovacích řetězců. Pro podporu těchto změn rozšiřuje .NET Framework 4.7.2 připojovací řetězce SQLClient přidáním nové hodnoty Active Directory Interactive pro stávající klíčové slovo "Ověřování", aby podporovalo MFA a ověřování Azure AD. Nová interaktivní metoda podporuje nativní a federované uživatele Azure AD i uživatele azure AD hosta. Při použití této metody se ověřování MFA vynucované službou Azure AD podporuje pro databáze SQL. Kromě toho proces ověřování vyžaduje uživatelské heslo, aby se dodržovaly osvědčené postupy zabezpečení.

V předchozích verzích .NET Framework připojení SQL podporovalo pouze SqlAuthenticationMethod.ActiveDirectoryPassword možnosti SqlAuthenticationMethod.ActiveDirectoryIntegrated a . Obě jsou součástí neinteraktivního protokolu ADAL,který nepodporuje MFA. 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í interaktivně zadávat hesla uživatelů 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 Multi-Factor Authentication Support 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 bázi 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. Pokud chcete podporovat podporu pro Always Encrypted enklávy, .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. Například:

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

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

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

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

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

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. Například aplikace může deklarovat ResourceDictionary, jehož obsah je zkopírován z daného zdrojového identifikátoru URI:

<ResourceDictionary Source="MyRD.xaml" />

Diagnostický pomocník, který upravuje původní kód v souboru MyRD. XAML , může k vyhledání slovníku použít novou funkci. Tato funkce je implementována novou statickou metodou ResourceDictionaryDiagnostics.GetResourceDictionariesForSource . Pomocník diagnostiky volá novou metodu pomocí absolutního identifikátoru URI, který identifikuje původní kód, jak je znázorněno v následujícím kódu:

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ázdnou hodnotu výčtu, pokud VisualDiagnostics není povolena a ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO Proměnná prostředí je nastavena.

Hledání vlastníků ResourceDictionary

Počínaje .NET Framework 4.7.2 může pomocník pro diagnostiku najít vlastníky daného ResourceDictionary . (Tato funkce je určena pro diagnostické asistenty, nikoli pro produkční aplikace.) Pokaždé, když je provedena změna na ResourceDictionary , WPF automaticky najde všechny odkazy na DynamicResource , které mohou být ovlivněny změnou.

Nástroj pro diagnostiku, jako je například zařízení "Edit-and-Continue" sady Visual Studio, může chtít tuto funkci zvětšit, aby zpracovávala odkazy na StaticResource . Prvním krokem v tomto procesu je vyhledání vlastníků slovníku; To znamená, aby bylo možné najít všechny objekty, jejichž Resources vlastnost odkazuje na slovník (buď přímo, nebo nepřímo přes ResourceDictionary.MergedDictionaries vlastnost). Tři nové statické metody implementované u System.Windows.Diagnostics.ResourceDictionaryDiagnostics třídy, jeden pro každý ze základních typů, které mají Resources vlastnost, podporují tento krok:

Tyto metody vrátí prázdný vyčíslitelné, pokud VisualDiagnostics není povoleno a ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO Proměnná prostředí je nastavena.

Hledání odkazů na StaticResource

Diagnostika pomocníka teď může obdržet oznámení vždy, když se vyřeší odkaz na StaticResource . (Tato funkce se používá pro diagnostické asistenty, nikoli pro produkční aplikace.) Nástroj pro diagnostiku, jako je například zařízení "Edit-and-Continue" sady Visual Studio, může chtít aktualizovat všechna použití prostředku, když se změní jeho hodnota ResourceDictionary . WPF to dělá automaticky pro odkazy DynamicResource, ale záměrně to pro odkazy StaticResource nepro dělá. Počínaje .NET Framework 4.7.2 může diagnostický asistent pomocí těchto oznámení vyhledat tato použití statického prostředku.

Toto oznámení je implementováno novou 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 model Windows Forms, Windows Presentation Foundation (WPF) a Visual Studio Tools for Office (VSTO) je možné nasadit pomocí Technologie ClickOnce. Pokud se v manifestu aplikace nachází následující položka, nasazení proběhne úspěšně ve .NET Framework 4.7.2:

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

Pro model Windows Forms aplikace už předchozí alternativní řešení nastavení sledování DPI v konfiguračním souboru aplikace místo manifestu aplikace už není nutné, aby nasazení ClickOnce bylo úspěšné.

Co je nového ve .NET Framework 4.7.1

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

Kromě toho je větší zaměření na .NET Framework 4.7.1 vylepšené usnadnění, což aplikaci umožňuje poskytovat uživatelům technologie pro usnadnění vhodné 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 .NET Framework 4.6.1, 4.6.2 a 4,7. (Upozorňujeme, že tyto verze .NET Framework podporují .NET Standard 2,0 pouze v případě, že jsou do cílového systému nasazeny i další .NET Standard podpůrné soubory.) Další informace najdete v příspěvku na blogu o podpoře BCL-.NET Standard 2,0 v tématu .NET Framework 4.7.1 runtime a funkce kompilátoru .

Podpora pro sestavovatele konfigurace

Tvůrci konfigurace umožňují vývojářům dynamicky vkládat a sestavovat nastavení konfigurace pro aplikace v době běhu. Vlastní tvůrci konfigurace lze použít k úpravě existujících dat v konfiguračním oddílu nebo k sestavení konfiguračního oddílu úplně od začátku. Bez konfiguračních tvůrců, soubory. config jsou statické a jejich nastavení je definováno určitou dobu před spuštěním aplikace.

Chcete-li vytvořit vlastního tvůrce konfigurace, odvodit svého tvůrce z abstraktní ConfigurationBuilder třídy a přepsat jeho ConfigurationBuilder.ProcessConfigurationSection a ConfigurationBuilder.ProcessRawXml . Můžete také definovat své sestavovatele v souboru. config. Další informace najdete v části "tvůrci konfigurace" v příspěvku na blogu .NET Framework 4.7.1 ASP.NET a konfigurační funkce .

Detekce funkcí za běhu

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

Typy řazené kolekce členů mají hodnotu serializovat.

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 (Kompilátor – hodnota je Serializovatelná) v blogovém příspěvku o modulu runtime a funkcích kompilátoru .NET Framework 4.7.1.

Podpora odkazů jen pro čtení

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

Common language runtime (CLR)

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

Změny uvolňování paměti (GC) ve .NET Framework 4.7.1 zlepšují celkový výkon, zejména u přidělení haldy velkých objektů (LOH). 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 . Od verze .NET Framework 4.7.1, HashAlgorithm.Sha256 HashAlgorithm.Sha384 , a se podporují HashAlgorithm.Sha512 také . 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 tomto příspěvku na blogu podpora SHA-2 pro Message. HashAlgorithm v části .NET Framework 4.7.1 ASP.NET a konfigurační funkce .

ASP.NET

Kroky provádění v aplikacích ASP.NET

ASP.NET zpracovává požadavky v předdefinovaném kanálu, který zahrnuje 23 událostí. ASP.NET spustí jednotlivé obslužné rutiny události jako krok provedení. Ve verzích ASP.NET až .NET Framework 4,7 nemůže ASP.NET z důvodu přepínání mezi nativními a spravovanými vlákny flowovat kontext spuštění. Místo toho ASP.NET selektivní toky pouze HttpContext . Počínaje .NET Framework 4.7.1 HttpApplication.OnExecuteRequestStep(Action<HttpContextBase,Action>) Metoda také umožňuje modulům obnovovat okolní data. Tato funkce je zaměřená na knihovny, které mají na starosti trasování, profilování, diagnostiku nebo transakce, například informace o toku spuštění aplikace. Další informace najdete v příspěvku na blogu věnovaném funkci "ASP.NET provádění kroku" v tématu .NET Framework 4.7.1 ASP.NET a konfigurační funkce .

ASP.NET HttpCookie – analýza

.NET Framework 4.7.1 zahrnuje novou metodu, HttpCookie.TryParse která poskytuje standardizovaný způsob, jak vytvořit HttpCookie objekt z řetězce a přesně přiřadit hodnoty souborů cookie, jako je datum vypršení platnosti a cesta. Další informace najdete v blogovém příspěvku "ASP.NET HttpCookie analyze" v blogu .NET Framework 4.7.1 ASP.NET and Configuration Features .

Možnosti hash SHA-2 pro přihlašovací údaje ověřování ASP.NET Forms

V .NET Framework 4,7 a starších verzích umožnili vývojářům ASP.NET ukládat přihlašovací údaje uživatele s hashými hesly v konfiguračních souborech pomocí MD5 nebo SHA1. Počínaje .NET Framework 4.7.1, ASP.NET podporuje také nové zabezpečené možnosti hash SHA-2, jako jsou SHA256, SHA384 a SHA512. SHA1 zůstává výchozí a v konfiguračním souboru webu lze definovat jiný algoritmus hash, který není výchozí. Například:

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

Co je nového v .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 článku změny rozhraní api .NET Framework 4,7 na GitHubu. Seznam vylepšení funkcí a oprav chyb ve .NET Framework 4.7 najdete v .NET Framework 4.7 Seznam změn na GitHubu. 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.

Příklad vylepšení kryptografie .NET Framework 4.7 najdete na GitHubu.

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 4.7 přidává ASP.NET novou sadu rozhraní API, která vývojářům umožňuje nahradit výchozí implementace ASP.NET pro ukládání objektů do mezipaměti v paměti a monitorování paměti. Vývojáři teď můžou nahradit některou z následujících tří součástí, pokud ASP.NET implementace není adekvátní:

  • Úložiště mezipaměti objektů. Při použití konfiguračního oddílu Noví poskytovatelé mezipaměti můžou vývojáři připojit nové implementace mezipaměti objektů pro aplikaci ASP.NET pomocí nového rozhraní ICacheStoreProvider .

  • Monitorování paměti. Výchozí monitorování paměti v ASP.NET upozorní aplikace, když běží blízko nakonfigurovaného limitu privátních bajtů pro daný proces, nebo když má počítač nedostatek celkového dostupné fyzické paměti RAM. Když jsou tato omezení blízko, jsou aktivována oznámení. U některých aplikací se oznámení aktivují příliš blízko nakonfigurovaných limitů, aby bylo možné reakce na užitečné. Vývojáři teď můžou zapisovat vlastní monitory paměti, které nahradí výchozí hodnotu pomocí ApplicationMonitors.MemoryMonitor Vlastnosti.

  • Reakce na limit paměti. Ve výchozím nastavení se ASP.NET pokusí oříznout mezipaměť objektů a pravidelně volat, GC.Collect Pokud je limit procesu privátního bajtu blízko. U některých aplikací je frekvence volání GC.Collect nebo množství mezipaměti, která je oříznuta, neefektivní. Vývojáři teď můžou nahradit nebo doplnit výchozí chování tím, že se přihlásí k odběru IObserver implementace do monitorování paměti aplikace.

Windows Communication Foundation (WCF)

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

Možnost konfigurovat výchozí nastavení zabezpečení zpráv na TLS 1,1 nebo TLS 1,2

Počínaje .NET Framework 4,7 podporuje WCF jako výchozí protokol zabezpečení zpráv protokol TLS 1,1 nebo TLS 1,2 kromě protokolu SSL 3,0 a TLS 1,0. 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>

Vylepšená spolehlivost aplikací WCF a serializace WCF

WCF zahrnuje řadu změn kódu, které eliminují konflikty časování, což zvyšuje výkon a spolehlivost možností serializace. Tady jsou některé z nich:

  • Lepší podpora pro kombinování asynchronního a synchronního kódu v voláních Připojení SocketConnection bylo. BeginRead a Připojení SocketConnection bylo. Read.
  • Lepší spolehlivost při přerušení připojení pomocí SharedConnectionListener a DuplexChannelBinder.
  • Zlepšená spolehlivost operací serializace při volání FormatterServices.GetSerializableMembers(Type) metody.
  • Lepší spolehlivost při odebírání nástroje Wait voláním metody ChannelSynchronizer. RemoveWaiter .

Windows Forms

V .NET Framework 4,7 model Windows Forms vylepš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ého rozlišení DPI a podpora dynamického DPI pro model Windows Forms aplikace. Podpora vysokého rozlišení DPI vylepšuje rozložení a vzhled formulářů a ovládacích prvků na obrazovkách s vysokým rozlišením DPI. Dynamické DPI mění rozložení a vzhled formulářů a ovládacích prvků, když uživatel změní v běžící aplikaci Měřítko DPI nebo zobrazení.

Podpora vysokého rozlišení DPI je funkce výslovného souhlasu, kterou nakonfigurujete tak, že definujete <System.Windows.Forms.ConfigurationSection> oddíl v konfiguračním souboru aplikace. Další informace o přidání podpory vysokého rozlišení DPI a dynamické podpory DPI do vaší aplikace model Windows Forms najdete v tématu Podpora vysokého rozlišení DPI v model Windows Forms.

Windows Presentation Foundation (WPF)

V .NET Framework 4,7 zahrnuje WPF následující vylepšení:

Podpora pro sadu dotykové a stylusové sady založená na zprávách Windows WM_POINTER

Teď máte možnost používat pro WM_POINTER zprávy místo platformy Windows Ink Services (Wispr) k dispozici tónovou nebo stylusovou sadu. Toto je funkce výslovného souhlasu v .NET Framework. Další informace najdete v části Kompatibilita aplikací .

Nová implementace pro rozhraní API pro tisk WPF

Rozhraní API pro tisk v platformě WPF ve System.Printing.PrintQueue třídě volají rozhraní API pro tiskové dokumenty systému Windows namísto zastaralých tiskových rozhraní XPS. Dopad této změny na kompatibilitu aplikace naleznete v části Kompatibilita aplikací .

Co je nového v .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 GitHubu. 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 GitHubu. 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 snadno lokalizovat chybové zprávy. Chybové zprávy budou lokalizovány, pokud:

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

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

  3. Název lokalizovaného souboru 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 se musí nacházet ve App.LocalResources složce. Například následující je klíč a jeho hodnota v lokalizované chybové zprávě jazyka francouzštiny (FR):

Name Hodnota
Hodnocení musí být v rozmezí od 1 do 10. La doit être tvoří meziplatformní 1 et 10.

Lokalizace datových poznámek je navíc rozšiřitelná. Vývojáři mohou připojit vlastní poskytovatele řetězce lokalizátora implementací IStringLocalizerProvider rozhraní k uložení lokalizačního řetězce jinde než v souboru prostředků.

Asynchronní podpora s poskytovateli úložiště stavu relace

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

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 SessionStateUtility Třída obsahuje dvě nové metody IsSessionStateReadOnly a IsSessionStateRequired , které lze použít k podpoře asynchronních operací.

Asynchronní podpora pro poskytovatele výstupní mezipaměti

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

Byla přidána následující rozhraní API pro podporu zprostředkovatelů asynchronní výstupní mezipaměti:

Kategorie znaků

Znaky ve .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 Unicode 8,0 je omezená na klasifikaci znaků CharUnicodeInfo třídou a na typy a metody, které na ní spoléhají. Mezi ně patří StringInfo třída, přetížená Char.GetUnicodeCategory Metoda a třídy znaků rozpoznané modulem .NET Framework regulárních výrazů. Porovnání znaků a řetězců a jejich řazení není ovlivněno touto změnou a nadále se spoléhá na základní operační systém nebo v systémech Windows 7 na znaková data, která poskytuje .NET Framework.

Změny v kategoriích znaků z Unicode 6,0 až Unicode 7,0 najdete na webu Unicode Consortium na standardu Unicode verze 7.0.0 . Změny z Unicode 7,0 na Unicode 8,0 najdete na webu Unicode Consortium na standardu Unicode verze 8.0.0 .

Kryptografie

Podpora pro certifikáty x509 obsahující FIPS 186-3 DSA

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

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

V případě, že se v RSA .NET Framework 4,6 a třídě v .NET Framework 4.6.1 zachovává poslední změny třídy ECDsa , DSA má abstraktní základní třída v .NET Framework 4.6.2 další metody, které umožňují volajícím používat tuto funkci bez přetypování. Můžete zavolat DSACertificateExtensions.GetDSAPrivateKey metodu rozšíření pro podepsá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 kryptografie Windows (CNG) přidala podporu 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 tuto funkci umožňuje 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 ). Například:

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

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

            return encryptor.TransformFinalBlock(data, 0, data.Length);
        }
    }
}
Public Shared Function EncryptDataWithPersistedKey(data As Byte(), iv As Byte()) As Byte()
    Using Aes As Aes = New AesCng("AesDemoKey", CngProvider.MicrosoftSoftwareKeyStorageProvider)
        Aes.IV = iv

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

Podpora SignedXml pro algoritmus hash SHA-2

.NET Framework 4.6.2 přidává podporu SignedXml tříd pro signatury RSA-SHA256, RSA-SHA384 a RSA-SHA512 pro podpisové metody a SHA256, SHA384 a SHA512 referenční algoritmy Digest.

Konstanty identifikátoru URI jsou všechny vystavené na 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í SignatureDescription obslužnou rutinu do nástroje CryptoConfig pro přidání podpory pro tyto algoritmy, budou i nadále fungovat stejně jako v minulosti, ale vzhledem k tomu, že jsou teď výchozí nastavení platformy, CryptoConfig registrace už není potřeba.

SqlClient

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

Sdružování připojení a vypršení časových limitů pomocí databází SQL Azure

Je-li povoleno sdružování připojení a dojde k vypršení časového limitu nebo jiné chyby přihlášení, je výjimka uložena do mezipaměti a při každém následném pokusu o připojení na dalších 5 sekund až 1 minutu je vyvolána výjimka v mezipaměti. Další informace najdete v tématu věnovaném sdružování připojení SQL Server (ADO.NET).

Toto chování není vhodné při připojování k databázím Azure SQL, protože pokusy o připojení mohou selhat s přechodem k přechodným chybám, které se obvykle obnovují rychle. Pro lepší optimalizaci možností opakovaného pokusu o připojení se při selhání připojení k databázím Azure SQL odstraní chování při blokování fondu připojení.

Přidání PoolBlockingPeriod klíčového slova New vám umožní vybrat dobu blokování, která se pro vaši aplikaci nejlépe hodí. Mezi tyto hodnoty patří:

Auto

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

  • . 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. Pokud je vlastnost nastavená na (což je výchozí hodnota) a stejný dotaz se volá 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

V .NET Framework 4.6.2 jsme Windows Communication Foundation vylepšení 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í kryptografické knihovny Windows (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 aplikace cílí na .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.ServiceModel.DisableCngCertificates=false"
/>

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

private const string DisableCngCertificates = @"Switch.System.ServiceModel.DisableCngCertificates";
AppContext.SetSwitch(disableCngCertificates, false);
Const DisableCngCertificates As String = "Switch.System.ServiceModel.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ý může přijmout textový vstup, přijímá dotykové ovládání.

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 povýšení myši ve Windows.

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. V ukázkách a příručce pro vývojáře na GitHubu najdete další informace o tom, jak umožnit, aby vaše aplikace WPF byla informována o dpi podle monitoru.

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 rámci .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 programovací model 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í je klíčovou funkcí WF, která umožňuje, aby Návrhář postupu provádění byla v aplikaci mimo Visual Studio (například ve WPF). programovací model Windows Workflow Foundation poskytuje možnost podporovat výrazy jazyka C# a technologii IntelliSense v Návrhář postupu provádění. Další informace najdete na blogu programovací model Windows Workflow Foundation.

Availability of IntelliSense when a customer rebuilds a workflow project from Visual Studio Ve verzích .NET Framework starší než 4.6.2 je technologie IntelliSense návrháře WF poškozena, když zákazník znovu sestaví projekt pracovního postupu z Visual Studio. Sestavení projektu je úspěšné, ale typy pracovních postupů se v návrháři nenachází a v okně návrháře se zobrazí upozornění technologie IntelliSense pro chybějící typy pracovních 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 v souboru app.config provést následující změnu:

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

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

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:

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

Technologie ClickOnce byla aktualizována tak, aby podporovala protokol TLS 1.1 a TLS 1.2 kromě protokolu 1.0, který už podporuje. ClickOnce automaticky zjistí, který protokol je vyžadován. K povolení podpory protokolů TLS 1.1 a 1.2 nejsou potřeba žádné další kroky v rámci aplikace ClickOnce.

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

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

Převedené desktopové aplikace získají identitu aplikace podobnou identitě aplikací pro UPW, díky které jsou rozhraní API UPW přístupná pro povolení funkcí, jako jsou živé dlaždice a oznámení. Aplikace se dál chová jako předtím a spouští se 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í

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

Co je nového v .NET Framework 4.6.1

.NET Framework 4.6.1 zahrnuje 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 stávajících funkcí systému 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í výrazný kontrast s kódem potřebným k vygenerování podpisu ve .NET Framework 4.6.

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

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

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

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

Public Class Net46Code
    Public Shared Function SignECDsaSha512(data As Byte(), cert As X509Certificate2) As Byte()
        ' This would require using cert.Handle and a series of p/invokes to get at the
        ' underlying key, then passing that to a CngKey object, and passing that to
        ' new ECDsa(CngKey).  It's a lot of work.
        Throw New Exception("That's a lot of work...")
    End Function

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

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

ADO.NET

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

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

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

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

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

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

Windows Presentation Foundation (WPF)

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

Vyšší výkon

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

Vylepšení kontroly pravopisu

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

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

  • xml:lang, pokud je k dispozici.

  • Aktuální jazyk vstupu.

  • Aktuální jazyková verze vlákna.

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

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

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

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

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

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

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

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

Poznámka

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

ukázky

V úložišti GitHub Microsoft/WPF-Samples je k dispozici řada ukázek WPF. Pomozte nám vylepšit naše ukázky odesláním žádosti o změnu nebo otevřením problému na GitHubu.

Rozšíření DirectX

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

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 teď obsahuje dvě nové metody, ICorProfilerInfo7::GetInMemorySymbolsLength a ICorProfilerInfo7::ReadInMemorySymbols, které poskytují těmto profilerům přístup k datům PDB v paměti. Pomocí nových rozhraní API může profiler získat obsah souboru PDB v paměti jako pole bajtů a pak ho zpracovat nebo serializovat na disk.

  • Lepší instrumentace pomocí rozhraní ICorProfiler

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

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

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

Pomocí souborů PDB Ngen může NGen vytvořit databázi PDB, která obsahuje mapování IL na nativní bez závislosti na databázi IL PDB. V našem scénáři trasování událostí 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 aplikaci Visual Studio 2015 nebo novější. Stávající aplikace budou fungovat na novém .NET Framework. Chcete-li však vytvořit aplikaci, která používá MVC 6 nebo Signal 3, je nutné použít systém projektu v aplikaci Visual Studio 2015 nebo novější.

    Informace najdete v tématu ASP.NET Core.

  • ASP.NET aktualizace

    • 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 vyčištěny asynchronně pomocí podpory vašeho jazyka async/await .

    • Vazba modelu podporuje metody vracející úlohy

      V .NET Framework 4,5 přidal ASP.NET funkci vazby modelu, která povolila rozšiřitelný přístup k datům na základě kódu, na webové formuláře a uživatelské ovládací prvky. Systém vazby modelu teď podporuje Task metody vazby modelu vracející model. Tato funkce umožňuje Web Forms vývojářům získat výhody škálovatelnosti modifikátoru async s jednoduchostí systému datových vazeb při použití novějších verzí ORM, včetně Entity Framework.

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

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

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

    • Podpora HTTP/2 (Windows 10)

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

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

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

      Poznámka

      I ASP.NET Core podporuje HTTP/2, podpora funkce PUSH PROMISE se ještě nepřidala.

      Veškeré práce dělají prohlížeč a webový server (SLUŽBA IIS ve Windows). Pro uživatele nemusíte dělat nic těžkého.

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

    • Podpora protokolu vazby tokenů

      Microsoft a Google spolupracuje na novém přístupu k ověřování, který se nazývá protokol vazby tokenů. 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 v systému Windows 10 implementován 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. ASP.NET ho ale nepodporuje, protože některé funkce ASP.NET jsou závislé 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 Community Technology Preview 2 (CTP2). 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ý 64bitový kompilátor je povolený pro 64bitové procesy spuštěné nad .NET Framework 4.6. Vaše aplikace bude spuštěná v 64bitovém procesu, pokud je zkompilovaná jako 64bitový nebo libovolný procesor a běží v 64bitovém operačním systému. Přechod na nový kompilátor je sice co nejprůhlednější, ale změny v chování jsou možné.

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

  • Vylepšení zavaděče sestavení

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

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

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

    • Implementace IReadOnlyCollection <T>

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

    • CultureInfo.CurrentCulture a CultureInfo.CurrentUICulture

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

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

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

      Nové přetížení metody umožňuje řídit, jestli je halda malého objektu i halda velkého objektu přetáhlá a komprimovaná nebo pouze GC.Collect(Int32, GCCollectionMode, Boolean, Boolean) přetáhlá.

    • Typy s povoleným SIMD

      Obor názvů teď obsahuje řadu typů s podporou System.Numerics SIMD, například , , , , , Matrix3x2 a Matrix4x4 Plane Quaternion Vector2 Vector3 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 jako základ pro implementaci spoléhaly jenom na starší verzi rozhraní API kryptografie Windows System.Security.Cryptography . 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 už existuje implicitní výslovný souhlas s novými funkcemi.

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

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

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

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

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

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

      • Přepněte. obor názvů. název přepínače

      • Přepněte. knihovna. název přepínače

    • Změny asynchronního vzoru založeného na úlohě (TAP)

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

      Třída System.Threading.AsyncLocal<T> umožňuje reprezentovat ambientní data, která jsou místní pro daný asynchronní tok řízení, jako je async například metoda. Lze ji použít k zachování dat mezi vlákny. Můžete také definovat metodu zpětného volání, která je upozorněna při každé změně okolí dat buď kvůli explicitně změněné vlastnosti, nebo proto, že vlákno došlo AsyncLocal<T>.Value k přechodu kontextu.

      Do asynchronního vzoru založeného na úlohách (TAP) byly přidány tři metody usnadnění, , a , které vrací dokončené úkoly Task.CompletedTask Task.FromCanceled v určitém Task.FromException stavu.

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

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

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

      Balíček NuGet i .NET Framework 4,6 byly aktualizovány pomocí následujících funkcí:

      • Dynamické události

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

      • Bohatá datová část

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

      • Sledování aktivit

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

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

  • Windows Presentation Foundation (WPF)

    • Vylepšení HDPI

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

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

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

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

      Zprávy zákazníků o připojení, že dotykové ovládání vytváří nepředvídatelné chování, bylo ve .NET Framework 4.6 vyřešeno. Prahová hodnota dvojitého klepnutí pro aplikace pro 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žívání různých továrn kanálů

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

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

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

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

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

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

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

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

  • Transakce

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

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

    Výchozí hodnota je false.

  • Sítě

    • Opakované použití soketu

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

      Ve .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 model Windows Forms ovládacích prvcích.

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

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

    <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

Univerzální platforma Windows (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ší spuštění a dobu spuštění. Další informace najdete v tématu kompilace aplikací pomocí .NET Native. Přehled .NET Native, který prověřuje, jak se liší od kompilace JIT i NGEN a co znamená pro váš kód, naleznete v tématu .NET Native a kompilace.

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

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

Co je nového v .NET Framework 4.5.2

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

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

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

  • Změna velikosti v model Windows Forms ovládacích prvcích. 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, EnableWindowsFormsHighDpiAutoResizing nastavte element v true konfiguračním souboru aplikace (app.config) na hodnotu :

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

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

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

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

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

Co je nového ve .NET Framework 4.5.1

Aktualizace z dubna 2014:

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

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

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

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

    • Můžete změnit cílení 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í aplikací pro Windows. .NET Native zkompiluje aplikace přímo do nativního kódu, nikoli do zprostředkujícího jazyka (IL), aby byl výkon lepší. 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í v základních třídách .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 například pozastavení aplikace ASP.NET, vícejazykové vylepšení JIT a rychlejší spuštění aplikace po aktualizaci .NET Framework. Podrobnosti najdete v příspěvku na blogu .NET Framework 4.5.1 a v blogovém příspěvku o pozastavení aplikace ASP.NET .

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

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

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

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

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

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

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

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

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

Od 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 s asilerovanou optimalizací (Mpgo.exe).

Nové funkce ve verzi ASP.NET 4.5.1 najdete v tématu ASP.NET and Web Tools for Visual Studio 2013 Release Notes .)

Co je nového ve .NET Framework 4.5

Základní třídy

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

  • Podpora polí, která jsou větší než 2 gigabajty (GB) na 64bitových platformách. Tuto funkci je možné povolit v konfiguračním souboru aplikace. Podívejte se <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. Podívejte se na CultureInfo třídu.

  • Podpora konzoly pro kódování Unicode (UTF-16). Podívejte se na Console třídu.

  • Podpora správy verzí pro kulturní řazení řetězců a porovnávání dat. Podívejte se na SortVersion třídu.

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

  • Vylepšení komprese zip ke zmenšení velikosti komprimovaného souboru. Viz System.IO.Compression obor 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 verze 2008 mezinárodních názvů domén v aplikacích (IDNA) standard, pokud System.Globalization.IdnMapping je třída použita ve Windows 8.

  • Delegování porovnání řetězců k operačnímu systému, které implementuje kódování Unicode 6,0, pokud je .NET Framework použito v systému Windows 8. Při spuštění na jiných platformách .NET Framework zahrnuje vlastní data porovnání řetězců, která implementují Unicode 5. x. Podívejte se na String třídu a oddíl poznámky SortVersion třídy.

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

  • Podpora reflexe typu je rozdělena mezi Type TypeInfo třídy a. Podívejte se na reflexi v .NET Framework pro aplikace pro Windows Store.

Managed Extensibility Framework (MEF)

V .NET Framework 4,5 obsahuje Managed Extensibility Framework (MEF) tyto 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 galerie NuGet. Pokud chcete balíček nainstalovat, otevřete projekt v Visual Studio, v nabídce Projekt zvolte Spravovat balíčky NuGet a vyhledejte balíček Microsoft.Composition online.

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

Asynchronní operace se souborem

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

nástroje

Ve verzi .NET Framework 4.5 umožňuje generátor souborů prostředků (Resgen.exe) vytvořit soubor .resw pro použití v aplikacích pro Store Windows 8.x ze souboru .resources vloženého do sestavení .NET Framework. Další informace najdete v tématu Resgen.exe (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 spravovaného profilu s průvodcem). 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. Mezi ně patří Vylepšený výkon, zvýšené řízení, vylepšená podpora pro asynchronní programování, nová knihovna toku dat a vylepšená podpora pro paralelní ladění a analýzu výkonu. Informace o tom, co je nového pro paralelismus v .NET Framework 4,5 , najdete v blogu věnovaném paralelnímu programování pomocí .NET.

Web

ASP.NET 4,5 a 4.5.1 přidávají vazbu modelu pro webové formuláře, podporu 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 tématu nové System.Net.Http System.Net.Http.Headers obory názvů a.

Podpora je také k dispozici pro nové programovací rozhraní pro příjem a interakci s připojením protokolu WebSocket pomocí existující HttpListener a související třídy. Další informace naleznete v tématu nový System.Net.WebSockets obor názvů a HttpListener Třída.

Kromě toho .NET Framework 4,5 obsahuje následující vylepšení sítě:

  • Podpora identifikátoru URI kompatibilního se specifikací RFC. Další informace naleznete v tématu Uri a související třídy.

  • Podpora pro analýzu mezinárodních názvů domén (IDN). Další informace naleznete v tématu Uri a související třídy.

  • Podpora mezinárodní adresy e-mailové adresy (EAI). Další informace najdete v tématu System.Net.Mail obor názvů.

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

  • Podpora soketu s duálním režimem. Další informace naleznete v tématu Socket třídy a TcpListener .

Windows Presentation Foundation (WPF)

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

  • Nový ovládací 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íší psaní a údržbu Windows Communication Foundation (WCF):

  • 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 ?singleWSDL k adrese URL služby.

  • Podpora WebSockets podporuje true obousměrnou komunikaci přes porty 80 a 443 s charakteristikami výkonu podobným přenosu protokolu 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í:

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

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

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

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

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

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

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

  • Uložení informací o stavu zobrazení pro pracovní postup v jednom prvku v souboru XAML, takže můžete snadno vyhledat a upravit informace o stavu zobrazení.

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

  • Podpora výrazů jazyka C#:

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

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

  • Vylepšení verzí:

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

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

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

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

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

Aplikace .NET pro Windows 8.x Store

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

Přenositelné knihovny tříd

Přenosná knihovna tříd projektu v aplikaci Visual Studio 2012 (a novějších verzích) umožňuje psát a sestavovat spravovaná sestavení, která fungují na více .NET Framework platformách. Pomocí přenositelného projektu knihovny tříd zvolíte platformy (například Windows Phone a .NET pro aplikace pro Windows 8. x Store) 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é