.NET Framework'daki .NET Framework

Not

.NET Framework 4.8, sürümün son .NET Framework. .NET Framework güvenlik ve güvenilirlik hata düzeltmeleri ile aylık olarak sunulmaktadır. .NET Framework, kaldırmayı planlamayacak şekilde Windows'ye dahil olmaya devam eder. Uygulama uygulamalarınızı geçirmeniz .NET Framework, ancak yeni geliştirme için .NET 5 veya sonraki bir kullanın.

Bu makalede, aşağıdaki sürümlerdeki temel yeni özellikler ve geliştirmeler özet .NET Framework:

Bu makale, her yeni özellik hakkında kapsamlı bilgi sağlamaz ve değişebilir. Daha fazla bilgi için .NET Framework bkz. Başlarken. Desteklenen platformlar için bkz. Sistem Gereksinimleri. İndirme bağlantıları ve yükleme yönergeleri için bkz. Yükleme Kılavuzu.

Not

.NET Framework ekibi ayrıca platform desteğini genişletmek ve sabit koleksiyonlar ve SIMD özellikli vektör türleri gibi yeni işlevler eklemek için NuGet kullanarak bant dışı özellikler de yayımlar. Daha fazla bilgi için bkz. Ek Sınıf Kitaplıkları ve API'.NET Framework Ve Bant Dışında Sürümler. Daha fazla bilgi için NuGet tam listesine .NET Framework.

4.8 .NET Framework ile ilgili tanıtım

.NET Framework 4.8, çok kararlı bir ürün kalan birçok yeni düzeltme ve birkaç yeni özellik ekleyerek .NET Framework 4.x'in önceki sürümlerini temel almaktadır.

.NET Framework 4.8'i indirme ve yükleme

4.8 .NET Framework aşağıdaki konumlardan indirebilirsiniz:

.NET Framework 4.8, Windows 10, Windows 8.1, Windows 7 SP1 ve Windows Server 2008 R2 SP1 ile başlayan ilgili sunucu platformlarına yükleyebilir. Web yükleyicisini .NET Framework çevrimdışı yükleyiciyi kullanarak .NET Framework 4.8'i yükleyebilirsiniz. Kullanıcıların çoğu için önerilen yol, web yükleyicisini kullanmaktır.

.NET Framework 4.8 Geliştirici Paketini yükleyerek Visual Studio 2012 veya sonraki bir .NET Framework 4.8'i hedefleyebilirsiniz.

.NET Framework 4.8'de yapılan yeniler

.NET Framework 4.8'de aşağıdaki alanlarda yeni özellikler tanıtıldı:

Bir uygulamanın Yardımcı Teknoloji kullanıcıları için uygun bir deneyim sağlamalarına olanak sağlayan geliştirilmiş erişilebilirlik, 4.8'in en önemli odak noktası .NET Framework devam ediyor. .NET Framework 4.8'de erişilebilirlik geliştirmeleri hakkında bilgi için bkz. .NET Framework.

Temel sınıflar

Şifreleme üzerinde daha az FIPS etkisi. Önceki .NET Framework sürümlerinde, SHA256ManagedCryptographicException sistem şifreleme kitaplıkları "FIPS modunda" yapılandırıldığında bir at gibi yönetilen şifreleme sağlayıcısı sınıfları. Bu özel durumlar, sistem şifreleme kitaplıklarının aksine şifreleme sağlayıcısı sınıflarının yönetilen sürümleri FIPS (Federal Bilgi İşleme Standartları) 140-2 sertifikasına sahip değildir. Birkaç geliştiricinin geliştirme makineleri FIPS modunda olduğundan, üretim sistemlerinde genellikle özel durumlar oluşturur.

Varsayılan olarak, .NET Framework 4.8'i hedef alan uygulamalarda aşağıdaki yönetilen şifreleme sınıfları artık bir CryptographicException atamaz:

Bunun yerine, bu sınıflar şifreleme işlemlerini bir sistem şifreleme kitaplığına yeniden yönlendirmektedir. Bu değişiklik, geliştirici ortamları ile üretim ortamları arasındaki kafa karıştırıcı olabilecek farkı etkili bir şekilde ortadan kaldırır ve yerel bileşenlerin ve yönetilen bileşenlerin aynı şifreleme ilkesi altında çalışmasına neden olur. Bu özel durumlara bağımlı uygulamalar, AppContext anahtarını olarak ayarlayarak önceki davranışı geri Switch.System.Security.Cryptography.UseLegacyFipsThrow yükleyebilir true. Daha fazla bilgi için bkz. Yönetilen şifreleme sınıfları FIPS modunda ŞifrelemeException atmamaktadır.

ZLib'in güncelleştirilmiş sürümünün kullanımı

.NET Framework 4.5'den başlayarak, clrcompression.dll derlemesi, veri sıkıştırma için yerel bir dış kitaplık olan ZLib'i kullanarak havayı sönen algoritmaya yönelik bir uygulama sağlar. .NET Framework 4.8 sürümüclrcompression.dll çeşitli önemli geliştirmeler ve düzeltmeler içeren ZLib Sürüm 1.2.11'i kullanmak üzere güncelleştirilir.

Windows Communication Foundation (WCF)

ServiceHealthBehavior'a Giriş

Durum uç noktaları, hizmetleri durumlarına göre yönetmek için düzenleme araçları tarafından yaygın olarak kullanılır. Sistem durumu denetimleri, izleme araçları tarafından bir hizmetin kullanılabilirliği ve performansı hakkında bildirimler izlemek ve sağlamak için de kullanılabilir.

ServiceHealthBehavior , genişleten bir WCF hizmet davranışıdır IServiceBehavior. Koleksiyona eklenmiştir ServiceDescription.Behaviors , hizmet davranışı şunları yapar:

  • HTTP yanıt kodlarıyla hizmet durumu döndürür. Sorgu dizesinde HTTP/GET durum yoklama isteği için HTTP durum kodunu belirtebilirsiniz.

  • Hizmet durumu hakkında bilgi yayımlar. Hizmet durumu, kısıtlama sayıları ve kapasite gibi hizmete özgü ayrıntılar, sorgu dizesiyle bir HTTP/GET isteği ?health kullanılarak görüntülenebilir. Bu tür bilgilere erişim kolaylığı, yanlış wcF hizmetinin hatasını giderirken önemlidir.

Durum uç noktasını ortaya çıkarmanın ve WCF hizmeti durum bilgilerini yayımlamanın iki yolu vardır:

  • Kod aracılığıyla. Örnek:

    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)
    
  • Yapılandırma dosyası kullanarak. Örnek:

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

Bir hizmetin durum durumu, ve gibi sorgu parametreleri OnServiceFailureOnDispatcherFailureOnListenerFailureOnThrottlePercentExceededkullanılarak sorguilebilir ve her sorgu parametresi için bir HTTP yanıt kodu belirtilebilir. Http yanıt kodu bir sorgu parametresi için atlanırsa, varsayılan olarak 503 HTTP yanıt kodu kullanılır. Örnek:

Sorgu parametreleri ve örnekleri:

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

    Kanal dağıtıcılarının herhangi biri durumundan büyük olduğunda 455 HTTP yanıt durum kodu döndürülür CommunicationState.Opened.

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

    Kanal dinleyicilerinin herhangi biri durumundan büyük olduğunda 465 HTTP yanıt durum kodu döndürülür CommunicationState.Opened.

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

    Yanıtı tetikleyen {1 – 100} yüzdesini ve http yanıt kodunu {200 – 599} belirtir. Bu örnekte:

    • Yüzde 95'in üzerinde ise 500 HTTP yanıt kodu döndürülür.

    • Yüzde 70 ile 95 arasında ise 350 döndürülür.

    • Aksi takdirde 200 döndürülür.

Hizmet durumu, gibi bir sorgu dizesi belirterek HTML'de https://contoso:81/Service1?health veya XML'de gibi bir sorgu dizesi belirterek görüntülenebilir https://contoso:81/Service1?health&Xml. gibi bir sorgu dizesi https://contoso:81/Service1?health&NoContent boş bir HTML sayfası döndürür.

Windows Presentation Foundation (WPF)

Yüksek DPI geliştirmeleri

4.NET Framework 4.8'de WPF, Per-Monitor V2 DPI Tanıma ve DPI Mixed-Mode desteği ekler. Yüksek DPI geliştirme hakkında daha fazla bilgi Windows için bkz. Yüksek DPI Masaüstü Uygulama Geliştirme.

.NET Framework 4.8, Mixed-Mode DPI ölçeklendirmeyi destekleyen platformlarda (Nisan 2018 Güncelleştirmesi'Windows 10 başlayarak) High-DPI WPF uygulamalarında barındırılan HWND'ler ve Windows Forms birlikte çalışabilirliği desteğini geliştirmektedir. Barındırılan HWND'ler veya Windows Forms denetimleri SetThreadDpiHostingBehavior ve SetThreadDpiAwarenessContext çağrılarak Mixed-Mode DPI ölçeğinde windows olarak oluşturulduğunda, bir Per-Monitor V2 WPF uygulamasında barındırıp uygun şekilde boyutlandırıp ölçeklendirebilirler. Bu tür barındırılan içerik yerel DPI'de işlanmaz; bunun yerine, işletim sistemi barındırılan içeriği uygun boyuta ölçeklendirer. Per-Monitor v2 DPı tanıma moduna yönelik destek Ayrıca, WPF denetimlerinin yüksek DPı uygulamasındaki yerel bir pencerede barındırılmasına (yani, üst öğe) olanak tanır.

Mixed-Mode yüksek DPı ölçeklendirme desteğini etkinleştirmek için aşağıdaki AppContext anahtarlarını uygulama yapılandırma dosyasına ayarlayabilirsiniz:

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

Ortak dil çalışma zamanı

.NET Framework 4,8 ' deki çalışma zamanı aşağıdaki değişiklikleri ve geliştirmeleri içerir:

JIT derleyicisi geliştirmeleri. .NET Framework 4,8 ' deki tam zamanında (jıt) derleyici .net Core 2,1 ' de jıt derleyicisine dayanır. .net Core 2,1 jıt derleyicisi üzerinde yapılan en iyileştirmelerin ve tüm hata düzeltmelerinin çoğu, .NET Framework 4,8 jıt derleyicisine dahildir.

Ngen geliştirmeleri. Çalışma zamanı, Yerel Görüntü Oluşturucu (NGen) görüntüleri için bellek yönetimini iyileştirmiştir, bu sayede Ngen görüntülerinden eşlenen verilerin bellekte yerleşik olmaması sağlanır. Bu, yürütülecek belleği değiştirerek bu yüzey alanını rastgele kodu yürütmeye çalışacak saldırılara karşı azaltır.

Tüm derlemeler Için kötü amaçlı yazılımdan koruma taraması. önceki .NET Framework sürümlerinde, çalışma zamanı diskten yüklenen tüm derlemeleri Windows Defender veya üçüncü taraf kötü amaçlı yazılımdan koruma yazılımı kullanarak tarar. Ancak, yöntemi gibi diğer kaynaklardan Assembly.Load(Byte[]) yüklenen derlemeler taranmaz ve olası algılanabilecek kötü amaçlı yazılımları içerebilir. Windows 10 üzerinde çalışan .NET Framework 4,8 ' den başlayarak, çalışma zamanı kötü amaçlı yazılımdan koruma taraması arabirimini (amsı)uygulayan kötü amaçlı yazılımdan koruma çözümleri tarafından bir taramayı tetikler.

.NET Framework 4.7.2 yenilikleri

.NET Framework 4.7.2, aşağıdaki alanlardaki yeni özellikler içerir:

.NET Framework 4.7.2 ' ye odaklanmaya devam etmek, bir uygulamanın yardımcı teknoloji kullanıcıları için uygun bir deneyim sağlamasına olanak tanıyan bir uygulamadır. .NET Framework 4.7.2 ' deki erişilebilirlik geliştirmeleri hakkında daha fazla bilgi için, bkz. erişilebilirlik 'deki yenilikler .NET Framework.

Temel sınıflar

.NET Framework 4.7.2, çok sayıda şifreleme geliştirmesi, zıp arşivleri için daha iyi açma desteği ve ek koleksiyon apı 'leri sunar.

Yeni RSA aşırı yüklemeleri. Ve DSA oluştur. Oluşturma

Ve RSA.Create(RSAParameters) yöntemleri, DSA.Create(DSAParameters) Yeni DSA veya RSA anahtar örneği oluşturulurken anahtar parametreleri vermenizi sağlar. Bunlar, aşağıdaki gibi bir kod değiştirmenizi sağlar:

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

Şu şekilde kodla:

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

Ve yöntemleri, DSA.Create(Int32) belirli bir anahtar boyutuyla yeni DSA veya RSA anahtarlar oluşturmanıza imkan RSA.Create(Int32) tanır. Örnek:

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

Rfc2898DeriveBytes oluşturucular bir karma algoritma adı kabul eder

Rfc2898DeriveBytesSınıfında, anahtarları türetmede kullanılacak HMAC algoritmasını tanımlayan bir HashAlgorithmName parametreye sahip üç yeni Oluşturucu vardır. Geliştiriciler, SHA-1 kullanmak yerine, aşağıdaki örnekte gösterildiği gibi SHA-256 gibi bir SHA-2 tabanlı HMAC kullanmalıdır:

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

Kısa ömürlü anahtarlar için destek

PFX içeri aktarma isteğe bağlı olarak, sabit sürücüyü atlayarak özel anahtarları doğrudan bellekten yükleyebilir. Yeni X509KeyStorageFlags.EphemeralKeySet bayrak bir X509Certificate2 oluşturucuda veya metodun aşırı X509Certificate2.Import yüklerinden birinde belirtildiğinde, özel anahtarlar kısa ömürlü anahtarlar olarak yüklenecektir. Bu, anahtarların diskte görünmesini önler. Ancak:

  • Anahtarlar diske kalıcı olmadığından, bu bayrağıyla yüklenen sertifikalar bir X509Store eklemek için iyi aday değildir.

  • bu şekilde yüklenen anahtarlar Windows CNG aracılığıyla neredeyse her zaman yüklenir. Bu nedenle, çağıranlar, CERT gibi uzantı yöntemlerini çağırarak özel anahtara erişmelidir . GetRSAPrivateKey (). X509Certificate2.PrivateKeyÖzellik çalışmıyor.

  • Eski X509Certificate2.PrivateKey özellik sertifikalarla çalışmadıklarından, geliştiricilerin kısa ömürlü anahtarlara geçmeden önce ciddi testler gerçekleştirmesi gerekir.

PKCS # 10 sertifika imzalama istekleri ve X. 509.440 ortak anahtar sertifikalarının programlı bir şekilde oluşturulması

.NET Framework 4.7.2 ' den itibaren, iş yükleri sertifika imzalama istekleri (csr) oluşturabilir ve bu da sertifika isteği oluşturma 'nın var olan araç halinde hazırlanmasını sağlar. Bu, genellikle test senaryolarında yararlı olur.

Daha fazla bilgi ve kod örnekleri için .net blogda"PKCS # 10 sertifika imzalama Isteklerinin ve X. 509.440 ortak anahtar sertifikalarının programlı oluşturulması" başlığına bakın.

Yeni SignerInfo üyeleri

.NET Framework 4.7.2 ile başlayarak, SignerInfo sınıfı imza hakkında daha fazla bilgi sunar. İmzalayan tarafından kullanılan imza algoritmasını belirleyebilmek için özelliğinin değerini System.Security.Cryptography.Pkcs.SignerInfo.SignatureAlgorithm alabilirsiniz. SignerInfo.GetSignature , bu imzalayan için şifreleme imzasının bir kopyasını almak üzere çağrılabilir.

CryptoStream atıldıktan sonra sarmalanmış bir akışın açılmasını bırakma

.NET Framework 4.7.2 ile başlayarak, CryptoStream sınıfı sarmalanmış akışı kapatmayan ek bir oluşturucuya Dispose sahiptir. Örnek atıldıktan sonra CryptoStream sarmalanmış akışı açık bırakmak için yeni CryptoStream oluşturucuyu aşağıdaki gibi çağırın:

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

DeflateStream 'de değişiklikleri açma

.NET Framework 4.7.2 ile başlayarak, sınıftaki açma işlemlerinin DeflateStream uygulanması, varsayılan olarak yerel Windows apı 'leri kullanacak şekilde değiştirilmiştir. Genellikle bu, önemli ölçüde performans geliştirmesine neden olur.

Windows apı 'leri kullanarak açma desteği, .NET Framework 4.7.2 hedefleyen uygulamalar için varsayılan olarak etkinleştirilmiştir. .NET Framework önceki sürümlerini hedefleyen ancak .NET Framework 4.7.2 altında çalışan uygulamalar, uygulama yapılandırma dosyasına aşağıdaki appcontext anahtarını ekleyerek bu davranışı kabul edebilir:

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

Ek koleksiyon API 'Leri

.NET Framework 4.7.2, SortedSet<T> ve HashSet<T> türlerine bir dizi yeni apı ekler. Bu modüller şunlardır:

ConcurrentDictionary<TKey,TValue>Sınıfı, sözlükten bir değer almak veya bulunamadıysanız eklemek ve sözlüğe bir değer eklemek ya da zaten varsa güncelleştirmek için ve GetOrAdd yöntemlerinin yeni aşırı yüklerini AddOrUpdate içerir.

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

Web Forms bağımlılık ekleme desteği

Bağımlılık ekleme (dı) nesneleri ve bağımlılıklarını ayırır, böylece bir bağımlılık değiştiği için nesnenin kodunun artık değişmesi gerekmez. .NET Framework 4.7.2 hedefleyen ASP.NET uygulamalar geliştirirken şunları yapabilirsiniz:

Aynı site tanımlama bilgileri için destek

SameSite , bir tarayıcının bir siteler arası istekle birlikte tanımlama bilgisi göndermesini engeller. .NET Framework 4.7.2, değeri bir System.Web.SameSiteMode numaralandırma üyesi olan bir HttpCookie.SameSite özellik ekler. eğer değeri veya SameSiteMode.Lax ise SameSiteMode.Strict , ASP.NET özniteliği set-cookie başlığına ekler SameSite . SameSite desteğinin, ve için FormsAuthentication ve System.Web.SessionState tanımlama bilgilerinin yanı sıra nesneler için HttpCookie de geçerlidir.

Bir HttpCookie nesne Için SameSite öğesini aşağıdaki gibi ayarlayabilirsiniz:

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

Ayrıca, web.config dosyasını değiştirerek, uygulama düzeyinde de SameSite tanımlama bilgilerini yapılandırabilirsiniz:

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

Web yapılandırma dosyasını değiştirerek, ve System.Web.SessionState tanımlama bilgilerini Için FormsAuthentication SameSite ekleyebilirsiniz:

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

HttpClientHandler özelliklerinin uygulanması

.NET Framework 4.7.1, System.Net.Http.HttpClientHandler sınıfa sekiz özellik ekledi. Ancak, iki olarak bir PlatformNotSupportedException oluşturdu. .NET Framework 4.7.2 artık bu özellikler için bir uygulama sağlar. Özellikler şunlardır:

SQLClient

Azure Active Directory evrensel kimlik doğrulaması ve çok faktörlü kimlik doğrulaması desteği

Artan uyumluluk ve güvenlik talepleri birçok müşterinin çok faktörlü Authentication (MFA) kullanmasını gerektirir. Ayrıca, geçerli en iyi uygulamalar Kullanıcı parolalarını doğrudan bağlantı dizelerine dahil etmekten kaçınarak. Bu değişiklikleri desteklemek için .NET Framework 4.7.2, MFA ve Azure AD Kimlik Doğrulamasını desteklemek için mevcut "Kimlik Doğrulaması" anahtar sözcüğü için yeni bir "Active Directory Interactive" değeri ekleyerek SQLClient bağlantı dizelerini genişleter. Yeni etkileşimli yöntem, yerel ve federasyon Azure AD kullanıcılarının yanı sıra Azure AD konuk kullanıcılarını da destekler. Bu yöntem kullanılırken, Azure AD tarafından dayatılan MFA kimlik doğrulaması, SQL için de destek alır. Ayrıca kimlik doğrulama işlemi, en iyi güvenlik yöntemlerine uyması için bir kullanıcı parolası gerektirir.

Önceki sürümlerde .NET Framework, SQL ve seçeneklerini SqlAuthenticationMethod.ActiveDirectoryPassword desteklemiştiSqlAuthenticationMethod.ActiveDirectoryIntegrated. Bunların her ikisi de MFA'nın destekçisi olmayan etkileşimli olmayan ADAL protokolünün bir parçası. Yeni seçenekleSqlAuthenticationMethod.ActiveDirectoryInteractive, SQL bağlantı MFA'nın yanı sıra mevcut kimlik doğrulama yöntemlerini de (parola ve tümleşik kimlik doğrulaması) destekler. Bu yöntemler, kullanıcıların bağlantı dizesinde kalıcı parolalar olmadan etkileşimli olarak kullanıcı parolaları girmelerini sağlar.

Daha fazla bilgi ve örnek için .NET Blog SQL da "SQL -- Azure AD Evrensel ve Çok Faktörlü Kimlik Doğrulama Desteği" 'ne bakın.

Sürüm 2 Always Encrypted için destek

NET Framework 4.7.2, enclave tabanlı Always Encrypted. Always Encrypted' Always Encrypted, şifreleme anahtarlarının istemciden asla ayrılmayılacağı bir istemci tarafı şifreleme teknolojisidir. Enclave tabanlı Always Encrypted'da, istemci isteğe bağlı olarak şifreleme anahtarlarını güvenli bir yerleşime gönderebilir. Bu, SQL Server'nin parçası olarak kabul edilebilir ancak SQL Server kodunun üzerinde oynanamaz. .NET Framework 4.7.2, Always Encrypted tabanlı veri türlerini ve üyelerini desteklemek için ad alanına aşağıdaki türleri ve üyeleri System.Data.SqlClient ekler:

Uygulama yapılandırma dosyası daha sonra soyut sınıfın, enclave System.Data.SqlClient.SqlColumnEncryptionEnclaveProvider sağlayıcısı için işlevselliği sağlayan somut bir uygulamasını belirtir. Örnek:

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

Enclave tabanlı veri akışının Always Encrypted:

  1. Kullanıcı, enclave tabanlı şifrelemeyi destekleyen SQL Server alwaysEncrypted Always Encrypted. Sürücü, doğru enclave'ye bağlana olduğundan emin olmak için doğru hizmetle iletişimdedir.

  2. Enclave test edildiktan sonra sürücü, SQL Server üzerinde barındırılan güvenli bir yerleşim ile güvenli bir kanal SQL Server.

  3. Sürücü, istemci tarafından yetkilendirilen şifreleme anahtarlarını bağlantının süresince güvenli SQL kullanır.

Windows Presentation Foundation

Kaynağa Göre ResourceDictionaries Bulma

4.7.2.NET Framework den başlayarak bir ResourceDictionaries tanılama yardımcısı, verili bir kaynak Uri'lerinden oluşturulmuş olan'ı bulur. (Bu özellik, üretim uygulamaları tarafından değil tanılama yardımcıları tarafından kullanılır.) Visual Studio'ın "Düzenle ve Devam" özelliği gibi bir tanılama yardımcısı, kullanıcının resourceDictionary'yi, değişikliklerin çalışan uygulamaya uygulanması amacıyla düzenlemesine olanak sağlar. Bunu başarma adımlarından biri, çalışan uygulamanın düzende olan sözlükten oluşturduğu tüm ResourceDictionaries'ları bulmaktır. Örneğin, bir uygulama, içeriği belirli bir kaynak URI'den kopyalanan bir ResourceDictionary bildirebilir:

<ResourceDictionary Source="MyRD.xaml" />

MyRD.xaml'de özgün işaretlemeyi düzenleten bir tanılama yardımcısı, sözlüğü bulmak için yeni özelliği kullanabilir. Özellik, yeni bir statik yöntem tarafından uygulanır. ResourceDictionaryDiagnostics.GetResourceDictionariesForSource Tanılama yardımcısı, aşağıdaki kodda gösterildiği gibi özgün işaretlemeyi tanımlayan mutlak Uri'yi kullanarak yeni yöntemi arar:

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

yöntemi, etkinleştirilmediği ve ortam değişkeni ayarlanmadıkça VisualDiagnostics boş bir ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO numaralanabilir döndürür.

ResourceDictionary sahiplerini bulma

4.7.2.NET Framework den başlayarak, tanılama yardımcısı verilen bir 'nin sahiplerini bulmalıdırResourceDictionary. (Bu özellik, üretim uygulamaları tarafından değil tanılama yardımcıları tarafından kullanılır.) Bir 'de her değişiklik olduğunda ResourceDictionary, WPF değişiklikten etkilenecek tüm DynamicResource başvurularını otomatik olarak bulur.

Visual Studio'nin "Düzenle ve Devam" tesisi gibi bir tanılama yardımcısı staticResource başvurularını işlemek için bunu genişletmek istiyor olabilir. Bu sürecin ilk adımı sözlüğün sahiplerini bulmaktır; başka bir ifadeyle, özelliği sözlüğüne başvuran Resources tüm nesneleri bulmak için (doğrudan veya dolaylı olarak özelliği aracılığıyla ResourceDictionary.MergedDictionaries ). sınıfında uygulanan üç yeni statik yöntem System.Windows.Diagnostics.ResourceDictionaryDiagnostics , bir özelliği olan temel türlerin Resources her biri için bu adımı destekler:

Bu yöntemler, etkinleştirilmediği ve ortam değişkeni ayarlanmadıkça VisualDiagnostics boş bir ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO numaralanabilir değer sunar.

StaticResource başvurularını bulma

Artık bir StaticResource başvurusu çözümlense bir tanılama yardımcısı bildirim alır. (Bu özellik, üretim uygulamaları tarafından değil tanılama yardımcıları tarafından kullanılır.) Visual Studio'nin "Düzenle ve Devam" özelliği gibi bir tanılama yardımcısı, bir kaynağın bir değerde değişiklik olduğunda tüm kullanımlarını güncelleştirmek istiyor ResourceDictionary olabilir. WPF bunu DynamicResource başvuruları için otomatik olarak yapar, ancak StaticResource başvuruları için kasıtlı olarak bunu yapmaz. 4.7.2.NET Framework den başlayarak tanılama yardımcısı statik kaynağın bu kullanımlarını bulmak için bu bildirimleri kullanabilir.

Bildirim yeni olay tarafından uygulanır ResourceDictionaryDiagnostics.StaticResourceResolved :

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

Çalışma zamanı StaticResource başvurularını çözümleyene kadar bu olay ortaya çıkar. Bağımsız StaticResourceResolvedEventArgs değişkenler çözümlemeyi açıklar ve StaticResourceResourceDictionary başvurularını ve çözümleme için kullanılan ve anahtarını barındıran nesne ve özelliği gösterir:

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

Etkin ve ortam değişkeni ayarlanmazsa add olay yükseltilmadı VisualDiagnostics (ve erişimcisi ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO yoksayılır).

ClickOnce

Windows Forms, Windows Presentation Foundation (WPF) ve Office için Visual Studio Araçları (VSTO) için HDPI kullanan uygulamaların hepsi ClickOnce. Uygulama bildiriminde aşağıdaki girdi bulunursa, dağıtım 4.7.2 .NET Framework başarılı olur:

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

Daha Windows Forms için, uygulama bildirimi yerine uygulama yapılandırma dosyasında DPI tanımayı ayarlamaya yönelik önceki geçici çözüm, dağıtımın başarılı olması ClickOnce artık gerekli değildir.

.NET Framework 4.7.1'daki yeniler

.NET Framework 4.7.1 aşağıdaki alanlarda yeni özellikler içerir:

Buna ek olarak, .NET Framework 4.7.1'e odaklanan önemli bir odak noktası, bir uygulamanın Yardımcı Teknoloji kullanıcıları için uygun bir deneyim sağlamalarını sağlayan geliştirilmiş erişilebilirliktir. .NET Framework 4.7.1'de erişilebilirlik geliştirmeleri hakkında bilgi için bkz. .NET Framework.

Temel sınıflar

.NET Standard 2.0 desteği

.NET Standard , standardın bu sürümünü destekleyen her .NET uygulamasında kullanılabilir olması gereken bir DIZI API tanımlar. .NET Framework 4.7.1, .NET Standard 2.0'i tam olarak destekler ve .NET Standard 2.0'da tanımlanan ve .NET Framework 4.6.1, 4.6.2 ve 4.7'de eksik olan yaklaşık 200 API ekler. (Bu .NET Framework sürümlerinin, .NET Standard ek destek .NET Standard hedef sisteme de dağıtıldığında 2.0 sürümünü desteklemektedir.) Daha fazla bilgi için .NET Framework 4.7.1 Çalışma Zamanı ve Derleyici Özellikleri blog gönderisinde "BCL - .NET Standard 2.0 Desteği" 'ne bakın.

Yapılandırma oluşturucuları desteği

Yapılandırma oluşturucuları, geliştiricilerin çalışma zamanında uygulamalar için yapılandırma ayarlarını dinamik olarak eklemesine ve oluşturmasına olanak sağlar. Özel yapılandırma oluşturucuları, bir yapılandırma bölümündeki mevcut verileri değiştirmek veya tamamen sıfırdan bir yapılandırma bölümü oluşturmak için kullanılabilir. Yapılandırma oluşturucuları olmadan, .config dosyalar statiktir ve ayarları bir uygulama başlatılamadan önce tanımlanır.

Özel bir yapılandırma oluşturucu oluşturmak için, oluşturucularınızı soyut sınıftan türetin ve ConfigurationBuilder ve geçersiz ConfigurationBuilder.ProcessConfigurationSection kılın ConfigurationBuilder.ProcessRawXml. Oluşturucularınızı dosyanıza da .config. Daha fazla bilgi için .NET Framework 4.7.1 ASP.NET ve Yapılandırma Özellikleri blog gönderisinin "Yapılandırma Oluşturucuları" bölümüne bakın.

Çalışma zamanı özellik algılama

sınıfı System.Runtime.CompilerServices.RuntimeFeature , derleme zamanında veya çalışma zamanında belirli bir .NET uygulamasında önceden tanımlanmış bir özelliğin desteklenmiş olup olmadığını belirlemek için bir mekanizma sağlar. Derleme zamanında, bir derleyici özelliğin desteklenmiş olup olmadığını belirlemek için belirtilen bir alanın mevcut olup olmadığını kontrol eder; varsa, bu özelliğin avantajını alan kodu yalıtabilir. Çalışma zamanında, bir uygulama çalışma zamanında kod RuntimeFeature.IsSupported yaymadan önce yöntemini çağırabilir. Daha fazla bilgi için bkz . Çalışma zamanı tarafından desteklenen özellikleri açıklamak için yardımcı yöntem ekleme.

Değer tuple türleri serileştirilebilir

4.7.1 .NET Framework başlayarak ve ilişkili genel türleri, System.ValueTuple ikili serileştirmeye olanak sağlayan Serializable olarak işaretlenir. Bu, ve gibi Tuple türlerinin değer tuple türlerine Tuple<T1,T2,T3>Tuple<T1,T2,T3,T4>daha kolay hale getirir. Daha fazla bilgi için .NET Framework 4.7.1 Çalışma Zamanı ve Derleyici Özellikleri blog gönderisinde yer alan "Derleyici -- ValueTuple Serileştirilebilir" modülüne bakın.

Salt okunur başvuru desteği

.NET Framework 4.7.1 eklerSystem.Runtime.CompilerServices.IsReadOnlyAttribute. Bu öznitelik, salt okunur başvuru dönüş türlerine veya parametrelerine sahip üyeleri işaretlemek için dil derleyicileri tarafından kullanılır. Daha fazla bilgi için .NET Framework 4.7.1 Çalışma Zamanı ve Derleyici Özellikleri blog gönderisinde yer alan "Derleyici -- ReadOnlyReferences desteği" makalesini okuyun. Başvuru dönüş değerleri hakkında bilgi için bkz. Başvuru dönüş değerleri ve başvuru yerel değerleri (C# Kılavuzu)ve Başvuru dönüş değerleri (Visual Basic).

Ortak dil çalışma zamanı (CLR)

Atık toplama performansı geliştirmeleri

.NET Framework 4.7.1'de atık toplama (GC) değişiklikleri, özellikle büyük nesne yığını (LOH) ayırmaları için genel performansı artırır. 4.7.1 .NET Framework'de, arka plan GC SOH'yı tararken LOH ayırmalarının gerçekleşmesini sağlayan küçük nesne yığını (SOH) ve LOH ayırmaları için ayrı kilitler kullanılır. Sonuç olarak, çok sayıda LOH ayırması yapılan uygulamalar, ayırma kilidinde bir azalma ve gelişmiş performans görmeli. Daha fazla bilgi için .NET Framework 4.7.1 Çalışma Zamanı ve Derleyici Özellikleri blog gönderisinin "Çalışma Zamanı -- GC Performans Geliştirmeleri" bölümüne bakın.

Message.HashAlgorithm için SHA-2 desteği

4.NET Framework 4.7 ve önceki sürümlerde özelliği Message.HashAlgorithm yalnızca ve değerlerini HashAlgorithm.Md5HashAlgorithm.Sha destekliyor. 4.7.1, , HashAlgorithm.Sha256HashAlgorithm.Sha384ve .NET Framework ile başlayarak HashAlgorithm.Sha512 da destekleni. Örneğin kendisi karma uygulamaz ancak değerleri MSMQ'ya iletir. Bu değerin gerçekten kullanılagelip kullanılmaması MSMQ'ya Message bağlıdır. Daha fazla bilgi için, .NET Framework 4.7.ASP.NET 1 ve Yapılandırma özellikleri blog gönderisinde "Message.HashAlgorithm için SHA-2 desteği" bölümüne bakın.

ASP.NET

ASP.NET uygulamalardaki yürütme adımları

ASP.NET, 23 olay içeren önceden tanımlanmış bir işlem hattındaki istekleri işler. ASP.NET her olay işleyicisini yürütme adımı olarak yürütür. ASP.NET .NET Framework 4,7 ' e kadar olan sürümlerinde, ASP.NET yerel ve yönetilen iş parçacıkları arasında geçiş nedeniyle yürütme bağlamını akamaz. bunun yerine, ASP.NET yalnızca HttpContext öğesini seçmeli olarak akar. yöntemi, .NET Framework 4.7.1 ile başlayarak, HttpApplication.OnExecuteRequestStep(Action<HttpContextBase,Action>) ayrıca modüllerin çevresel verileri geri yüklemesine olanak tanır. Bu özellik, izleme, profil oluşturma, tanılama veya işlemlerle ilgili kitaplıklara, örneğin, uygulamanın yürütme akışı hakkında endişeleri hedefleder. daha fazla bilgi için, .NET Framework 4.7.1 ASP.NET ve yapılandırma özellikleri blog gönderisine "ASP.NET yürütme adımı özelliği" ne bakın.

ASP.NET httpcookie ayrıştırma

.NET Framework 4.7.1, bir dizeden bir nesne oluşturmak HttpCookie için standartlaştırılmış bir yol sağlayan ve sona erme tarihi ve yolu gibi tanımlama bilgisi değerlerini doğru şekilde atayan yeni bir yöntemi HttpCookie.TryParse içerir. daha fazla bilgi için, .NET Framework 4.7.1 ASP.NET ve yapılandırma özellikleri blog gönderisine "ASP.NET httpcookie ayrıştırma" konusuna bakın.

ASP.NET forms kimlik doğrulama kimlik bilgileri için SHA-2 karma seçenekleri

.NET Framework 4,7 ve önceki sürümlerde, izin verilen geliştiricilerin, MD5 veya SHA1 kullanarak yapılandırma dosyalarında karma parolalara sahip kullanıcı kimlik bilgilerini depolamasına ASP.NET. .NET Framework 4.7.1 ile başlayarak, ASP.NET SHA256, SHA384 ve sha512 olur gibi yeni bir güvenli SHA-2 karma seçenekleri de destekler. SHA1 varsayılan olarak kalır ve varsayılan olmayan bir karma algoritması Web yapılandırma dosyasında tanımlanabilir. Örnek:

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

.NET Framework 4,7 ' deki yenilikler

.NET Framework 4,7, aşağıdaki alanlardaki yeni özellikler içerir:

.NET Framework 4,7 ' ye eklenen yeni apı 'lerin bir listesi için, bkz. GitHub .NET Framework 4,7 apı değişiklikleri . .NET Framework 4,7 ' deki özellik geliştirmeleri ve hata düzeltmeleri listesi için GitHub üzerindeki değişikliklerin .NET Framework 4,7 listesine bakın. daha fazla bilgi için bkz. .net blogda .NET Framework 4,7 duyurusu .

Temel sınıflar

.NET Framework 4,7 tarafından DataContractJsonSerializer serileştirme şunu geliştirir:

Eliptik Eğri şifrelemesi (ECC) ile gelişmiş işlevsellik*

.NET Framework 4,7 ' de, ImportParameters(ECParameters) bir nesnenin zaten oluşturulmuş bir anahtarı göstermesini sağlamak için ve ECDiffieHellman sınıflarına yöntemler eklenmiştir ECDsa . Açık eğri parametreleri kullanılarak anahtarı dışarı aktarmak için bir ExportParameters(Boolean) Yöntem de eklenmiştir.

.NET Framework 4,7 ayrıca ek eğriler (Brainpool eğrisi paketi dahil) için destek de ekler ve yeni Create ve Create fabrika yöntemleriyle oluşturma kolaylığı için önceden tanımlanmış tanımlar ekledi.

GitHub .NET Framework 4,7 şifreleme geliştirmelerinden oluşan bir örnek görebilirsiniz.

DataContractJsonSerializer tarafından denetim karakterleri için daha iyi destek

.NET Framework 4,7 ' de, DataContractJsonSerializer sınıf ECMAScript 6 standardı ile uyum içindeki denetim karakterlerini seri hale getirir. bu davranış, .NET Framework 4,7 ' i hedefleyen uygulamalar için varsayılan olarak etkindir ve .NET Framework 4,7 altında çalışan ve .NET Framework önceki bir sürümünü hedefleyen uygulamalar için bir kabul etme özelliğidir. Daha fazla bilgi için uygulama uyumluluğu bölümüne bakın.

.NET Framework 4,7, ağla ilgili aşağıdaki özelliği ekler:

TLS protokolleri için varsayılan işletim sistemi desteği*

Ve HTTP, FTP ve SMTP gibi yukarı yığın bileşenleri tarafından System.Net.Security.SslStream kullanılan TLS yığını, geliştiricilerin işletim sistemi tarafından desteklenen varsayılan TLS protokollerini kullanmasına izin verir. Geliştiricilerin artık bir TLS sürümüne sabit kod olmaması gerekir.

ASP.NET

.NET Framework 4,7 ' de, ASP.NET aşağıdaki yeni özellikleri içerir:

Nesne önbelleği genişletilebilirliği

.NET Framework 4,7 ' den başlayarak ASP.NET, geliştiricilerin bellek içi nesne önbelleğe alma ve bellek izleme için varsayılan ASP.NET uygulamalarını değiştirmesine izin veren yeni bir apı kümesi ekler. ASP.NET uygulama yeterli değilse, geliştiriciler artık aşağıdaki üç bileşenden birini değiştirebilir:

  • Nesne önbelleği deposu. yeni önbellek sağlayıcıları yapılandırma bölümünü kullanarak, geliştiriciler yeni ICacheStoreProvider arabirimini kullanarak bir ASP.NET uygulaması için nesne önbelleğinin yeni uygulamalarını yükleyebilir.

  • Bellek izleme. ASP.NET ' deki varsayılan bellek izleyicisi, uygulamaları, işlem için yapılandırılmış özel bayt sınırına yakın bir süre sonra veya makinenin toplam kullanılabilir fiziksel RAM miktarı düşük olduğunda bildirir. Bu limitlerin yakınında, bildirimler tetiklenir. Bazı uygulamalar için bildirimler, yararlı yeniden eylemlere izin vermek üzere yapılandırılan sınırlara çok yakın şekilde harekete geçirilir. Geliştiriciler artık özelliğini kullanarak ApplicationMonitors.MemoryMonitor varsayılan değerini değiştirmek için kendi bellek izleyicilerini yazabilir.

  • Bellek sınırı yeniden eylemleri. varsayılan olarak, ASP.NET nesne önbelleğini kırpmaya çalışır ve özel bayt işlem sınırı yakınında düzenli olarak çağrı GC.Collect yapılır. Bazı uygulamalarda, çağrı GC.Collect sıklığı veya kırpılan önbellek miktarı verimsiz olur. Geliştiriciler artık ıgözlemci uygulamalarını uygulamanın bellek izleyicisine abone olarak varsayılan davranışı değiştirebilir veya tamamlayabilir.

Windows Communication Foundation (WCF)

Windows Communication Foundation (WCF) aşağıdaki özellikleri ve değişiklikleri ekler:

Varsayılan ileti güvenlik ayarlarını TLS 1,1 veya TLS 1,2 olarak yapılandırma olanağı

WCF, .NET Framework 4,7 ' den itibaren varsayılan ileti güvenlik protokolü olarak SSL 3,0 ve tls 1,0 ' ye ek olarak tls 1,1 veya tls 1,2 yapılandırmanıza olanak tanır. Bu bir kabul etme ayarıdır; etkinleştirmek için, uygulama yapılandırma dosyanıza aşağıdaki girişi eklemeniz gerekir:

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

WCF uygulamalarının ve WCF serileştirmenin güvenilirliği geliştirildi

WCF, yarış koşullarını ortadan kaldıran bir dizi kod değişikliği içerir, böylece performansı ve serileştirme seçeneklerinin güvenilirliğini geliştirir. Bu modüller şunlardır:

  • SocketConnection. BeginRead ve SocketConnection. Readçağrılarına zaman uyumsuz ve zaman uyumlu kod karıştırma için daha iyi destek.
  • Sharedconnectionlistener ve DuplexChannelBinderile bağlantı iptal edildiğinde iyileştirilmiş güvenilirlik.
  • Yöntemi çağırırken FormatterServices.GetSerializableMembers(Type) serileştirme işlemlerinin güvenilirliği geliştirildi.
  • Channeleşitleyici. removewaiter yöntemi çağırarak bir garson kaldırılırken güvenilirlik artırıldı.

Windows Forms

.NET Framework 4,7 ' de, Windows Forms yüksek dpı izleyicileri desteğini geliştirir.

Yüksek DPı desteği

.NET Framework 4,7 ' i hedefleyen uygulamalarla başlayarak Windows Forms uygulamalar için yüksek dpı ve dinamik dpı desteği .NET Framework. Yüksek DPı desteği, yüksek DPı izleyicilerinde form ve denetimlerin düzen ve görünümünü geliştirir. Dinamik DPı, Kullanıcı DPı 'yi değiştirdiğinde form ve denetimlerin yerleşimini ve görünümünü değiştirir ve çalışan bir uygulamanın ölçek faktörünü görüntüler.

Yüksek DPı desteği, bir < System. Windows tanımlayarak yapılandırdığınız bir katılım özelliğidir. Uygulama yapılandırma dosyanızda Forms. ConfigurationSection > bölümü. Windows Forms uygulamanıza yüksek dpı desteği ve dinamik dpı desteği ekleme hakkında daha fazla bilgi için, bkz. Windows Forms yüksek dpı desteği.

Windows Presentation Foundation (WPF)

.NET Framework 4,7 ' de WPF aşağıdaki geliştirmeleri içerir:

Windows WM_POINTER iletilerine dayalı bir dokunmatik/stilus yığını desteği

artık, Windows Ink Services platformu (wıss) yerine WM_POINTER iletilerine dayalı bir dokunmatik/stilus yığını kullanma seçeneğiniz vardır. Bu, .NET Framework bir katılım özelliğidir. Daha fazla bilgi için uygulama uyumluluğu bölümüne bakın.

WPF yazdırma API 'Leri için yeni uygulama

WPF 'in sınıfında bulunan System.Printing.PrintQueue yazdırma apı 'leri, kullanım dışı olan XPS yazdırma apı'si yerine Windows yazdırma belgesi paketi apı 'sini çağırır. Bu değişikliğin uygulama uyumluluğuna etkisi için uygulama uyumluluğu bölümüne bakın.

.NET Framework 4.6.2 yenilikleri

.NET Framework 4.6.2, aşağıdaki alanlardaki yeni özellikler içerir:

.NET Framework 4.6.2'ye eklenen yeni API'ler listesi için bkz. .NET Framework 4.6.2 API Değişiklikleri GitHub. .NET Framework 4.6.2'de özellik geliştirmeleri ve hata düzeltmelerinin listesi için bkz. .NET Framework 4.6.2 GitHub. Daha fazla bilgi için .NET blog .NET Framework 4.6.2'nin Nasıl Açıklanmaları hakkında bilgi edinebilirsiniz.

ASP.NET

4.6.2.NET Framework de ASP.NET geliştirmeleri içerir:

Veri açıklaması doğrulayıcılarında yerelleştirilmiş hata iletileri için geliştirilmiş destek

Veri açıklaması doğrulayıcıları, bir sınıf özelliğine bir veya daha fazla öznitelik ekleyerek doğrulama gerçekleştirmeye olanak sağlar. Doğrulama başarısız olursa ValidationAttribute.ErrorMessage özniteliğinin öğesi hata iletisinin metnini tanımlar. 4.6.2.NET Framework den başlayarak ASP.NET iletilerini yerelleştirmeyi kolaylaştırır. Hata iletileri şu şekilde olursa yerelleştirilmiş olur:

  1. , ValidationAttribute.ErrorMessage doğrulama özniteliğinde sağlanır.

  2. Kaynak dosyası App_LocalResources depolanır.

  3. Yerelleştirilmiş kaynaklar dosyasının adı form}.resxDataAnnotation.Localization.{ adına sahiptir; burada ad, languageCodecountry-/regionCode veya languageCode biçiminde bir kültür adıdır.

  4. Kaynağın anahtar adı, özniteliğine atanan dizedir ValidationAttribute.ErrorMessage ve değeri yerelleştirilmiş hata iletisidir.

Örneğin, aşağıdaki veri ek açıklaması özniteliği geçersiz derecelendirme için varsayılan kültürün hata iletisini tanımlar.

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

Ardından, anahtarı hata iletisi dizesi olan ve değeri yerelleştirilmiş hata iletisi olan DataAnnotation.Localization.fr.resx kaynak dosyasını oluşturabilirsiniz. Dosya klasöründe bulun App.LocalResources gerekir. Örneğin, aşağıdaki anahtar ve değeri yerelleştirilmiş Fransızca (fr) dil hata iletisidir:

Name Değer
Derecelendirme 1 ile 10 arasında olabilir. Doit être, entre 1 ve 10'dan oluşur.

Ayrıca, veri ek açıklaması yerelleştirmesi genişletilebilir. Geliştiriciler, yerelleştirme dizesini bir kaynak IStringLocalizerProvider dosyasından başka bir yerde depolamak için arabirimini kullanarak kendi dize yerelleştirici sağlayıcılarını taktırır.

Oturum durumu deposu sağlayıcılarıyla zaman uyumsuz destek

ASP.NET artık görev döndüren yöntemlerin oturum durumu deposu sağlayıcılarıyla birlikte kullanılabilerek ASP.NET zaman uyumsuz uygulamaların ölçeklenebilirlik avantajlarından yararlanmasına izin verir. ASP.NET, oturum durumu deposu sağlayıcılarıyla zaman uyumsuz işlemleri desteklemek için, ' System.Web.SessionState.ISessionStateModuleIHttpModule den devralan ve geliştiricilerin kendi oturum durumu modülünü ve zaman uyumsuz oturum deposu sağlayıcılarını uygulamasına olanak sağlayan yeni bir arabirim içerir. Arabirim aşağıdaki gibi tanımlanır:

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

Buna ek olarak SessionStateUtility , sınıfı iki yeni yöntem içerir IsSessionStateReadOnlyIsSessionStateRequiredve zaman uyumsuz işlemleri desteklemek için kullanılabilir.

Çıktı önbelleği sağlayıcıları için zaman uyumsuz destek

.NET Framework 4.6.2'den başlayarak, görev döndüren yöntemler zaman uyumsuzların ölçeklenebilirlik avantajlarını sağlamak için çıkış önbelleği sağlayıcılarıyla kullanılabilir. Bu yöntemleri uygulayan sağlayıcılar, bir web sunucusunda iş parçacığı engellemeyi azaltır ve bir web ASP.NET ölçeklenebilirliğini artırır.

Zaman uyumsuz çıktı önbelleği sağlayıcılarını desteklemek için aşağıdaki API'ler eklenmiştir:

Karakter kategorileri

4.6.2.NET Framework deki karakterler Unicode Standart Sürüm 8.0.0'a göre sınıflandırılır. 4.NET Framework 4.6 ve .NET Framework 4.6.1'de karakterler Unicode 6.3 karakter kategorilerine göre sınıflandırılmıştır.

Unicode 8.0 desteği, CharUnicodeInfo karakterlerin sınıf tarafından sınıflandırılmasıyla ve ona bağlı olan türler ve yöntemlerle sınırlıdır. Bunlar sınıfıStringInfo, aşırı yüklenmiş yöntemi ve Char.GetUnicodeCategory normal ifade altyapısı tarafından tanınan .NET Framework sınıflarını içerir. Karakter ve dize karşılaştırması ve sıralaması bu değişiklikden etkilenmez ve temel işletim sistemini veya Windows 7 sistemlerinde, .NET Framework tarafından sağlanan karakter verilerini temel alır.

Unicode 6.0'dan Unicode 7.0'a karakter kategorilerinde yapılan değişiklikler için Unicode Konsorsiyumu web sitesinde Unicode Standardı, Sürüm 7.0.0'a bakın. Unicode 7.0'dan Unicode 8.0'a yapılan değişiklikler için Unicode Konsorsiyumu web sitesinde Unicode Standardı, Sürüm 8.0.0'a bakın.

Şifreleme

FIPS 186-3 DSA içeren X509 sertifikaları için destek

.NET Framework 4.6.2, anahtarları FIPS 186-2 1024 bit sınırını aşan DSA (Dijital İmza Algoritması) X509 sertifikaları için destek ekler.

.NET Framework 4.6.2, FIPS 186-3'in daha büyük anahtar boyutlarını desteklemeye ek olarak SHA-2 karma algoritmaları ailesi (SHA256, SHA384 ve SHA512) ile bilgi işlem imzaları sağlar. FIPS 186-3 desteği yeni sınıf tarafından System.Security.Cryptography.DSACng sağlanır.

RSA.NET Framework 4.6 ve .NET Framework 4.6.1'de ECDsa sınıfında yapılan son değişikliklere uygun olarak, .NET Framework 4.6.2'de soyut temel sınıf, DSA çağıranların bu işlevi atama olmadan kullanmasına izin vermek için ek yöntemlere sahip olur. Aşağıdaki örnekte olduğu DSACertificateExtensions.GetDSAPrivateKey gibi, verileri imzalamak için uzantı yöntemini çağırabilirsiniz.

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

Ayrıca, aşağıdaki örnekte de DSACertificateExtensions.GetDSAPublicKey olduğu gibi, imzalı verileri doğrulamak için uzantı yöntemini çağırabilirsiniz.

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

ECDiffieHellman anahtar türetme yordamlarında girişler için daha fazla netlik

.NET Framework 3.5, üç farklı Anahtar Türetme İşlevi (KDF) yordamıyla Üç Diffie-Hellman Eğri ve Anahtar Sözleşmesi desteği ekledi. Yordamlara ve yordamlara yapılan girişler, nesne özellikleri aracılığıyla yapılandırıldı ECDiffieHellmanCng . Ancak her yordam her giriş özelliğini okumaysa da geliştiricinin geçmişte kafa karışıklığına yer vardı.

4.6.2'de bu .NET Framework ele için, ECDiffieHellman bu KDF yordamlarını ve girişlerini daha net bir şekilde temsil etmek için temel sınıfa aşağıdaki üç yöntem eklenmiştir:

ECDiffieHellman yöntemi Description
DeriveKeyFromHash(ECDiffieHellmanPublicKey, HashAlgorithmName, Byte[], Byte[]) Formülü kullanarak anahtar malzeme türet

HASH(secretPrepend || x || secretAppend)

HASH(secretPrepend OrElse x OrElse secretAppend)

Burada x , EC depolama algoritmasının hesaplanan Diffie-Hellman dır.
DeriveKeyFromHmac(ECDiffieHellmanPublicKey, HashAlgorithmName, Byte[], Byte[], Byte[]) Formülü kullanarak anahtar malzeme türet

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

HMAC(hmacKey, secretPrepend OrElse x OrElse secretAppend)

Burada x , EC depolama algoritmasının hesaplanan Diffie-Hellman dır.
DeriveKeyTls(ECDiffieHellmanPublicKey, Byte[], Byte[]) TLS sözde rastgele işlevi (PRF) türetme algoritmasını kullanarak anahtar malzeme türetin.

Kalıcı anahtar simetrik şifreleme desteği

Windows şifreleme kitaplığı (CNG), kalıcı simetrik anahtarları depolama ve donanımda depolanan simetrik anahtarları kullanma desteği ekledi ve .NET Framework 4.6.2, geliştiricilerin bu özelliği kullanmasını mümkün hale getirdi. Anahtar adları ve anahtar sağlayıcıları yaklaşımı uygulamaya özgü olduğu için, bu özelliğin kullanımı tercih edilen fabrika yaklaşımı (örneğin çağrısı) yerine somut uygulama türlerinin oluşturucusu kullanılarak gerekir Aes.Create.

AES () ve 3DES (AesCng) algoritmaları için kalıcı anahtar simetrik şifrelemeTripleDESCng desteği mevcuttur. Örnek:

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

SHA-2 karma için SignedXml desteği

.NET Framework 4.6.2SignedXml, RSA-SHA256, RSA-SHA384 ve RSA-SHA512 PKCS#1 imza yöntemleri ve SHA256, SHA384 ve SHA512 başvuru özeti algoritmaları için sınıfa destek ekler.

URI sabitleri üzerinde açığa çıkar SignedXml:

SignedXml alanı Sabit
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"

Bu algoritmalar için SignatureDescriptionCryptoConfig destek eklemek üzere içine özel bir işleyici kaydeden tüm programlar geçmişte olduğu gibi çalışmaya devam eder, ancak artık platform CryptoConfig varsayılanları mevcut olduğu için kayıt gerekli değildir.

Sqlclient

.NET Framework Veri Sağlayıcısı için SQL Server (System.Data.SqlClient), .NET Framework 4.6.2'de aşağıdaki yeni özellikleri içerir:

Azure SQL veritabanlarıyla bağlantı havuzu oluşturma ve Azure SQL zaman aşımı

Bağlantı havuzu etkinleştirildiğinde ve zaman aşımı veya başka bir oturum açma hatası oluştuğunda, bir özel durum önbelleğe alınmış ve sonraki 5 saniye ile 1 dakika arasındaki sonraki bağlantı denemeleri için önbelleğe alınmış özel durum oluşur. Daha fazla bilgi için bkz. SQL Server Havuzu (ADO.NET).

Bağlantı denemeleri genellikle hızlı bir şekilde kurtarılan geçici hatalarla başarısız olabilir, çünkü Azure SQL Veritabanlarına bağlanırken bu davranış tercih edilmez. Bağlantı yeniden deneme deneyimini daha iyi hale getirmek için Veritabanına bağlantı başarısız olduğunda bağlantı havuzu engelleme süresi Azure SQL kaldırılır.

Yeni anahtar sözcüğünü eklemek PoolBlockingPeriod , engelleme dönemini uygulamanıza en uygun şekilde seçmenize olanak sağlar. Değerlere şunlar dahildir:

Auto

Azure SQL Veritabanı'a bağlanan bir uygulamanın bağlantı havuzunu engelleme süresi devre dışı bırakılır ve başka bir SQL Server örneğine bağlanan bir uygulama için bağlantı havuzu engelleme süresi etkinleştirilir. Varsayılan değer budur. Sunucu uç noktası adı aşağıdakilerden herhangi biri ile sona ererse, Bunlar Veritabanlarında Azure SQL kabul edilir:

  • .database.windows.net

  • .database.chinacloudapi.cn

  • . database.usgovcloudapi.net

  • . database.cloudapi.de

AlwaysBlock

Bağlantı havuzu engelleme dönemi her zaman etkindir.

NeverBlock

Bağlantı havuzu engelleme süresi her zaman devre dışıdır.

Always Encrypted geliştirmeleri

SQLClient Always Encrypted için iki geliştirme sunar:

  • Şifrelenmiş veritabanı sütunlarına karşı parametreli sorguların performansını artırmak için, sorgu parametrelerinin şifreleme meta verileri artık önbelleğe alınır. SqlConnection.ColumnEncryptionQueryMetadataCacheEnabledÖzelliği olarak true ayarlanmış (varsayılan değer olan), aynı sorgu birden çok kez çağrılırsa, istemci parametre meta verilerini sunucudan yalnızca bir kez alır.

  • Anahtar önbelleğindeki sütun şifreleme anahtarı girdileri artık yapılandırılabilir bir zaman aralığından sonra çıkarıldıktan sonra özelliği kullanılarak SqlConnection.ColumnEncryptionKeyCacheTtl ayarlanır.

Windows Communication Foundation

.NET Framework 4.6.2 ' de, aşağıdaki alanlarda Windows Communication Foundation geliştirilmiştir:

CNG kullanılarak depolanan sertifikalar için WCF Aktarım güvenliği desteği

WCF aktarım güvenliği, Windows şifreleme kitaplığı (CNG) kullanılarak depolanan sertifikaları destekler. .NET Framework 4.6.2, bu destek, en fazla 32 bit uzunluğunda olmayan bir ortak anahtarla sertifikaların kullanılmasıyla sınırlandırılmıştır. bir uygulama .NET Framework 4.6.2 hedefliyorsa, bu özellik varsayılan olarak açık olur.

.NET Framework 4.6.1 ve önceki sürümlerini hedefleyen ancak .NET Framework 4.6.2 üzerinde çalışan uygulamalar için, bu özellik, app.config veya web.config dosyasının çalışma zamanı > bölümüne aşağıdaki satırı < eklenerek etkinleştirilebilir.

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

Bu, aşağıdakiler gibi kodla programlı olarak da yapılabilir:

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

DataContractJsonSerializer sınıfına göre birden çok gün ışığından yararlanma zaman ayarlama kuralı için daha iyi destek

Müşteriler, DataContractJsonSerializer sınıfın tek bir saat dilimi için birden çok ayarlama kuralını destekleyip desteklemediğini tespit etmek için bir uygulama yapılandırma ayarı kullanabilir. Bu bir katılım özelliğidir. Etkinleştirmek için app.config dosyanıza aşağıdaki ayarı ekleyin:

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

Bu özellik etkinleştirildiğinde bir DataContractJsonSerializer nesne, tarih ve saat verilerinin serisini kaldırmak için türü yerine TimeZone türünü kullanır TimeZoneInfo . TimeZoneInfo , geçmişteki saat dilimi verileriyle çalışmayı olanaklı kılan birden çok ayarlama kuralını destekler; TimeZone değildir.

Yapı ve saat dilimi ayarlamaları hakkında TimeZoneInfo daha fazla bilgi için bkz. saat dilimine genel bakış.

NetNamedPipeBinding en iyi eşleşme

WCF, istemci uygulamalarında, istedikleri uygulamayla en iyi şekilde eşleşen URI 'yi dinleyen hizmete her zaman bağlanabildiğini sağlayan yeni bir uygulama ayarına sahiptir. Bu uygulama ayarı (varsayılan) olarak false ayarlandığında, kullanan NetNamedPipeBinding istemciler, istenen URI 'nin bir alt dizesi olan bir URI üzerinde dinleme yapan bir hizmete bağlanmayı denemek mümkündür.

Örneğin, bir istemci ' de dinleme net.pipe://localhost/Service1 yapan bir hizmete bağlanmaya çalışır, ancak bu makinede yönetici ayrıcalığıyla çalışan farklı bir hizmet dinlemektedir net.pipe://localhost . Bu uygulama ayarı olarak false ayarlandığında, istemci yanlış hizmete bağlanmaya çalışır. Uygulama ayarı olarak true ayarlandıktan sonra istemci her zaman en iyi eşleşen hizmete bağlanır.

Not

İstemci, tam bitiş noktası adresi yerine hizmetin temel adresine (varsa) göre bulma hizmetlerini kullanan NetNamedPipeBinding istemcilerdir. Bu ayarın her zaman çalıştığından emin olmak için, hizmetin benzersiz bir temel adres kullanması gerekir.

Bu değişikliği etkinleştirmek için, istemci uygulamanızın App.config veya Web.config dosyasına aşağıdaki uygulama ayarını ekleyin:

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

SSL 3,0 varsayılan bir protokol değil

SSL 3,0, aktarım güvenliği ile NetTcp kullanırken güvenli bir bağlantı anlaşması için kullanılan varsayılan protokol değildir. Çoğu durumda, TLS 1,0, NetTcp protokol listesine eklendiğinden, var olan uygulamalara hiçbir etkisi olmaz. Tüm mevcut istemciler, en az TLS 1,0 kullanarak bir bağlantı anlaşması yapabilmelidir. Ssl3 gerekliyse, anlaşmalı protokoller listesine eklemek için aşağıdaki yapılandırma mekanizmalarından birini kullanın.

Windows Presentation Foundation (WPF)

.NET Framework 4.6.2 ' de, aşağıdaki alanlarda Windows Presentation Foundation geliştirilmiştir:

Grup sıralaması

Verileri gruplamak için bir CollectionView nesne kullanan bir uygulama artık grupların nasıl sıralanacağını açıkça bildirebilir. Açık sıralama, bir uygulama grupları dinamik olarak eklediğinde ya da kaldırırken veya gruplandırmada yer alan öğe özelliklerinin değerini değiştirdiğinde oluşan sezgisel olmayan sıralama sorununa yöneliktir. Ayrıca, gruplama özelliklerinin karşılaştırmalarını tam koleksiyonun sıralamasını grupların sıralaması olarak taşıyarak Grup oluşturma işleminin performansını da artırır.

Grup sıralamasını desteklemek için, New GroupDescription.SortDescriptions ve GroupDescription.CustomSort Properties, nesne tarafından GroupDescription üretilen grupların koleksiyonunun nasıl sıralanacağını anlatmaktadır. Bu, aynı adlı ListCollectionView özelliklerin veri öğelerinin nasıl sıralanacağını betimleyen yönteme benzerdir.

Sınıfının CompareNameAscending iki yeni statik özelliği PropertyGroupDescription ve CompareNameDescending en sık karşılaşılan durumlar için kullanılabilir.

Örneğin, aşağıdaki XAML verileri yaş ile gruplandırır, yaş gruplarını artan düzende sıralar ve her yaş grubundaki öğeleri son ada göre gruplandırır.

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

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

Dokunmatik klavye desteği

dokunmatik klavye desteği, dokunma girişi, metin girişi alınabilecek bir denetim tarafından alındığında Windows 10 içindeki dokunmatik klavyeyi otomatik olarak çağırarak ve yok ederek, WPF uygulamalarında odak izlemeye izin verebilir.

.NET Framework önceki sürümlerinde, wpf uygulamaları wpf kalem/dokunma hareketi desteğini devre dışı bırakmadan odak izlemeyi kabul edemiyor. sonuç olarak, wpf uygulamaları tam wpf dokunma desteği arasında seçim yapmanız veya Windows fare yükseltmesine güvenmelidir.

Monitör başına DPı

wpf uygulamaları için yüksek dpı ve hibrit dpı ortamlarının en son kullanımını desteklemek için, .NET Framework 4.6.2 ' deki wpf, izleme başına tanımayı sağlar. WPF uygulamanızın monitör başına dpı kullanan bir duruma gelmesini sağlama hakkında daha fazla bilgi için bkz. GitHub örnekler ve geliştirici kılavuzu .

.NET Framework önceki sürümlerinde, WPF uygulamaları sistem dpı özellikli. Diğer bir deyişle, uygulamanın kullanıcı arabirimi, uygulamanın işlendiği izleyicinin DPı değerine bağlı olarak, işletim sistemi tarafından uygun şekilde ölçeklendirilir.

.NET Framework 4.6.2 altında çalışan uygulamalar için, uygulama yapılandırma dosyanızın çalışma zamanı > bölümüne aşağıdaki şekilde bir yapılandırma açıklaması < ekleyerek WPF uygulamalarında monitör başına dpı değişikliklerini devre dışı bırakabilirsiniz:

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

Windows Workflow Foundation (WF)

.NET Framework 4.6.2 ' de, aşağıdaki alanda Windows Workflow Foundation geliştirilmiştir:

Yeniden barındırılan WF tasarımcısında C# ifadeleri ve IntelliSense desteği

WF .NET Framework 4,5 ' den başlayarak hem Visual Studio tasarımcısında hem de kod iş akışlarında C# ifadelerini destekler. yeniden barındırılan İş Akışı Tasarımcısı, bir WF 'nin, İş Akışı Tasarımcısı Visual Studio dışında bir uygulamada olmasına izin veren temel bir özelliktir (örneğin, WPF). Windows Workflow Foundation, yeniden barındırılan İş Akışı Tasarımcısı C# ifadelerini ve ıntellisense 'i destekleme yeteneği sağlar. daha fazla bilgi için Windows Workflow Foundation blogunabakın.

Availability of IntelliSense when a customer rebuilds a workflow project from Visual Studio4.6.2 ' den önceki .NET Framework sürümlerinde, bir müşteri bir iş akışı projesini Visual Studio yeniden oluştururken WF tasarımcısı ıntellisense bozulur. Proje derlemesi başarılı olsa da, iş akışı türleri tasarımcıda bulunmadı ve eksik iş akışı türleri için IntelliSense uyarıları hata listesi penceresinde görünür. .NET Framework 4.6.2 bu sorunu giderir ve ıntellisense 'i kullanılabilir hale getirir.

İş akışı Izleme olan iş akışı v1 uygulamaları artık FIPS modunda çalıştırılır

FIPS uyumluluk modu etkin olan makineler artık iş akışı izleme ile iş akışı sürüm 1 stilinde bir uygulamayı başarıyla çalıştırabiliyor. Bu senaryoyu etkinleştirmek için app.config dosyanızda aşağıdaki değişikliği yapmanız gerekir:

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

bu senaryo etkinleştirilmemişse, uygulamayı çalıştırmak iletiyle birlikte bir özel durum oluşturmaya devam eder, "bu uygulama Windows Platform fıps tarafından doğrulanan şifreleme algoritmalarının bir parçası değil."

Visual Studio İş Akışı Tasarımcısı ile dinamik güncelleştirme kullanılırken iş akışı geliştirmeleri

İş Akışı Tasarımcısı, akış çizelgesi etkinlik Tasarımcısı ve diğer Iş akışı etkinliği tasarımcıları artık yöntemi çağırdıktan DynamicUpdateServices.PrepareForUpdate sonra kaydedilmiş iş akışlarını başarıyla yükleyip görüntüler. .NET Framework 4.6.2 önce .NET Framework sürümlerinde, çağrıldıktan DynamicUpdateServices.PrepareForUpdate sonra kaydedilmiş bir iş akışı için Visual Studio bir XAML dosyası yüklemek aşağıdaki sorunlara neden olabilir:

  • İş Akışı Tasarımcısı XAML dosyasını doğru bir şekilde yükleyemez ( ViewStateData.Id satırın sonunda olduğunda).

  • Akış çizelgesi etkinlik Tasarımcısı veya diğer Iş akışı etkinliği tasarımcıları, eklenen özellik değerlerinin aksine tüm nesneleri varsayılan konumlarında görüntüleyebilir.

ClickOnce

ClickOnce, zaten desteklediği 1,0 protokolüne ek olarak tls 1,1 ve tls 1,2 ' i destekleyecek şekilde güncelleştirilmiştir. ClickOnce, hangi protokolün gerekli olduğunu otomatik olarak algılar; TLS 1,1 ve 1,2 desteğini etkinleştirmek için ClickOnce uygulama içinde ek bir adım gerekmez.

Windows Forms ve WPF uygulamalarını UWP uygulamalarına dönüştürme

Windows, WPF ve Windows Forms uygulamaları da dahil olmak üzere mevcut Windows masaüstü uygulamalarını Evrensel Windows Platformu (UWP) getirmek için artık yetenekler sunmaktadır. bu teknoloji, mevcut kod tabanınızı UWP 'ye kademeli olarak geçirmenize olanak tanıyarak bir köprü görevi görür ve böylece uygulamanızı tüm Windows 10 cihazlara geçirebilir.

Dönüştürülmüş masaüstü uygulamaları, UWP API 'Lerinin, canlı kutucuk ve bildirimler gibi özellikleri etkinleştirmek için erişilebilir hale getiren UWP uygulamalarının uygulama kimliğiyle benzer bir uygulama kimliği elde edebilir. Uygulama, daha önce olduğu gibi davranmaya devam eder ve tam güven uygulaması olarak çalışır. Uygulama dönüştürüldükten sonra, bir uyarlamalı Kullanıcı arabirimi eklemek için mevcut tam güven işlemine bir uygulama kapsayıcısı işlemi eklenebilir. tüm işlevler uygulama kapsayıcısı işlemine taşındığında, tam güven işlemi kaldırılabilir ve yeni UWP uygulaması tüm Windows 10 cihazlarda kullanılabilir hale getirilebilir.

Hata ayıklama geliştirmeleri

yönetilmeyen hata ayıklama apı 'si , bir NullReferenceException kaynak kodunun tek bir satırındaki hangi değişkenin olduğunu null belirleyebilmek mümkün olduğunda ek analizler gerçekleştirmek için .NET Framework 4.6.2 ' de geliştirilmiştir. Bu senaryoyu desteklemek için, yönetilmeyen hata ayıklama API 'sine aşağıdaki API 'Ler eklenmiştir.

.NET Framework 4.6.1 yenilikleri

.NET Framework 4.6.1, aşağıdaki alanlardaki yeni özellikler içerir:

.NET Framework 4.6.1 hakkında daha fazla bilgi için aşağıdaki konulara bakın:

Şifreleme: ECDSA içeren x509 sertifikaları için destek

.NET Framework 4,6, X509 sertifikaları için rsacng desteğini ekledi. .NET Framework 4.6.1 ecdsa (eliptik eğri dijital imza algoritması) X509 sertifikaları için destek ekler.

ECDSA, daha iyi performans sağlar ve RSA 'dan daha güvenli bir şifreleme algoritmasıdır ve Aktarım Katmanı Güvenliği (TLS) performansının ve ölçeklenebilirliğinin sorun olduğu durumlarda mükemmel bir seçimdir. .NET Framework uygulama çağrıları mevcut Windows işlevselliğine kaydırır.

aşağıdaki örnek kod, .NET Framework 4.6.1 ' ye dahil edilen ecdsa X509 sertifikaları için yeni desteği kullanarak bir bayt akışı için imza oluşturmanın ne kadar kolay olduğunu gösterir.

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

bu, .NET Framework 4,6 ' de imza oluşturmak için gereken koda işaretlenmiş bir kontrast sunar.

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

ADO.NET 'e aşağıdakiler eklenmiştir:

donanım korumalı anahtarlar için Always Encrypted desteği

ADO.NET artık Always Encrypted sütunlu ana anahtarların donanım güvenlik modüllerinde (hsm 'ler) yerel olarak depolanmasını desteklemektedir. Bu destek sayesinde müşteriler, özel sütun ana anahtar deposu sağlayıcıları yazmak ve bunları uygulamalara kaydetmek zorunda kalmadan HSM 'lerde depolanan Asimetrik Anahtarlarla faydalanabilir.

müşterilerin bir hsm 'de depolanan sütun ana anahtarlarıyla korunan Always Encrypted veriye erişebilmesi için, uygulama sunucularına veya istemci bilgisayarlara hsm satıcı tarafından sunulan CSP sağlayıcısını veya CNG anahtar deposu sağlayıcılarını yüklemeleri gerekir.

AlwaysOn için geliştirilmiş MultiSubnetFailover bağlantı davranışı

SqlClient artık otomatik olarak bir AlwaysOn kullanılabilirlik grubuna (AG) daha hızlı bağlantılar sağlar. Uygulamanızın farklı bir alt ağda bir AlwaysOn kullanılabilirlik grubuna (AG) bağlanıp bağlanmadığını saydam bir şekilde algılar ve geçerli etkin sunucuyu hızlıca bulup sunucuya bağlantı sağlar. Bu sürümden önce, bir uygulamanın bir AlwaysOn kullanılabilirlik grubuna bağlanmakta olduğunu göstermek için bağlantı dizesini içerecek "MultisubnetFailover=true" şekilde ayarlaması gerekiyordu. Bağlantı anahtar sözcüğünü öğesine true ayarlamadan, bir uygulama bir AlwaysOn kullanılabilirlik grubuna bağlanılırken zaman aşımı ile karşılaşabilir. Bu sürümle, bir uygulamanın artık olarak true ayarlanması MultiSubnetFailovergerekmez. Always on kullanılabilirlik grupları için SqlClient desteği hakkında daha fazla bilgi için bkz. yüksek kullanılabilirlik Için SqlClient desteği, olağanüstü durum kurtarma.

Windows Presentation Foundation (WPF)

Windows Presentation Foundation birkaç iyileştirme ve değişiklik içerir.

İyileştirilmiş performans

dokunma olaylarının tetiklendiği gecikme .NET Framework 4.6.1 içinde düzeltildi. Ayrıca, bir RichTextBox denetime yazmak hızlı giriş sırasında işleme iş parçacığını artık erişemez.

Yazım denetimi geliştirmeleri

WPF 'deki yazım denetleyicisi, Windows 8.1 ve sonraki sürümlerinde, yazım denetimi ek dilleri için işletim sistemi desteğinden yararlanmak üzere güncelleştirilmiştir. Windows 8.1 öncesinde Windows sürümlerindeki işlevlerde değişiklik yoktur.

.NET Framework önceki sürümlerinde olduğu gibi, aşağıdaki sırayla bilgi arayarak denetim veya bir RichTextBox bloğun dili TextBox algılanır:

  • xml:langvarsa.

  • Geçerli giriş dili.

  • Geçerli kültür.

wpf dil desteği hakkında daha fazla bilgi için, .NET Framework 4.6.1 özellikleri hakkında wpf bloggönderisi bölümüne bakın.

Kullanıcı başına özel sözlükler için ek destek

WPF .NET Framework 4.6.1 içinde, genel olarak kaydedilen özel sözlükleri tanır. Bu özellik, denetimleri her denetim için kaydetme özelliğine ek olarak kullanılabilir.

WPF 'nin önceki sürümlerinde özel sözlükler dışlanan kelimeleri ve otomatik düzeltme listelerini tanımıyor. Windows 8.1 ve Windows 10, dizin altına %AppData%\Microsoft\Spelling\<language tag> yerleştirilebilecek dosyaların kullanımı aracılığıyla desteklenir. Bu dosyalar için aşağıdaki kurallar geçerlidir:

  • Dosyalar. dic uzantılarına sahip olmalıdır (eklenen kelimeler için),. exc (dışlanan kelimeler için) veya. ACL (otomatik düzeltme için).

  • Dosyalar, bayt sırası Işareti (BOM) ile başlayan UTF-16 LE düz metin olmalıdır.

  • Her satır bir sözcükten (eklenen ve dışlanan sözcük listelerinde) ya da dikey çubukla ("|") ayrılmış sözcükler içeren bir otomatik düzeltme çiftinden oluşmalıdır (Otomatik Düzelt sözcük listesinde).

  • Bu dosyalar salt okunurdur ve sistem tarafından değiştirilmez.

Not

Bu yeni dosya biçimleri WPF yazım denetimi API 'Leri tarafından doğrudan desteklenmez ve uygulamalarda WPF 'ye sağlanan özel sözlüklerin. Lex dosyalarını kullanmaya devam etmesi gerekir.

Örnekler

Microsoft/WPF-samples GitHub deposunda birçok WPF örneği vardır. bize bir çekme isteği göndererek veya GitHub bir sorunaçarak örneklerimizi geliştirmemize yardımcı olun.

DirectX uzantıları

WPF, DX10 ve Dx11 içeriğiyle birlikte çalışabilmeyi kolaylaştıran yeni uygulamaları D3DImage sağlayan bir NuGet paketi içerir. Bu paketin kodu açık kaynaklıdır ve GitHubkullanılabilir.

Windows Workflow Foundation: işlemler

Transaction.EnlistPromotableSinglePhaseYöntemi artık işlemi yükseltmek IÇIN MSDTC dışında bir dağıtılmış işlem yöneticisi kullanabilir. Yeni Transaction.EnlistPromotableSinglePhase(IPromotableSinglePhaseNotification, Guid) aşırı yüklemeye BIR GUID işlem Promoter tanımlayıcısı belirterek bunu yapabilirsiniz. Bu işlem başarılı olursa, işlemin özelliklerine yerleştirilmiş sınırlamalar vardır. MSDTC olmayan bir işlem promosyonu kaydedildikten sonra, bu yöntemler MSDTC 'ye yükseltme gerektirdiğinden aşağıdaki yöntemler bir TransactionPromotionException oluşturur:

MSDTC olmayan bir işlem Promoter kaydedildikten sonra, tanımladığı protokoller kullanılarak gelecekteki dayanıklı kayıtlar için kullanılmalıdır. Guidİşlem Promoter, özelliği kullanılarak PromoterType elde edilebilir. İşlem yükseltildiğinde, işlem Promoter yükseltilen belirteci temsil eden bir Byte dizi sağlar. Bir uygulama, GetPromotedToken yöntemi Ile MSDTC olmayan bir yükseltilen işlem için yükseltilen belirteci elde edebilir.

Yükseltme işleminin başarıyla tamamlanabilmesi için yeni Transaction.EnlistPromotableSinglePhase(IPromotableSinglePhaseNotification, Guid) aşırı yükleme kullanıcıları belirli bir çağrı sırasını izlemelidir. Bu kurallar yöntemin belgelerinde belgelenmiştir.

Profil Oluşturma

Yönetilmeyen profil oluşturma API 'SI aşağıdaki şekilde geliştirilmiştir:

  • ICorProfilerInfo7 arabirimindeki pdb 'leri 'e erişmek için daha iyi destek.

    ASP.NET Core, derleme işlemleri için roslyn tarafından bellek içinde derlenmesi çok daha yaygın hale geliyor. Profil oluşturma araçları kuran geliştiriciler için bu, geçmişte diskte serileştirilmiş olan pdb 'leri artık mevcut olmayabilir. Profil Oluşturucu araçları genellikle kodu, kod kapsamı veya satır içi performans analizi gibi görevler için kaynak satırlara eşlemek için pdb 'leri kullanır. ICorProfilerInfo7 arabirimi artık iki yeni yöntem Içerir: ICorProfilerInfo7:: GetInMemorySymbolsLength ve ICorProfilerInfo7:: ReadInMemorySymbols, bu Profiler araçlarının yenı API 'leri kullanarak bellek içi pdb verilerine erişimi sağlamak için, bir profil oluşturucu bellek içi pdb 'nin içeriğini bayt dizisi olarak edinebilir ve sonra işleyebilir veya diske serileştirmez.

  • ICorProfiler arabirimiyle daha iyi izleme.

    Dinamik izleme API 'leri için yeniden JIT işlevselliği kullanan ICorProfiler Profil oluşturucular artık bazı meta verileri değiştirebilir. Daha önce böyle araçlar, herhangi bir zamanda Il 'yi işaretleyebilir, ancak meta veriler yalnızca modül yükleme sırasında değiştirilebilir. Il meta verilere başvurduğundan, bu, yapılabilecek izleme türlerini sınırlandırıyor. Modül yüklendikten sonra, özellikle yeni AssemblyRef , TypeRef , MemberSpecTypeSpecMemberRef ,,, ve UserString kayıtları ekleyerek, meta veri düzenlemelerinin bir alt kümesini desteklemek için ICorProfilerInfo7:: ApplyMetaData metodunu ekleyerek bu limitlerin bazılarını yükseltilmemiş sunuyoruz. Bu değişiklik, mümkün olan çok daha geniş bir izleme sağlar.

Yerel Görüntü Oluşturucu (NGEN) pdb 'leri

çapraz makine olay izleme, müşterilerin makine a 'daki bir programı oluşturmalarına ve B makinesi üzerinde kaynak satır eşleme ile profil oluşturma verilerine bakmaya olanak sağlar. önceki .NET Framework sürümlerini kullanarak, kullanıcı profili oluşturulan makineden tüm modülleri ve yerel görüntüleri, kaynak-yerel eşlemeyi oluşturmak için ıl PDB 'yi içeren analiz makinesine kopyalayabilir. Bu işlem, dosyalar görece küçük olduğunda (örneğin, telefon uygulamaları için), dosyalar masaüstü sistemlerinde çok büyük olabilir ve kopyalamak için önemli bir zaman gerekebilir.

Ngen pdb 'leri ile NGen, Il PDB 'ye bağımlılık olmadan IL-yerel eşlemeyi içeren bir PDB oluşturabilir. Makineler arası olay izleme senaryolarımızda, A makinesi tarafından oluşturulan yerel görüntü PDB 'sini B makinesine kopyalamak ve Il PDB 'nin kaynaktan Il eşlemesini ve yerel görüntü PDB 'nin Il-to-to-Native eşlemesini okumak için hata ayıklama arabirimi erişim API 'lerini kullanmak için gereklidir. Her iki eşlemeyi de birleştirmek, kaynaktan yerel eşleme sağlar. Yerel görüntü PDB tüm modüllerden ve yerel görüntülerden çok daha küçük olduğundan, A makinesinden B makinesine kopyalama işlemi çok daha hızlıdır.

.NET 2015 ' deki yenilikler

.net 2015, .NET Framework 4,6 ve .net Core ' u sunmaktadır. bazı yeni özellikler için geçerlidir ve diğer özellikler .NET Framework 4,6 veya .net Core 'a özgüdür.

  • ASP.NET Core

    .net 2015, modern bulut tabanlı uygulamalar oluşturmak için yalın bir .net uygulaması olan ASP.NET Core içerir. ASP.NET Core modüler olduğundan, yalnızca uygulamanızda gerekli olan özellikleri ekleyebilirsiniz. ııs 'de veya özel bir işlemde barındırılabilecek ve aynı sunucuda .NET Framework farklı sürümleriyle uygulamalar çalıştırabilirsiniz. Bulut dağıtımı için tasarlanmış yeni bir ortam yapılandırma sistemi içerir.

    MVC, Web API ve Web Sayfaları, MVC 6 adlı tek bir çerçevede birleştirilmiştir. 2015 ASP.NET Core sonraki bir Visual Studio araçlar aracılığıyla yeni uygulamalar oluşturun. Mevcut uygulamalarınız yeni .NET Framework üzerinde çalışır; ancak MVC 6 veya SignalR 3 kullanan bir uygulama oluşturmak için proje sistemini Visual Studio 2015 veya sonraki bir işletim sisteminde kullansanız gerekir.

    Bilgi için bkz. ASP.NET Core.

  • ASP.NET Güncelleştirmeleri

    • Zaman Uyumsuz Yanıt Boşaltma için Görev Tabanlı API

      ASP.NET artık, zaman uyumsuz yanıt boşaltma için basit bir görev tabanlı API HttpResponse.FlushAsyncsağlar ve bu api, yanıtların dilinizin desteği kullanılarak zaman uyumsuz olarak boşaltılana izin async/await verir.

    • Model bağlama, görev döndüren yöntemleri destekler

      .NET Framework 4.5'te ASP.NET sayfalarda ve kullanıcı denetimlerde CRUD tabanlı veri işlemlerine genişletilebilir, kod odaklı bir yaklaşımı etkinleştiren Model Bağlama özelliğini Web Forms ekledik. Model Bağlama sistemi artık geri dönen Taskmodel bağlama yöntemlerini destekliyor. Bu özellik, Web Forms geliştiricilerin daha yeni ORM sürümlerini kullanırken veri bağlama sisteminin kolaylığıyla zaman uyumsuz özelliğinin ölçeklenebilirlik avantajlarını elde Entity Framework.

      Zaman uyumsuz model bağlaması yapılandırma ayarı tarafından aspnet:EnableAsyncModelBinding denetlenr.

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

      Hedef 4.6 .NET Framework uygulamalarda varsayılan olarak kullanılırtrue. .NET Framework 4.6'da çalışan ve önceki bir sürümü .NET Framework olarak kullanılırfalse. Yapılandırma ayarı olarak ayar tarafından etkinleştirilebilir true.

    • HTTP/2 Desteği (Windows 10)

      HTTP/2 , HTTP protokolünün çok daha iyi bağlantı kullanımı (istemci ile sunucu arasında daha az gidiş dönüş) sağlayan yeni bir sürümüdür ve kullanıcılar için daha düşük gecikme süresine sahip web sayfası yüklemesi sağlar. Protokol, tek bir deneyimin parçası olarak istenen birden çok yapıt için iyileştirilene için web sayfaları (hizmetlerin aksine) HTTP/2'den en fazla fayda sağlar. .NET Framework 4.6'da ASP.NET HTTP/2 desteği eklendi. Ağ işlevselliği birden çok katmanda mevcut olduğundan, HTTP/2'yi etkinleştirmek için Windows,IIS'de ve ASP.NET'de yeni özellikler gerekirdi. HTTP/2'Windows 10 kullanmak için ASP.NET.

      HTTP/2, API'yi kullanan Windows 10 Evrensel Windows Platformu (UWP) uygulamaları için de varsayılan olarak ve desteğine System.Net.Http.HttpClient sahiptir.

      ASP.NET uygulamalarında PUSH_PROMISE bir yöntem sağlamak için sınıfına PushPromise(String)PushPromise(String, String, NameValueCollection)ve ASP.NET aşırı yüke sahip yeni bir yöntem HttpResponse eklenmiştir.

      Not

      Bu ASP.NET Core HTTP/2 desteğine sahipken PUSH PROMISE özelliği için destek henüz eklenmedi.

      Tüm işi tarayıcı ve web sunucusu (Windows IIS) yapar. Kullanıcılarınız için ağır iş yapmak zorunda değildir.

      Ana tarayıcıların çoğu HTTP/2'i desteklediğinden, sunucunuz destekliyorsa kullanıcılarınız BÜYÜK OLASıLıKLA HTTP/2 desteğinden yararlanabilecektir.

    • Belirteç Bağlama Protokolü desteği

      Microsoft ve Google, Belirteç Bağlama Protokolü adı verilen yeni bir kimlik doğrulaması yaklaşımı üzerinde işbirliği yaptı. Şirket, kimlik doğrulama belirteçlerini (tarayıcı önbelleğinde) çalınarak ve diğer güvenli kaynaklara (örneğin banka hesabınız gibi) erişmek için, parolanızı veya başka bir ayrıcalıklı bilgiyi gerektirmeden kullanıla bilir. Yeni protokol, bu sorunu hafifletma amacını benimser.

      Belirteç Bağlama Protokolü, Windows 10 tarayıcı özelliği olarak uygulanır. ASP.NET kimlik doğrulama belirteçleri yasal olarak doğrulanması için protokole katılacaktır. İstemci ve sunucu uygulamaları, protokol tarafından belirtilen 4.000.000'den fazla korumayı sağlar.

    • Rastgele dize karma algoritmaları

      .NET Framework 4.5'te rastgele bir dize karma algoritması ortaya konur. Ancak, kararlı bir karma koda ASP.NET bazı ASP.NET özellikleri nedeniyle bu özellik ASP.NET tarafından desteklenmiyor. 4.NET Framework 6.6'da rastgele dize karması algoritmaları artık de destekleni. Bu özelliği etkinleştirmek için yapılandırma ayarını aspnet:UseRandomizedStringHashAlgorithm kullanın.

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

    ADO .NET artık Always Encrypted 2016'da SQL Server özelliğini destekliyor. Always Encrypted SQL Server, şifrelenmiş veriler üzerinde işlem gerçekleştirebilir ve şifreleme anahtarının en iyisi sunucu üzerinde değil müşterinin güvenilir ortamındaki uygulamayla birlikte yer almaktadır. Always Encrypted, DBA'ların düz metin verilerine erişimi yoksa müşteri verilerini güvenli hale sağlar. Verilerin şifrelerini ve şifrelerini çözmek, sürücü düzeyinde saydam bir şekilde gerçekleşir ve bu da mevcut uygulamalarda yapılan değişikliklerin en aza indirilmesine neden olur. Ayrıntılar için bkz. Always Encrypted (Veritabanı Altyapısı) ve Always Encrypted (istemci geliştirme).

  • Yönetilen kod için 64 bit JIT Derleyicisi

    .NET Framework 4.6, 64 bit JIT derleyicinin yeni bir sürümünü (başlangıçta kod adı RyuJIT) içerir. Yeni 64 bit derleyici, eski 64 bit JIT derleyicisi üzerinde önemli performans geliştirmeleri sağlar. Yeni 64 bit derleyici, .NET Framework 4.6 üzerinde çalışan 64 bit işlemler için etkinleştirilir. Uygulamanız 64 bit veya AnyCPU olarak derlenmişse ve 64 bit işletim sisteminde çalışıyorsa 64 bit işlemde çalıştıracak. Yeni derleyiciye geçişi mümkün olduğunca saydam hale etmek için özenli davranılarak davranış değişiklikleri mümkündür.

    Yeni 64 bit JIT derleyicisi, ad alanı içinde SIMD özellikli türlerle birlikte geldiğinde donanım SIMD System.Numerics hızlandırma özellikleri de içerir ve bu da iyi performans geliştirmeleri elde eder.

  • Derleme yükleyicisi geliştirmeleri

    Derleme yükleyicisi artık karşılık gelen bir NGEN görüntüsü yüklendikten sonra IL derlemelerini kaldırarak belleği daha verimli bir şekilde kullanır. Bu değişiklik sanal belleği azaltarak özellikle büyük 32 bit uygulamalar (Visual Studio gibi) için faydalıdır ve fiziksel bellek tasarrufu sağlar.

  • Temel sınıf kitaplığı değişiklikleri

    Önemli senaryoları etkinleştirmek için .NET Framework 4.6'ya birçok yeni API eklenmiştir. Bunlar aşağıdaki değişiklikleri ve eklemeleri içerir:

    • IReadOnlyCollectionT<> uygulamaları

      ve gibi ek IReadOnlyCollection<T> koleksiyonlar Queue<T> uygulanır Stack<T>.

    • CultureInfo.CurrentCulture ve CultureInfo.CurrentUICulture

      ve CultureInfo.CurrentCulture özellikleri CultureInfo.CurrentUICulture artık salt okunur değil okuma-yazma özelliğidir. Bu özelliklere yeni bir CultureInfo nesne atarsanız, Thread.CurrentThread.CurrentCulture özelliği tarafından tanımlanan geçerli iş parçacığı kültürü ve özellikler tarafından tanımlanan geçerli kullanıcı arabirimi iş Thread.CurrentThread.CurrentUICulture parçacığı kültürü de değişir.

    • Atık toplama (GC) geliştirmeleri

      sınıfı GC artık kritik bir TryStartNoGCRegion yolun EndNoGCRegion yürütülmesi sırasında çöp toplamaya izin vermemeniz için ve yöntemlerini içerir.

      yönteminin yeni bir aşırı GC.Collect(Int32, GCCollectionMode, Boolean, Boolean) yüklemesi, hem küçük nesne yığınının hem de büyük nesne yığınının yalnızca küçük ve sıkıştırılmış ya da küçük olup olmadığını denetlemeye olanak sağlar.

    • SIMD özellikli türler

      Ad System.Numerics alanı artık , ve gibi bir dizi SIMD QuaternionMatrix3x2PlaneVector2Matrix4x4özellikli tür Vector3içerir.Vector4

      Yeni 64 bit JIT derleyicisi donanım SIMD hızlandırma özellikleri de içerir, yeni 64 bit JIT derleyicisi ile SIMD özellikli türleri kullanırken özellikle önemli performans geliştirmeleri vardır.

    • Şifreleme güncelleştirmeleri

      APISystem.Security.Cryptography, CNG şifreleme API'lerini Windows güncelleştiriliyor. Uygulamanın önceki .NET Framework, uygulamanın temeli olarak Windows Şifreleme API'lerinin önceki bir sürümüne dayanıyorduSystem.Security.Cryptography. Belirli uygulama kategorileri için önemli olan modern şifreleme algoritmalarını desteklediği için CNG API'sini destekleme isteklerimiz oldu.

      .NET Framework 4.6, CNG şifreleme API'lerini desteklemeye Windows yeni geliştirmeleri içerir:

      • Mümkün olduğunda CAPI tabanlı bir uygulama yerine CNG tabanlı bir uygulama dönüşen X509 System.Security.Cryptography.X509Certificates.RSACertificateExtensions.GetRSAPublicKey(System.Security.Cryptography.X509Certificates.X509Certificate2)System.Security.Cryptography.X509Certificates.RSACertificateExtensions.GetRSAPrivateKey(System.Security.Cryptography.X509Certificates.X509Certificate2)Sertifikaları ve için bir dizi genişletme yöntemi. (Bazı akıllı kartlarda vb. hala CAPI gerekir ve API'ler geri dönüşle başa çıkabilir).

      • System.Security.Cryptography.RSACng RSA algoritmasının CNG uygulamasını sağlayan sınıfı.

      • Ortak eylemlerin artık tür atama gerektirmesini gerektirecek şekilde RSA API'sini iyileştirmeler. Örneğin, bir nesnesi kullanarak verileri şifrelemek X509Certificate2 için önceki sürümlerde aşağıdaki gibi bir kod .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)
        

        .NET Framework 4.6'da yeni şifreleme API'lerini kullanan kod, yayından kaçınmak için aşağıdaki gibi yeniden yazılabilir.

        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)
        
    • Tarihleri ve saatleri Unix saatlere veya unix saatlere dönüştürme desteği

      Tarih ve saat değerlerini Unix saatlerine DateTimeOffset veya Unix saatlerine dönüştürmeyi desteklemek için yapıya aşağıdaki yeni yöntemler eklenmiştir:

    • Uyumluluk anahtarları

      sınıfı AppContext , kitaplık yazarlarının kullanıcıları için yeni işlevler için tekdüz bir geri kabul mekanizması sağlamalarına olanak sağlayan yeni bir uyumluluk özelliği ekler. Geri almayı geri almayı tercih etmek için bileşenler arasında gevşek bir şekilde bir anlaşma kurar. Bu özellik genellikle mevcut işlevlerde bir değişiklik yapılırken önemlidir. Buna karşılık, yeni işlevler için zaten örtülü bir kabul vardır.

      ile AppContextkitaplıklar uyumluluk anahtarlarını tanımlar ve açığa çıkarırken, onlara bağlı olan kod bu anahtarları kitaplık davranışını etkileyecek şekilde ayarlayarak bunu ortaya çıkarır. Varsayılan olarak, kitaplıklar yeni işlevsellik sağlar ve yalnızca anahtar ayarlanırsa bu işlevi (önceki işlevselliği sağlarlar) değiştirebilir.

      Bir uygulama (veya kitaplık), bağımlı bir kitaplığın tanımladığı bir anahtarın ( Boolean her zaman bir değerdir) değerini bildirebilir. anahtarı her zaman örtülü olarakdır false. anahtarının olarak ayarı, true bunu etkinleştirir. anahtarının açıkça olarak ayar olması false yeni davranışı sağlar.

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

      Kitaplığın, bir tüketicinin anahtarın değerini bildirp bildireni denetlemesi ve ardından buna uygun şekilde davranması gerekir.

      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
      

      Kitaplık tarafından ortaya çıkarılma resmi bir anlaşma olduğu için anahtarlar için tutarlı bir biçim kullanmak yararlı olur. Aşağıda, belirgin iki biçim bulunur.

      • Anahtara geç. ad alanı. switchname

      • Anahtara geç. kitaplığını seçin. switchname

    • Görev tabanlı zaman uyumsuz düzende yapılan değişiklikler (TAP)

      .NET Framework 4,6 ' i Task hedefleyen uygulamalar için ve Task<TResult> nesneler, çağıran iş parçacığının kültürünü ve kullanıcı arabirimi kültürünü miras alır. .NET Framework önceki sürümlerini hedefleyen veya .NET Framework belirli bir sürümünü hedefmayan uygulamaların davranışı bundan etkilenmez. Daha fazla bilgi için, sınıf konusunun "Kültür ve görev tabanlı zaman uyumsuz işlemler" bölümüne CultureInfo bakın.

      System.Threading.AsyncLocal<T>Sınıfı, bir async yöntemi gibi belirli bir zaman uyumsuz Denetim akışında yerel olan çevresel verileri temsil etmenize olanak tanır. İş parçacıkları arasında veri kalıcı hale getirmek için kullanılabilir. Ayrıca, özellik açıkça değiştiği veya iş parçacığı bir bağlam geçişi ile karşılaştığından, ortam verilerinin AsyncLocal<T>.Value her ne zaman değiştiğini belirten bir geri çağırma yöntemi tanımlayabilirsiniz.

      Görev tabanlı zaman uyumsuz modele (TAP), belirli bir durumdaki Tamamlanan görevleri döndürmek için,, ve Task.FromException , üç kolay yöntem Task.CompletedTaskTask.FromCanceled eklenmiştir.

      NamedPipeClientStreamSınıfı artık, yeni ConnectAsync ile zaman uyumsuz iletişimi desteklemektedir. yöntemidir.

    • EventSource şimdi olay günlüğüne yazmayı destekliyor

      Artık, makinede oluşturulan mevcut ETW oturumlarına ek olarak yönetim veya işletimsel iletileri olay günlüğüne kaydetmek için sınıfını kullanabilirsiniz EventSource . geçmişte, bu işlevsellik için Microsoft. Diagnostics. Tracing. EventSource NuGet paketini kullanmanız gerekiyordu. bu işlevsellik artık 4,6 .NET Framework yerleşik olarak sunulmuştur.

      NuGet paketi ve .NET Framework 4,6 aşağıdaki özelliklerle güncelleştirilmiştir:

      • Dinamik olaylar

        Olay yöntemi oluşturmadan "anında" tanımlanan olaylara izin verir.

      • Zengin yük

        Özel olarak öznitelikli sınıfların ve dizilerin yanı sıra yük olarak geçirilecek ilkel türler sağlar

      • Etkinlik izleme

        , Şu anda etkin olan tüm etkinlikleri temsil eden bir KIMLIK ile aralarında olayları etiketlemek için başlatma ve durdurma olaylarına neden olur.

      Bu özellikleri desteklemek için, daha fazla yüklenmiş Write yöntemi sınıfına eklenmiştir EventSource .

  • Windows Presentation Foundation (WPF)

    • HDPı geliştirmeleri

      WPF 'de hdpı desteği artık .NET Framework 4,6 ' de daha iyidir. Kenarlıkların bulunduğu denetimlerde kırpma örneklerini azaltmak için yerleşim yuvarlama sırasında değişiklikler yapılmıştır. varsayılan olarak, bu özellik yalnızca TargetFrameworkAttribute .NET Framework 4,6 olarak ayarlandıysa etkindir. framework 'ün önceki sürümlerini hedefleyen ancak .NET Framework 4,6 üzerinde çalışan uygulamalar, app.config dosyasının çalışma zamanı > bölümüne aşağıdaki satırı < ekleyerek yeni davranışı kabul edebilir:

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

      Farklı DPı ayarlarına (çok DPı Kurulum) sahip birden çok izleyiciden oluşan WPF pencereleri, artık Blacked-Out bölgeleri olmadan tamamen işlenir. Bu yeni davranışı devre dışı bırakmak için app.config dosyanın bölümüne aşağıdaki satırı <appSettings> ekleyerek bu davranışı geri alabilirsiniz:

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

      Üzerine System.Windows.Input.Cursor DPI ayarı temelinde sağ imleci otomatik olarak yüklemek için destek eklenmiştir.

    • Dokunmatik daha iyidir

      .NET Framework 4,6 ' de, dokunma öngörülemeyen davranışları üreten Bağlan müşteri raporları giderilmiştir. Windows Store uygulamaları ve WPF uygulamaları için çift dokunma eşiği artık Windows 8.1 ve üzeri sürümlerde aynıdır.

    • Saydam alt pencere desteği

      .NET Framework 4,6 ' de WPF, Windows 8.1 ve üzeri sürümlerde saydam alt pencereleri destekler. Bu, üst düzey Windows 'larınızı dikdörtgen olmayan ve şeffaf alt pencereler oluşturmanıza olanak sağlar. Özelliğini olarak true ayarlayarak HwndSourceParameters.UsesPerPixelTransparency Bu özelliği etkinleştirebilirsiniz.

  • Windows Communication Foundation (WCF)

    • SSL desteği

      WCF, aktarım güvenliği ve istemci kimlik doğrulamasıyla NetTcp kullanılırken SSL 3,0 ve TLS 1,0 özelliklerine ek olarak SSL sürüm TLS 1,1 ve TLS 1,2 ' yi desteklemektedir. Artık hangi protokolün kullanılacağını seçebilir veya eski daha az güvenli protokollerin devre dışı bırakılması mümkündür. Bu, özelliği ayarlanarak SslProtocols veya bir yapılandırma dosyasına aşağıdakiler eklenerek yapılabilir.

      <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>
      
    • Farklı HTTP bağlantıları kullanarak ileti gönderme

      WCF artık kullanıcıların, farklı temel HTTP bağlantıları kullanılarak belirli iletilerin gönderilmesini sağlamasına izin veriyor. Bunu yapmak için iki yol vardır:

      • Bağlantı grubu adı ön eki kullanma

        Kullanıcılar, WCF 'nin bağlantı grubu adı için önek olarak kullanacağı bir dize belirtebilir. Farklı ön ekleri olan iki ileti, farklı temel HTTP bağlantıları kullanılarak gönderilir. İletinin Message.Properties özelliğine bir anahtar/değer çifti ekleyerek ön eki ayarlarsınız. Anahtar "HttpTransportConnectionGroupNamePrefix"; değer, istenen önekidir.

      • Farklı kanal fabrikaları kullanma

        Kullanıcılar ayrıca, farklı kanal fabrikaları tarafından oluşturulan kanallar kullanılarak gönderilen iletilerin farklı temel HTTP bağlantıları kullanmasını sağlayan bir özelliği etkinleştirebilir. Bu özelliği etkinleştirmek için, kullanıcıların şunları yapmak üzere true şunları appSetting ayarlaması gerekir:

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

    Artık, isteği zaman aşımından önce bekleyen bir "protokol dışı" yer işareti olduğunda, bir iş akışı hizmetinin bir sıra dışı işlem isteğine açık olacağı saniye sayısını belirtebilirsiniz. "Protokol dışı" yer işareti, bekleyen alma etkinlikleriyle ilgili olmayan bir yer işaretidir. Bazı etkinlikler, kendi uygulamalarında protokol olmayan yer işaretleri oluşturur, bu nedenle protokol olmayan bir yer işaretinin mevcut olduğu açık olmayabilir. Bu durum ve seçim dahildir. Bu nedenle, bir durum makinesi ile uygulanan veya bir çekme etkinliği içeren bir iş akışı hizmetiniz varsa, muhtemelen protokol olmayan yer işaretlerine sahip olursunuz. app.config dosyanızın bölümüne aşağıdakine appSettings benzer bir satır ekleyerek aralığı belirtirsiniz:

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

    Varsayılan değer 60 saniyedir. value0 olarak ayarlanırsa, aşağıdaki gibi görünen metin ile bir hata vererek sıra dışı istekler anında reddedilir:

    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.
    

    Bu, bir sıra dışı işlem iletisi alındığında ve protokol olmayan yer işaretleri yoksa aldığınız mesajdır.

    Öğe değeri FilterResumeTimeoutInSeconds sıfır değilse, protokol olmayan yer işaretleri vardır ve zaman aşımı aralığı sona erdiğinde, işlem zaman aşımı iletisiyle başarısız olur.

  • İşlemler

    Artık, öğesinden TransactionException türetilme özel durumunun oluşturulmasına neden olan işlem için dağıtılmış işlem tanımlayıcıyı ekleyebilirsiniz. Bunu, app.config dosyanızın bölümüne aşağıdaki anahtarı appSettings ekleyerek yapabilirsiniz:

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

    false varsayılan değerdir.

    • Yuva yeniden kullanımı

      Windows 10, giden TCP bağlantıları için yerel bağlantı noktalarını yeniden kullanarak makine kaynaklarının daha iyi kullanılmasını sağlayan yeni bir yüksek ölçeklenebilirlik ağ algoritması içerir. .NET Framework 4,6 yeni algoritmayı destekleyerek, .net uygulamalarının yeni davranıştan yararlanmasını sağlar. önceki Windows sürümlerindeki yapay bir eşzamanlı bağlantı sınırı vardı (16.384 genellikle, dinamik bağlantı noktası aralığının varsayılan boyutu), yük altında bağlantı noktası tükenmesi olmasına neden olarak bir hizmetin ölçeklenebilirliğini sınırlayabilir.

      .NET Framework 4,6 ' de, bağlantı noktası yeniden kullanımını etkinleştirmek için iki apı eklenmiştir. bu, eşzamanlı bağlantılarda 64 KB sınırını etkili bir şekilde kaldırır:

      Varsayılan olarak, ServicePointManager.ReusePort , kayıt defteri anahtarının değeri HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 0x1 olarak ayarlanmadığı takdirde HWRPortReuseOnSocketBind özelliği olur false . HTTP bağlantılarında yerel bağlantı noktası yeniden kullanımını etkinleştirmek için özelliğini olarak true ayarlayın ServicePointManager.ReusePort . bu, tüm giden TCP yuvası bağlantılarının HttpClient ve HttpWebRequestSO_REUSE_UNICASTPORT, yerel bağlantı noktası yeniden kullanımını sağlayan yeni bir Windows 10 yuva seçeneğini kullanmasına neden olur.

      Yalnızca bir yuva uygulaması yazan geliştiriciler, bağlama sırasında giden yuvaların yerel bağlantı noktalarını yeniden kullanabilmesi için System.Net.Sockets.SocketOptionName gibi Socket.SetSocketOption bir yöntemi çağırırken seçeneğini belirtebilir.

    • Uluslararası etki alanı adları ve puni kodu desteği

      Uluslararası etki alanı adlarını ve zayıf kodu daha iyi desteklemek için sınıfına yeni bir özellik IdnHost eklenmiştir Uri .

  • Windows Forms denetimlerinde yeniden boyutlandırma.

    bu özellik .NET Framework 4,6 ' de, DataGridViewComboBoxColumnNumericUpDownDataGridViewColumn ,, ve ToolStripSplitButton türlerini ve bir UITypeEditor çizerken kullanılan özelliği tarafından Bounds belirtilen dikdörtgeni içermesi DomainUpDown için genişletilmiştir.

    Bu bir katılım özelliğidir. Etkinleştirmek için, öğesini uygulama yapılandırma (app.config) dosyasında olarak true ayarlayın EnableWindowsFormsHighDpiAutoResizing :

    <appSettings>
        <add key="EnableWindowsFormsHighDpiAutoResizing" value="true" />
    </appSettings>
    
  • Kod sayfası kodlamaları için destek

    .NET Core öncelikle Unicode kodlamaları destekler ve varsayılan olarak, kod sayfası kodlamaları için sınırlı destek sağlar. kod sayfası kodlamalarını yöntemi ile Encoding.RegisterProvider kaydederek .net Core 'da .NET Framework, ancak desteklenmeyen kod sayfası kodlamaları için destek ekleyebilirsiniz. Daha fazla bilgi için bkz. System.Text.CodePagesEncodingProvider.

  • .NET Native

C# veya Visual Basic içinde yazılan Evrensel Windows Platformu (UWP) uygulamalar, uygulamaları ıl yerine yerel koda derleyen yeni bir teknolojiden yararlanabilir. Bu teknoloji, daha hızlı başlangıç ve yürütme zamanına sahip uygulamalar üretir. Daha fazla bilgi için bkz. .NET Native uygulamalar derleme. hem jıt derleme hem de NGEN 'ten farklı olan .NET Native genel bir bakış için ve kodunuz için ne anlama geldiğini, bkz. .NET Native ve derleme.

uygulamalarınız, Visual Studio 2015 veya sonraki bir sürümü ile derlerken varsayılan olarak yerel koda derlenir. Daha fazla bilgi için bkz. .NET Native kullanmayabaşlama.

.NET Native uygulamalarında hata ayıklamayı desteklemek için, yönetilmeyen hata ayıklama apı 'sine bir dizi yeni arabirim ve listeleme eklenmiştir. Daha fazla bilgi için bkz. hata ayıklama (YÖNETILMEYEN API Başvurusu) konusu.

  • Açık kaynak .NET Framework paketleri

    Ad alanı içinde bulunanlar gibi sabit koleksiyonlar, SIMDSystem.Net.Http API'ler ve ağ API'leri gibi .NET Core paketleri artık veri kaynaklarında açık kaynak paketleri olarak GitHub. Koda erişmek için bkz. .NET GitHub. Daha fazla bilgi ve bu paketlere nasıl katkıda bulunabilirsiniz? için bkz. .NET'egiriş, GitHub.

.NET Framework 4.5.2'de yapılan yeniler

  • Yeni uygulamalar için ASP.NET API'ler. Yeni ve HttpResponse.AddOnSendingHeaders yöntemleri HttpResponseBase.AddOnSendingHeaders , yanıt istemci uygulamasına boşaltıldıklarına göre yanıt üst bilgilerini ve durum kodunu incelemenizi ve değiştirmenizi sağlar. Ve olayları yerine bu yöntemleri kullanmayı PreSendRequestHeadersPreSendRequestContent düşünün; bunlar daha verimli ve güvenilirdir.

    yöntemi HostingEnvironment.QueueBackgroundWorkItem , küçük arka plan iş öğelerini zamanlamana olanak sağlar. ASP.NET öğeleri izler ve tüm arka plan iş öğeleri tamamlanana kadar IIS'nin çalışan işlemini aniden sonlandırmasını önler. Bu yöntem, yönetilen bir uygulama etki alanının ASP.NET çağrılanamaz.

    Yeni ve HttpResponse.HeadersWritten özellikleri HttpResponseBase.HeadersWritten , yanıt üst bilgileri yazılmış olup olmadığını belirten Boole değerleri verir. API'lere yapılan çağrıların HttpResponse.StatusCode (üst bilgiler yazılmışsa özel durumlar oluşturur) başarılı olduğundan emin olmak için bu özellikleri kullanabilirsiniz.

  • Denetimlerde yeniden Windows Forms. Bu özellik genişletildi. Artık aşağıdaki ek denetimlerin bileşenlerini yeniden boyutlandırmak için sistem DPI ayarını kullanabilirsiniz (örneğin, birleşik giriş kutularında açılan ok):

    Bu bir kabul özelliğidir. Etkinleştirmek için, uygulama yapılandırması EnableWindowsFormsHighDpiAutoResizingtrue (app.config) dosyasında öğesini olarak ayarlayın:

    <appSettings>
        <add key="EnableWindowsFormsHighDpiAutoResizing" value="true" />
    </appSettings>
    
  • Yeni iş akışı özelliği. yöntemini kullanan (ve bu nedenle EnlistPromotableSinglePhase arabirimini uygulayan IPromotableSinglePhaseNotification ) bir kaynak yöneticisi, yeni yöntemi kullanarak Transaction.PromoteAndEnlistDurable şunları isteğinde olabilir:

    Bu işlem aynı uygulama etki alanı içinde yapılabilir ve yükseltmeyi gerçekleştirmek için MSDTC ile etkileşim kurmak için ek bir unmanaged kodu gerektirmez. Yeni yöntem yalnızca, öne çıkan liste System.TransactionsIPromotableSinglePhaseNotificationPromote tarafından uygulanan yöntemine gelen bekleyen bir çağrı olduğunda çağrılabilir.

  • Profil oluşturma geliştirmeleri. Aşağıdaki yeni, unmanaged profil oluşturma API'leri daha sağlam profil oluşturma sağlar:

    Önceki ICorProfiler uygulamalar bağımlı derlemelerin yavaş yüklenmesini destekliyor. Yeni profil oluşturma API'leri, uygulama tamamen başlatıldıktan sonra yüklenmek yerine, profil oluşturma tarafından ekli bağımlı derlemelerin hemen yüklenebilir olması gerekir. Bu değişiklik, mevcut API'lerin kullanıcılarını ICorProfiler etkilemez.

  • Hata ayıklama geliştirmeleri. Aşağıdaki yeni, unmanaged hata ayıklama API'leri bir profil oluşturma ile daha iyi tümleştirme sağlar. Artık hata ayıklama dökümlerinde derleyici ReJIT istekleri tarafından üretilen yerel değişkenlerin ve kodun yanı sıra profil oluşturma tarafından eklenen meta verilere erişebilirsiniz.

  • Olay izleme değişiklikleri. .NET Framework 4.5.2, daha büyük bir yüzey alanı için Windows (ETW) tabanlı etkinlik izleme için işlem dışı Olay İzlemeyi etkinleştirir. Bu, Gelişmiş Güç Yönetimi (APM) satıcılarının iş parçacıkları arasında tek tek isteklerin ve etkinliklerin maliyetlerini doğru şekilde takip etmek için basit araçlar sağlamalarını sağlar. Bu olaylar yalnızca ETW denetleyicileri etkinleştirildiklerinden ortaya çıkar; bu nedenle, değişiklikler önceden yazılmış ETW kodunu veya ETW devre dışı bırakılmış olarak çalışan kodu etkilemez.

  • Bir işlemi tanıtma ve dayanıklı listeye dönüştürme

    Transaction.PromoteAndEnlistDurable, .NET Framework 4.5.2 ve 4.6'ya eklenen yeni bir API'dir:

    [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
    

    yöntemi, yöntemine yanıt olarak tarafından önceden oluşturulmuş bir liste Transaction.EnlistPromotableSinglePhase tarafından ITransactionPromoter.Promote kullanılabilir. Işlemi bir System.Transactions MSDTC işlemi olarak tanıtmayı ve yükseltilebilir listeyi dayanıklı bir listeye "dönüştürmeyi" sorar. Bu yöntem başarıyla tamamlandıktan sonra, IPromotableSinglePhaseNotificationSystem.Transactionsarabirimine artık tarafından başvurulmayacak ve gelecekte sağlanan arabirime gelecek bildirimler gelecektir ISinglePhaseNotification . Söz konusu liste, işlem günlüğünü ve kurtarmayı destekleyen dayanıklı bir liste olarak hareket etmek gerekir. Ayrıntılar için Transaction.EnlistDurable bkz. Ayrıca, liste desteklemesi gerekir ISinglePhaseNotification. Bu yöntem yalnızca bir çağrıyı işlerken çağrılır ITransactionPromoter.Promote . Böyle bir durum yoksa bir özel TransactionException durum oluşturur.

.NET Framework 4.5.1'daki yeniler

Nisan 2014 güncelleştirmeleri:

  • Visual Studio 2013 Güncelleştirme 2, taşınabilir sınıf kitaplığı şablonlarında bu senaryoları desteklemek için güncelleştirmeleri içerir:

    • Windows 8.1, Windows Çalışma Zamanı Windows Phone 8.1 ve Windows Phone Silverlight 8.1'i hedef alan taşınabilir kitaplıklarda Windows Phone API'leri kullanabilirsiniz.

    • XAML 'i (Windows. UI. 8.1'i veya 8.1'i Windows 8.1 XAML Windows Phone) kullanabilirsiniz. Aşağıdaki XAML şablonları de destekler: Boş Sayfa, Kaynak Sözlüğü, Şablonlu Denetim ve Kullanıcı Denetimi.

    • Windows 8.1 8.1'i hedef alan Store uygulamaları içinde kullanmak üzere taşınabilir bir Windows Çalışma Zamanı bileşeni (.winmd dosyası) Windows Phone oluşturabilirsiniz.

    • Taşınabilir Sınıf Kitaplığı gibi bir Windows Veya Windows Phone Store sınıf kitaplığını yeniden hedef alabilirsiniz.

    Bu değişiklikler hakkında daha fazla bilgi için bkz. Taşınabilir Sınıf Kitaplığı.

  • Yeni .NET Framework kümesinde, .NET Native uygulamaları derlemeye ve dağıtmaya ilişkin bir ön derleme teknolojisi olan Windows yer almaktadır. .NET Native daha iyi performans için uygulamalarınızı ara dil (IL) yerine doğrudan yerel koda derler. Ayrıntılar için bkz. Uygulamaları .NET Native.

  • .NET Framework Kaynak, yeni bir gözatma deneyimi ve gelişmiş işlevsellik sağlar. Artık çevrimiçi olarak .NET Framework koduna göz atabilir, çevrimdışı görüntüleme başvurularını indirebilir ve hata ayıklama sırasında kaynaklar arasında adım adım gezinebilirsiniz (düzeltme ekleri ve güncelleştirmeler dahil). Daha fazla bilgi için blog girdisi .NET Başvuru Kaynağı için yeni bir görünüme bakın.

.NET Framework 4.5.1'de temel sınıflarda yeni özellikler ve geliştirmeler şunlardır:

  • Derlemeler için otomatik bağlama yeniden yönlendirmesi. Visual Studio 2013'den başlayarak, .NET Framework 4.5.1'i hedef alan bir uygulamayı derlerken, uygulamanız veya bileşenleriniz aynı derlemenin birden çok sürümüne başvurursa bağlama yeniden yönlendirmeleri uygulama yapılandırma dosyasına eklenebilir. Bu özelliği, önceki sürümleri hedef alan projeler için de etkinleştirebilirsiniz .NET Framework. Daha fazla bilgi için, bkz . How to: Enable and Disable Automatic Binding Redirection.

  • Geliştiricilerin sunucu ve bulut uygulamalarının performansını iyileştirmeye yardımcı olmak için tanılama bilgileri toplama olanağı. Daha fazla bilgi için sınıfındaki WriteEventWithRelatedActivityId ve WriteEventWithRelatedActivityIdCore yöntemlerine EventSource bakın.

  • Çöp toplama sırasında büyük nesne yığınını (LOH) açıkça sıkıştırabilme özelliği. Daha fazla bilgi için özelliğine GCSettings.LargeObjectHeapCompactionMode bakın.

  • Uygulamanın askıya alınması, ASP.NET çekirdek JIT geliştirmeleri ve bir güncelleştirmeden sonra daha hızlı uygulama başlatma gibi ek performans .NET Framework geliştirmeleri. Ayrıntılar için bkz. .NET Framework 4.5.1 duyurusuve ASP.NET uygulaması askıya alma blog gönderisi.

Geliştirmeler şunları Windows Forms:

  • Denetimlerde yeniden Windows Forms. Uygulama yapılandırma dosyasında (app.config) bir girişi kabul ederseniz denetim bileşenlerini (örneğin, bir özellik kılavuzunda görünen simgeler) yeniden boyutlandırmak için sistem DPI ayarını kullanabilirsiniz. Bu özellik şu anda aşağıdaki denetimlerde Windows Forms:

    Bu özelliği etkinleştirmek için yapılandırma dosyasına (app.config <) yeni bir appSettings> öğesi ekleyin ve öğesini olarak EnableWindowsFormsHighDpiAutoResizing ayarlayın true:

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

.NET Framework uygulamalarınıza hata Visual Studio 2013 iyileştirmeler şunlardır:

  • Hata ayıklayıcısında Visual Studio dönüş. Yönetilen uygulamada hata ayıklaması Visual Studio 2013, Otomatikler penceresinde yöntemler için dönüş türleri ve değerler görüntülenir. Bu bilgiler masaüstü, Windows Store ve Windows Phone kullanılabilir. Daha fazla bilgi için bkz . Yöntem çağrılarının dönüş değerlerini inceleme.

  • 64 bit uygulamalar için Düzenle ve Devam Edin. Visual Studio 2013 masaüstü, Windows Store ve Windows Phone için 64 bit yönetilen uygulamalar için Düzenle ve Devam Windows Phone. Mevcut sınırlamalar hem 32 bit hem de 64 bit uygulamalar için etkili olmaya devam ediyor (Desteklenen Kod Değişiklikleri (C#) makalenin son bölümüne bakın).

  • Zaman uyumsuz hata ayıklama. Visual Studio 2013'de zaman uyumsuz uygulamalarda hata ayıklamayı kolaylaştırmak için, çağrı yığını zaman uyumsuz programlamayı desteklemek için derleyiciler tarafından sağlanan altyapı kodunu gizler ve mantıksal üst çerçevelerde zincirler; böylece mantıksal program yürütmeyi daha net bir şekilde takip edersiniz. Bir Görevler penceresi, paralel görevler penceresinin yerini alır ve belirli bir kesme noktasıyla ilgili görevleri görüntüler ve ayrıca, şu anda etkin olan veya uygulamada zamanlanan diğer görevleri görüntüler. bu özellik hakkında bilgi edinmek için, .NET Framework 4.5.1 duyurusunun"zaman uyumsuz algılayan hata ayıklama" bölümünde bulabilirsiniz.

  • Windows Çalışma Zamanı bileşenleri için daha iyi özel durum desteği. Windows 8.1, Windows Store uygulamalarından kaynaklanan özel durumlar, özel duruma neden olan hata hakkındaki bilgileri, dil sınırları boyunca korur. bu özelliği hakkında bilgi edinmek için .NET Framework 4.5.1 duyurunuzun"Windows Store app development" bölümünde bulabilirsiniz.

Visual Studio 2013 başlayarak, yönetilen profil temelli iyileştirme aracı 'nı (Mpgo.exe) kullanarak Windows 8. x mağaza uygulamalarını ve masaüstü uygulamalarını en iyi duruma getirebilirsiniz.

ASP.NET 4.5.1 ' deki yeni özellikler için bkz. Visual Studio 2013 sürüm notları için ASP.NET and Web Tools.

.NET Framework 4,5 ' deki yenilikler

Temel sınıflar

  • dağıtım sırasında .NET Framework 4 uygulamalarını algılayıp kapatarak sistem yeniden başlatmaları azaltma özelliği. bkz. .NET Framework 4,5 yüklemeleri sırasında sistem yeniden başlatmaları azaltma.

  • 64-bit platformlarda 2 gigabayttan (GB) daha büyük diziler için destek. Bu özellik uygulama yapılandırma dosyasında etkinleştirilebilir. Nesne boyutu ve dizi boyutu üzerindeki diğer kısıtlamaları da listeleyen gcAllowVeryLargeObjects > öğesine bakın. <

  • Sunucular için arka plan atık toplama ile daha iyi performans. .NET Framework 4,5 ' de sunucu çöp toplamayı kullandığınızda, arka plan atık toplama otomatik olarak etkinleştirilir. Çöp toplama temelleri konusunun arka plan sunucusu çöp toplama bölümüne bakın.

  • Arka plan tam zamanında (JıT) derleme, isteğe bağlı olarak, uygulama performansını artırmak için çok çekirdekli işlemcilerde kullanılabilir. Bkz. ProfileOptimization.

  • Normal ifade altyapısının zaman aşımına uğramadan önce normal ifadeyi çözmeyi ne kadar süreyle deneyeceğini sınırlayabilme olanağı. Regex.MatchTimeout Bkz. özelliği.

  • Bir uygulama etki alanı için varsayılan kültürü tanımlama özelliği. CultureInfoSınıfına bakın.

  • Unicode (UTF-16) kodlaması için konsol desteği. ConsoleSınıfına bakın.

  • Kültürel dize sıralaması ve karşılaştırma verilerinin sürümü oluşturma desteği. SortVersionSınıfına bakın.

  • Kaynakları alırken daha iyi performans. Bkz. paket ve dağıtım kaynakları.

  • Sıkıştırılmış bir dosyanın boyutunu azaltmak için ZIP sıkıştırma geliştirmeleri. System.IO.CompressionBkz. ad alanı.

  • Bir yansıma bağlamını, CustomReflectionContext sınıfı aracılığıyla varsayılan yansıma davranışını geçersiz kılacak şekilde özelleştirebilme.

  • Sınıf Windows 8 kullanıldığında, uygulamalar (ıDNA) standardında System.Globalization.IdnMapping Uluslararası etki alanı adlarının 2008 sürümü için destek.

  • .NET Framework Windows 8 kullanıldığında, Unicode 6,0 uygulayan işletim sistemine dize karşılaştırması temsili. diğer platformlarda çalışırken .NET Framework, Unicode 5. x uygulayan kendi dize karşılaştırma verilerini içerir. StringSınıfının sınıfı ve açıklamalar bölümüne SortVersion bakın.

  • Her uygulama etki alanı temelinde dizeler için karma kodları hesaplama özelliği. Bkz < . UseRandomizedStringHashAlgorithm > öğesi.

  • Ve TypeInfo sınıfları arasında Type bölünmüş tür yansıtma desteği. Windows Store uygulamaları için .NET Framework Reflectionbölümüne bakın.

Managed Extensibility Framework (MEF)

.NET Framework 4,5 ' de, Managed Extensibility Framework (MEF) aşağıdaki yeni özellikleri sağlar:

  • Genel türler için destek.

  • Öznitelikler yerine adlandırma kurallarına göre parçalar oluşturmanıza olanak sağlayan kural tabanlı programlama modeli.

  • Birden çok kapsam.

  • Windows 8. x mağaza uygulamaları oluştururken kullanabileceğiniz MEF alt kümesi. bu alt küme, NuGet galerisinden indirilebilir bir paket olarak kullanılabilir. paketi yüklemek için, projenizi Visual Studio açın, Project menüsünden NuGet paketlerini yönet ' i seçin ve paketi çevrimiçi Microsoft.Composition olarak arayın.

daha fazla bilgi için bkz. Managed Extensibility Framework (MEF).

Zaman uyumsuz dosya işlemleri

.NET Framework 4,5 ' de, C# ve Visual Basic dillerine yeni zaman uyumsuz özellikler eklenmiştir. Bu özellikler, zaman uyumsuz işlemleri gerçekleştirmek için görev tabanlı bir model ekler. Bu yeni modeli kullanmak için g/ç sınıflarında zaman uyumsuz yöntemleri kullanın. Bkz. zaman uyumsuz dosya g/ç.

Araçlar

.NET Framework 4,5 ' de, kaynak dosya oluşturucu (Resgen.exe), .NET Framework derlemesine gömülü bir. resources dosyasından Windows 8. x mağaza uygulamalarında kullanmak üzere bir. resw dosyası oluşturmanıza olanak sağlar. Daha fazla bilgi için bkz. Resgen.exe (kaynak dosya Oluşturucu).

Yönetilen profil temelli Iyileştirme (Mpgo.exe), yerel görüntü derlemelerini iyileştirerek uygulama başlangıç süresini, bellek kullanımını (çalışma kümesi boyutu) ve aktarım hızını iyileştirmenize olanak sağlar. Komut satırı aracı, yerel görüntü uygulama derlemeleri için profil verileri oluşturur. Bkz. Mpgo.exe (yönetilen profil temelli Iyileştirme aracı). Visual Studio 2013 başlayarak, Windows 8. x mağaza uygulamalarını ve masaüstü uygulamalarını en iyi hale getirebilmeniz için Mpgo.exe kullanabilirsiniz.

Paralel bilgi işlem

.NET Framework 4,5, paralel bilgi işlem için çeşitli yeni özellikler ve iyileştirmeler sağlar. Bunlar, geliştirilmiş performans, artırılmış denetim, zaman uyumsuz programlama için geliştirilmiş destek, yeni bir veri akışı kitaplığı ve paralel hata ayıklama ve performans analizi için geliştirilmiş destek içerir. .net blogu ile paralel programlamada .NET Framework 4,5 ' de paralellik için yenilikler bölümüne bakın.

Web

ASP.NET 4,5 ve 4.5.1 Web Forms, WebSocket desteği, zaman uyumsuz işleyiciler, performans geliştirmeleri ve diğer birçok özellik için model bağlama ekleyin. Daha fazla bilgi için aşağıdaki kaynaklara bakın:

İşlemleri

.NET Framework 4,5, HTTP uygulamaları için yeni bir programlama arabirimi sağlar. Daha fazla bilgi için bkz. yeni System.Net.Http ve System.Net.Http.Headers ad alanları.

Ayrıca, mevcut HttpListener ve ilgili sınıfları kullanarak bir WebSocket bağlantısını kabul etmek ve bunlarla etkileşim kurmak için yeni bir programlama arabirimi de mevcuttur. Daha fazla bilgi için, bkz. yeni System.Net.WebSockets ad alanı ve HttpListener sınıfı.

ayrıca, .NET Framework 4,5 aşağıdaki ağ geliştirmelerini içerir:

  • RFC uyumlu URI desteği. Daha fazla bilgi için bkz Uri . ve ilgili sınıflar.

  • Uluslararası etki alanı adı (ıDN) ayrıştırma desteği. Daha fazla bilgi için bkz Uri . ve ilgili sınıflar.

  • E-posta adresi uluslararası duruma getirme (EAı) desteği. Daha fazla bilgi için bkz System.Net.Mail . ad alanı.

  • Geliştirilmiş IPv6 desteği. Daha fazla bilgi için bkz System.Net.NetworkInformation . ad alanı.

  • Çift modlu yuva desteği. Daha fazla bilgi için bkz Socket . ve TcpListener sınıfları.

Windows Presentation Foundation (WPF)

.NET Framework 4,5 ' de, Windows Presentation Foundation (WPF) aşağıdaki alanlarda değişiklikler ve iyileştirmeler içerir:

  • Hızlı erişim araç çubuğu, uygulama menüsü ve sekmeler barındıran bir şerit kullanıcı arabirimi uygulamanıza olanak sağlayan yeni Ribbon Denetim.

  • Zaman uyumlu ve zaman uyumsuz veri doğrulamayı destekleyen yeni INotifyDataErrorInfo arabirim.

  • Ve Dispatcher sınıfları için VirtualizingPanel yeni özellikler.

  • Büyük düzeyde gruplandırılmış verilerin görüntülenirken ve Kullanıcı arabirimi olmayan iş parçacıklarında koleksiyonlara erişerek gelişmiş performans.

  • Statik özelliklere veri bağlama, arabirimi uygulayan ICustomTypeProvider özel türlere veri bağlama ve veri bağlama bilgilerinin bir bağlama ifadesinden alınması.

  • Değerler değiştiğinde verileri yeniden konumlandırma (canlı şekillendirme).

  • Bir öğe kapsayıcısının veri bağlamının bağlantısının kesilmesi olup olmadığını denetleme özelliği.

  • Özellik değişiklikleri ve veri kaynağı güncelleştirmeleri arasında geçmesi gereken süre miktarını ayarlama yeteneği.

  • Zayıf olay desenleri uygulama desteği geliştirildi. Ayrıca, olaylar artık işaretleme uzantılarını kabul edebilir.

Windows Communication Foundation (WCF)

.NET Framework 4,5 ' de, Windows Communication Foundation (WCF) uygulamaları yazmayı ve bakımını daha kolay hale getirmek için aşağıdaki özellikler eklenmiştir:

  • Oluşturulan yapılandırma dosyalarının basitleştirmesi.

  • Anlaşma önce geliştirme desteği.

  • Uyumluluk modunu ASP.NET kolayca yapılandırma olanağı.

  • Varsayılan taşıma özelliği değerlerde yapılan değişiklikler, bunları ayarlama olasılığını azaltır.

  • XML sözlük okuyucuları XmlDictionaryReaderQuotas için kotaları el ile yapılandırma olasılığını azaltmak üzere sınıfına güncelleştirmeler.

  • WcF yapılandırma dosyalarının derleme Visual Studio bir parçası olarak doğrulanması, böylece, yapılandırma hatalarını uygulama çalıştırmadan önce algılanabilir.

  • Yeni zaman uyumsuz akış desteği.

  • Yeni HTTPS protokolü eşlemesi, bir uç noktanın HTTPS (IIS) ile HTTPS üzerinden Internet Information Services kolaylaştırır.

  • Hizmet URL'sine ek olarak tek bir WSDL belgesinde meta ?singleWSDL veri oluşturabilme.

  • Websockets, TCP taşımaya benzer performans özelliklerine sahip 80 ve 443 bağlantı noktaları üzerinden gerçek çift yönlü iletişimi etkinleştirme desteği.

  • Kodda hizmetleri yapılandırma desteği.

  • XML Düzenleyicisi araç ipucu.

  • ChannelFactory önbelleğe alma desteği.

  • İkili kodlayıcı sıkıştırma desteği.

  • Geliştiricilerin "yangın ve unut" mesajlaşması kullanan hizmetler yazmasını sağlayan UDP taşıma desteği. İstemci bir hizmete ileti gönderir ve hizmetten yanıt beklemez.

  • HTTP aktarım ve aktarım güvenliği kullanılırken tek bir WCF uç noktası üzerinde birden çok kimlik doğrulama modlarını destekleme olanağı.

  • Uluslararası etki alanı adlarını (IDN) kullanan WCF hizmetleri desteği.

Daha fazla bilgi için bkz. Communication Foundation'da Windows.

Windows Workflow Foundation (WF)

4.NET Framework 4.5'te, Windows Workflow Foundation'a (WF) çeşitli yeni özellikler eklenmiştir:

  • İlk olarak .NET Framework 4.0.1 (.NET Framework 4 Platform Güncelleştirme 1) kapsamında tanıtıldı. Bu güncelleştirme, geliştiricilerin durum makinesi iş akışları oluşturmalarını etkinleştiren birkaç yeni sınıf ve etkinlik içerir. Bu sınıflar ve etkinlikler, .NET Framework 4.5 için şunları içerecek şekilde güncelleştirildi:

    • Eyaletlerde kesme noktası ayarlama özelliği.

    • İş akışı tasarımcısında geçişleri kopyalayıp yapıştırma özelliği.

    • Paylaşılan tetikleyici geçişi oluşturma için tasarımcı desteği.

    • Durum makinesi iş akışları oluşturmaya yönelik etkinlikler: StateMachine, ve StateTransition.

  • Aşağıdaki İş Akışı Tasarımcısı gelişmiş özellikler:

    • Dosyalarda Hızlı Bul ve Bul Visual Studio gelişmiş iş akışı aramaözellikleri.

    • Bir kapsayıcı etkinliğine ikinci bir alt etkinlik ekleniyorsa ve her iki etkinliği de Sıra etkinliğine dahil etmek için otomatik olarak bir Sıra etkinliği oluşturma yeteneği.

    • Kaydırma çubukları olmadan iş akışının görünür kısmının değiştirilebilir olması için kaydırma desteği.

    • Bir iş akışının bileşenlerini ağaç stili ana hat görünümünde gösteren ve Belge Ana Hat görünümünde bir bileşen seçmenize olanak sağlayan yeni bir Belge Ana Hat görünümü .

    • Etkinliklere ek açıklamalar ekleyebilme.

    • İş akışı tasarımcısını kullanarak etkinlik temsilcileri tanımlama ve kullanma olanağı.

    • Durum makinesi ve akış çizelgesi iş akışlarında etkinlikler ve geçişler için otomatik bağlanma ve otomatik ekleme.

  • Depolama durum bilgilerini kolayca bulup düzenleyebiliyor olmak için XAML dosyasındaki tek bir öğede bir iş akışının görünüm durumu bilgilerini içerir.

  • Alt etkinliklerin kalıcılıklarını önlemek için bir NoPersistScope kapsayıcı etkinliği.

  • C# ifadeleri desteği:

    • Visual Basic iş akışı projeleri Visual Basic ifadeleri, C# iş akışı projeleri ise C# ifadelerini kullanır.

    • Visual Studio 2010'da oluşturulan ve Visual Basic ifadeleri olan C# iş akışı projeleri, C# ifadelerini kullanan C# iş akışı projeleriyle uyumludur.

  • Sürüm geliştirmeleri:

    • Kalıcı bir WorkflowIdentity iş akışı örneği ile iş akışı tanımı arasında bir eşleme sağlayan yeni sınıf.

    • dahil olmak üzere aynı konakta birden çok iş akışı sürümünün yan yana yürütülmesi WorkflowServiceHost.

    • Dinamik Güncelleştirme'de, kalıcı iş akışı örneğinin tanımını değiştirme özelliği.

  • Mevcut bir hizmet sözleşmesiyle eşleşmesi için otomatik olarak etkinlik oluşturma desteği sağlayan sözleşme ilk iş akışı hizmeti geliştirme.

Daha fazla bilgi için bkz. Windows Workflow Foundation'daki YeniLer.

Windows 8.x Mağazası uygulamaları için .NET

Windows 8.x Store uygulamaları belirli form faktörleri için tasarlanmıştır ve işletim sisteminin gücü Windows tasarlanmıştır. .NET Framework 4.5 veya 4.5.1'in bir alt kümesi, C# veya Visual Basic kullanarak Windows için Windows 8.x Mağazası uygulamaları Visual Basic. Bu alt küme, Windows 8.x Store uygulamaları için .NET olarak anılır ve genel bakışta ele alınmıştır.

Taşınabilir Sınıf Kitaplıkları

Visual Studio 2012'de (ve sonraki sürümlerde) Taşınabilir Sınıf Kitaplığı projesi, birden çok .NET Framework platform üzerinde çalışan yönetilen derlemeler yazmanız ve derlemeniz için olanak sağlar. Taşınabilir Sınıf Kitaplığı projesi kullanarak, hedeflen platformları (Windows Phone.x Mağazası uygulamaları için .Windows 8 NET gibi) seçersiniz. Projenizin kullanılabilir türleri ve üyeleri otomatik olarak bu platformlar genelindeki ortak türler ve üyelerle kısıtlanır. Daha fazla bilgi için bkz . Taşınabilir Sınıf Kitaplığı.

Ayrıca bkz.