.NET Framework'teki yenilikler
Not
.NET Framework, güvenlik ve güvenilirlik hata düzeltmeleri ile Windows güncelleştirmelerinden bağımsız olarak hizmet verir. Genel olarak, güvenlik güncelleştirmeleri üç ayda bir yayımlar. .NET Framework, Windows'a dahil edilmeye devam edecektir ve kaldırma planı yoktur. .NET Framework uygulamalarınızı geçirmeniz gerekmez, ancak yeni geliştirme için .NET 8 veya üzerikullanın.
Bu makalede, .NET Framework'ün aşağıdaki sürümlerindeki önemli yeni özellikler ve geliştirmeler özetlenmektedir:
- .NET Framework 4.8.1
- .NET Framework 4.8
- .NET Framework 4.7.2
- .NET Framework 4.7.1
- .NET Framework 4.7
- .NET Framework 4.6.2
- .NET Framework 4.6.1
- .NET 2015 ve .NET Framework 4.6
- .NET Framework 4.5.2
- .NET Framework 4.5.1
- .NET Framework 4.5
Bu makale, her yeni özellik hakkında kapsamlı bilgi sağlamaz ve değiştirilebilir. .NET Framework hakkında genel bilgi için 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 getirmek için NuGet kullanarak bant dışı özellikler de yayınlar. Daha fazla bilgi için bkz. Ek Sınıf Kitaplıkları ve API'leri ve .NET Framework ve Bant Dışı Sürümler.
.NET Framework için NuGet paketlerinin
.NET Framework 4.8.1 ile tanışın
.NET Framework 4.8.1, .NET Framework 4.x'in önceki sürümlerine birçok yeni düzeltme ve birkaç yeni özellik ekleyerek son derece kararlı bir ürün olarak kalmaya devam eder.
.NET Framework 4.8.1'i indirme ve yükleme
.NET Framework 4.8.1'i aşağıdaki konumlardan indirebilirsiniz:
.NET Framework 4.8, Windows 11, Windows 10 sürüm 21H2, Windows 10 sürüm 21H1, Windows 10 sürüm 20H2 ve Windows Server 2022 ile başlayan ilgili sunucu platformlarına yüklenebilir. Web yükleyicisini veya çevrimdışı yükleyiciyi kullanarak .NET Framework 4.8.1'i yükleyebilirsiniz. Kullanıcıların çoğu için önerilen yol, web yükleyicisini kullanmaktır.
.NET Framework 4.8.1 Geliştirici Paketiyükleyerek Visual Studio 2022 17.3 veya sonraki sürümlerinde .NET Framework 4.8.1'i hedefleyebilirsiniz.
.NET Framework 4.8.1'deki yenilikler
.NET Framework 4.8.1 aşağıdaki alanlarda yeni özellikler sunar:
- Arm64 için yerel
desteği - WCAG2.1 uyumlu erişilebilir ipuçları
- Windows Forms – Erişilebilirlik geliştirmeleri
Bir uygulamanın Yardımcı Teknoloji kullanıcıları için uygun bir deneyim sunmasını sağlayan geliştirilmiş erişilebilirlik, .NET Framework 4.8.1'in önemli bir odağıdır. .NET Framework 4.8.1'deki erişilebilirlik geliştirmeleri hakkında bilgi için bkz. .NET Framework'de erişilebilirlikteki yenilikler
.NET Framework 4.8.1, .NET Framework ailesine yerel Arm64 desteği ekler. Bu nedenle, .NET Framework uygulamalarının ve kitaplıklarının geniş ekosistemine yönelik yatırımlarınız artık arm64'te yerel olarak iş yüklerini çalıştırmanın avantajlarından yararlanabilir; yani Arm64'te öykünmüş x64 kodunu çalıştırmaya kıyasla daha iyi bir performans.
Microsoft,herkes için erişilebilir
Bu sürümde, hem Windows Forms hem de WPF, araç ipuçlarının işlenmesinde daha erişilebilir hale getirmek için geliştirmeler yapmıştır. Her iki durumda da araç ipuçları artık Hover veya Focus kılavuzundaki
- Araç ipuçlarının fareyle üzerine gelindiğinde veya klavyeyle navigasyon yaparak kontrolü gezdiğinizde görüntülenmesi gerekir.
- Araç ipuçları kapatılabilir olmalıdır. Yani, Esc gibi basit bir klavye komutu araç ipucunu kapatır.
- Araç ipuçlarının üzerinde durulabilir olması gerekir. Kullanıcılar fare imlecini araç ipucunun üzerine yerleştirebilmelidir. Bu, büyüteç kullanma gibi senaryoların görme bozukluğu olan kullanıcıların araç ipucunu okuyabilmesini sağlar.
- Araç ipuçları kalıcı olmalıdır. Araç ipuçları, belirli bir süre geçtikten sonra otomatik olarak kaybolmamalıdır. Bunun yerine, araç ipuçları, kullanıcı fareyi başka bir denetime götürdüğünde veya bir klavye komutuyla kapatılmalıdır.
Windows Forms'da bu destek yalnızca Windows 11 veya sonraki işletim sistemlerinde kullanılabilir. Windows Forms, Windows API'sinin etrafındaki ince bir yönetilen sarmalayıcıdır ve yeni araç ipucu davranışı yalnızca Windows 11'de kullanılabilir hale gelmiştir. WPF'nin erişilebilir araç ipuçları için işletim sistemi sürümü bağımlılığı yoktur.
WPF, .NET Framework 4.8'de WCAG2.1 uyumlu araç ipuçlarına yönelik gereksinimlerin çoğunu uygulamıştı. Bu sürümde WPF, geçerli penceredeki bir araç ipucunun
Windows Forms, .NET Framework için oluşturulan ilk Windows ui yığınıydı. Bu nedenle, başlangıçta mevcut erişilebilirlik gereksinimlerini karşılamayan eski erişilebilirlik teknolojisini kullanmak için oluşturulmuştur. Bu sürümde, Windows Forms bir dizi sorunu ele almıştır. Erişilebilirlikle ilgili değişikliklerin tam listesi için .NET Framework'da erişilebilirlikle ilgili yenilikler
.NET Framework 4.8.1'deki Windows Forms geliştirmelerinin öne çıkan özellikleri şunlardır:
Metin deseni desteği– Windows Forms, UIA Metin Deseni için destek eklendi. Bu düzen, yardımcı teknolojinin TextBox veya benzeri metin tabanlı bir denetimin içeriğini harf harf dolaşmasını sağlar. Denetimin içinde metnin seçilmesini ve değiştirilmesini ve imleçte yeni metnin eklenmesini sağlar. Windows Forms TextBox, DataGridView hücreleri, ComboBox denetimleri ve daha fazlası için bu desteği ekledi.
Karşıtlık sorunlarını giderme– Çeşitli denetimlerde Windows Forms, seçim dikdörtgenlerinin karşıtlık oranını daha koyu ve daha görünür olacak şekilde değiştirmiştir.
Birkaç DataGridView sorunu düzeltildi:
- Kaydırma çubuğu adları tutarlı olacak şekilde güncelleştirildi.
- Ekran Okuyucusu artık boş DataGridView hücrelerine odaklanabiliyor.
- Geliştiriciler Özel DataGridView hücreleri için yerelleştirilmiş denetim türü özelliğini ayarlayabilir.
- DataGridViewLink hücrelerinin bağlantı rengi, arka planla daha iyi karşıtlık elde etmek için güncelleştirildi.
.NET Framework 4.8 ile tanışın
.NET Framework 4.8, .NET Framework 4.x'in önceki sürümlerine birçok yeni düzeltme ve birkaç yeni özellik ekleyerek çok kararlı bir ürün olarak kalmaya devam eder.
.NET Framework 4.8'i indirme ve yükleme
.NET Framework 4.8'i 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üklenebilir. Web yükleyicisini veya ç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 Paketiyükleyerek Visual Studio 2012 veya sonraki sürümlerinde .NET Framework 4.8'i hedefleyebilirsiniz.
.NET Framework 4.8'deki yenilikler
.NET Framework 4.8 aşağıdaki alanlarda yeni özellikler sunar:
- Temel sınıfları
- Windows Communication Foundation (WCF)
- Windows Presentation Foundation (WPF)
- Ortak dil çalışma zamanı
Bir uygulamanın Yardımcı Teknoloji kullanıcıları için uygun bir deneyim sunmasını sağlayan geliştirilmiş erişilebilirlik, .NET Framework 4.8'in önemli bir odağı olmaya devam ediyor. .NET Framework 4.8'deki erişilebilirlik geliştirmeleri hakkında bilgi için bkz. .NET Framework'de erişilebilirlikle ilgili yenilikler.
Temel sınıflar
Şifreleme üzerinde FIPS etkisini azalttık. .NET Framework'ün önceki sürümlerinde, sistem şifreleme kitaplıkları "FIPS modunda" yapılandırıldığında SHA256Managed gibi yönetilen şifreleme sağlayıcısı sınıfları bir CryptographicException oluşturur. Bu özel durumlar, sistem şifreleme kitaplıklarından farklı olarak ş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 olmadığından oluşur. Çok az geliştiricinin geliştirme makineleri FIPS modunda olduğundan, özel durumlar genellikle üretim sistemlerinde oluşturulur.
.NET Framework 4.8'i hedefleyen uygulamalarda varsayılan olarak, aşağıdaki yönetilen şifreleme sınıfları artık bu durumda bir CryptographicException oluşturmaz:
- MD5Cng
- MD5CryptoServiceProvider
- RC2CryptoServiceProvider
- RijndaelManaged
- RIPEMD160Managed
- SHA256Managed
Bunun yerine, bu sınıflar şifreleme işlemlerini bir sistem şifreleme kitaplığına yönlendirir. Bu değişiklik, geliştirici ortamları ile üretim ortamları arasındaki kafa karıştırıcı olabilecek farkları etkili bir şekilde ortadan kaldırır ve yerel bileşenlerin ve yönetilen bileşenlerin aynı şifreleme ilkesi altında çalışmasını sağlar. Bu özel durumlara bağımlı uygulamalar, AppContext anahtarını Switch.System.Security.Cryptography.UseLegacyFipsThrow
true
olarak ayarlayarak önceki davranışı geri yükleyebilir. Daha fazla bilgi için bkz. Yönetilen şifreleme sınıflarıFIPS modunda CryptographyException oluşturmaz.
ZLib güncelleştirilmiş sürümünün kullanımı
.NET Framework 4.5'ten itibaren, deflate algoritmasına bir uygulama sağlamak için clrcompression.dll derlemesi, veri sıkıştırmaya yönelik yerel bir dış kitaplık olan ZLibkullanır. clrcompression.dll.NET Framework 4.8 sürümü, çeşitli önemli iyileştirmeler ve düzeltmeler içeren ZLib Sürüm 1.2.11'i kullanacak şekilde güncelleştirildi.
Windows Communication Foundation (WCF)
ServiceHealthBehavior Tanıtımı
Sağlık uç noktaları, hizmetleri sağlık durumlarına göre yönetmek için orkestrasyon araçları tarafından yaygın olarak kullanılır. İzleme araçları tarafından izlenip, bir hizmetin kullanılabilirliği ve performansı hakkında bildirim sağlamak için sağlık denetimleri de kullanılabilir.
ServiceHealthBehavior, IServiceBehaviorgenişleten bir WCF hizmet davranışıdır. ServiceDescription.Behaviors koleksiyonuna eklendiğinde, bir hizmet davranışı aşağıdakileri yapar:
HTTP yanıt kodlarıyla hizmet durumu durumunu döndürür. Sorgu dizesinde HTTP/GET durum yoklaması isteği için HTTP durum kodunu belirtebilirsiniz.
Hizmet durumu hakkındaki bilgileri yayımlar. Hizmete özgü ayrıntılar, hizmet durumu, sınırlama sayıları ve kapasite dahil olmak üzere,
?health
sorgu dizesiyle HTTP/GET isteği kullanılarak görüntülenebilir. Hatalı davranan bir WCF hizmetiyle ilgili sorunları giderirken bu tür bilgilere erişim kolaylığı önemlidir.
Sağlık uç noktasını açığa çıkarmanın ve WCF hizmeti sağlık bilgilerini yayımlamanın iki yolu vardır:
Kod aracılığıyla. Örneğin:
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. Örneğin:
<behaviors> <serviceBehaviors> <behavior name="DefaultBehavior"> <serviceHealth httpsGetEnabled="true"/> </behavior> </serviceBehaviors> </behaviors>
OnServiceFailure
, OnDispatcherFailure
, OnListenerFailure
, OnThrottlePercentExceeded
) gibi sorgu parametreleri kullanılarak bir hizmetin sistem durumu sorgulanabilir ve her sorgu parametresi için bir HTTP yanıt kodu belirtilebilir. Sorgu parametresi için HTTP yanıt kodu atlanırsa, varsayılan olarak 503 HTTP yanıt kodu kullanılır. Mesela:
OnServiceFailure:
https://contoso:81/Service1?health&OnServiceFailure=450
ServiceHost.State
'den büyük olduğunda 450 HTTP yanıt durum kodu döndürülür.
Sorgu parametreleri ve örnekleri:
OnDispatcherFailure:
https://contoso:81/Service1?health&OnDispatcherFailure=455
Kanal dağıtıcılarından herhangi birinin durumu CommunicationState.Opened'den büyük olduğunda 455 HTTP yanıt durum kodu döndürülür.
OnListenerFailure:
https://contoso:81/Service1?health&OnListenerFailure=465
Kanal dinleyicilerinden herhangi birinin durumu CommunicationState.Opened'den büyük olduğunda 465 HTTP yanıt durum kodu döndürülür.
OnThrottlePercentAşıldı:
https://contoso:81/Service1?health&OnThrottlePercentExceeded= 70:350,95:500
Yanıtı tetikleyen {1 – 100} yüzdesini ve {200 – 599} HTTP yanıt kodunu belirtir. Bu örnekte:
Yüzde 95'ten büyükse 500 HTTP yanıt kodu döndürülür.
Yüzde 70 ile 95 arasındaysa 350 döndürülür.
Aksi takdirde 200 döndürülür.
Hizmet durumu, https://contoso:81/Service1?health
gibi bir sorgu dizesi belirtilerek HTML olarak veya https://contoso:81/Service1?health&Xml
gibi bir sorgu dizesi belirtilerek XML olarak görüntülenebilir.
https://contoso:81/Service1?health&NoContent
gibi bir sorgu dizesi boş bir HTML sayfası döndürür.
Windows Presentation Foundation (WPF)
Yüksek DPI geliştirmeleri
.NET Framework 4.8'de WPF, Per-Monitor V2 DPI Tanıma ve Mixed-Mode DPI ölçeklendirme desteği ekler. Yüksek DPI geliştirme hakkında ek bilgi için bkz. Windows'da Yüksek DPI Masaüstü Uygulaması Geliştirme.
.NET Framework 4.8, Mixed-Mode DPI ölçeklendirmesini destekleyen platformlardaki High-DPI WPF uygulamalarında barındırılan HWND'ler ve Windows Forms birlikte çalışma desteğini geliştirir (Windows 10 Nisan 2018 Güncelleştirmesi ile başlayarak). Barındırılan HWND'ler veya Windows Forms denetimleri, ve
Mixed-Mode Yüksek DPI ölçeklendirme desteğini etkinleştirmek için appcontext uygulama yapılandırma dosyasını değiştirir
<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 derleyiciye yapılan geliştirmeler. .NET Framework 4.8'deki Tam Zamanında (JIT) derleyicisi, .NET Core 2.1'deki JIT derleyicisini temel alır. .NET Core 2.1 JIT derleyicisinde yapılan iyileştirmelerin ve tüm hata düzeltmelerinin çoğu .NET Framework 4.8 JIT derleyicisine dahil edilir.
NGEN geliştirmeleri. Çalışma zamanı, Yerel Görüntü Oluşturucu (NGEN) görüntüleri için bellek yönetimini iyileştirerek NGEN görüntülerinden eşlenen verilerin bellekte yerleşik olmamasını sağlar. Bu, yürütülecek belleği değiştirerek rastgele kod yürütmeye çalışan saldırılar için kullanılabilir yüzey alanını azaltır.
Tüm derlemeler için kötü amaçlı yazılım taraması. .NET Framework'ün önceki sürümlerinde çalışma zamanı, Windows Defender veya üçüncü taraf kötü amaçlı yazılımdan koruma yazılımı kullanarak diskten yüklenen tüm derlemeleri tarar. Ancak, Assembly.Load(Byte[]) yöntemi gibi diğer kaynaklardan yüklenen derlemeler taranmaz ve algılanmamış kötü amaçlı yazılımlar içerebilir. Windows 10 üzerinde çalıştırılan .NET Framework 4.8'den itibaren, Kötü Amaçlı Yazılımdan Koruma Tarama Arabirimi (AMSI)'yi uygulayan kötü amaçlı yazılımdan koruma çözümleri tarafından bir tarama başlatılır.
.NET Framework 4.7.2'deki yenilikler
.NET Framework 4.7.2 aşağıdaki alanlarda yeni özellikler içerir:
- Temel sınıfları
- ASP.NET
- Ağ
- SQL
- WPF
- ClickOnce
.NET Framework 4.7.2'de sürekli odak noktası, uygulamanın Yardımcı Teknoloji kullanıcıları için uygun bir deneyim sağlamasına olanak tanıyan geliştirilmiş erişilebilirliktir. .NET Framework 4.7.2'deki erişilebilirlik geliştirmeleri hakkında bilgi için bkz. .NET Framework'de erişilebilirlikteki yenilikler.
Temel sınıflar
.NET Framework 4.7.2 çok sayıda şifreleme geliştirmesi, ZIP arşivleri için daha iyi sıkıştırma desteği ve ek koleksiyon API'leri içerir.
RSA.Create ve DSA.Create için yeni aşırı yüklemeler
DSA.Create(DSAParameters) ve RSA.Create(RSAParameters) yöntemleri, yeni bir DSA veya RSA anahtarı örneği oluştururken anahtar parametreleri sağlamanıza olanak tanır. Kodu aşağıdaki gibi değiştirmenize olanak 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
aşağıdaki gibi bir 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
DSA.Create(Int32) ve RSA.Create(Int32) yöntemleri, belirli bir anahtar boyutuna sahip yeni DSA veya RSA anahtarları oluşturmanıza olanak sağlar. Örneğin:
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ını kabul eder
Rfc2898DeriveBytes sınıfı, anahtar türetilirken kullanılacak HMAC algoritmasını tanımlayan bir HashAlgorithmName parametresine sahip üç yeni oluşturucuya sahiptir. Geliştiricilerin SHA-1 kullanmak yerine, aşağıdaki örnekte gösterildiği gibi SHA-256 gibi SHA-2 tabanlı bir HMAC kullanması gerekir:
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 özel anahtarları doğrudan bellekten yükleyip sabit sürücüyü atlayabilir. Yeni X509KeyStorageFlags.EphemeralKeySet bayrağı bir X509Certificate2 oluşturucuda veya X509Certificate2.Import yönteminin aşırı yüklemelerinden birinde belirtildiğinde, özel anahtarlar geçici anahtarlar olarak yüklenir. Bu, anahtarların diskte görünür olmasını engeller. Fakat:
Anahtarlar diskte kalıcı olmadığından, bu bayrakla yüklenen sertifikalar X509Store'ya eklemek için iyi adaylar değildir.
Bu şekilde yüklenen anahtarlar neredeyse her zaman Windows CNG aracılığıyla yüklenir. Bu nedenle, çağıranların sertifikası gibi uzantı yöntemlerini çağırarak özel anahtara erişmesi gerekir. GetRSAPrivateKey(). X509Certificate2.PrivateKey özelliği çalışmıyor.
Eski X509Certificate2.PrivateKey özelliği sertifikalarla çalışmadığından, geliştiricilerin kısa ömürlü anahtarlara geçmeden önce sıkı test gerçekleştirmesi gerekir.
PKCS#10 sertifika imzalama isteklerinin ve X.509 ortak anahtar sertifikalarının program aracılığıyla oluşturulması
.NET Framework 4.7.2'den başlayarak, iş yükleri sertifika imzalama istekleri (CSR) oluşturabilir ve bu da sertifika isteği oluşturma işleminin mevcut araçlara hazır olmasını sağlar. Bu, test senaryolarında sık sık yararlıdır.
Daha fazla bilgi ve kod örnekleri için .NET Blogu"PKCS#10 sertifika imzalama isteklerinin ve X.509 ortak anahtar sertifikalarının program aracılığıyla oluşturulması" bölümüne bakın.
Yeni SignerInfo Üyeleri
.NET Framework 4.7.2'den başlayarak, SignerInfo sınıfı imza hakkında daha fazla bilgi sunar. İmzalayan tarafından kullanılan imza algoritmasını belirlemek için System.Security.Cryptography.Pkcs.SignerInfo.SignatureAlgorithm özelliğinin değerini alabilirsiniz. SignerInfo.GetSignature, bu imzalayanın şifreleme imzasının bir kopyasını almak için çağrılabilir.
CryptoStream atıldıktan sonra sarılmış bir veri akışını açık bırakma
.NET Framework 4.7.2'den itibaren, CryptoStream sınıfının, Dispose'in sarmalanmış akışı kapatmasına gerek kalmaması için ek bir yapıcısı bulunmaktadır. CryptoStream örneği atıldıktan sonra 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 numaralı akıştaki
.NET Framework 4.7.2'den başlayarak, DeflateStream sınıfında sıkıştırma işlemlerinin uygulanması varsayılan olarak yerel Windows API'lerini kullanacak şekilde değiştirilmiştir. Bu genellikle önemli bir performans artışına neden olur.
.NET Framework 4.7.2'i hedefleyen uygulamalar için Windows API'lerini kullanarak sıkıştırmayı açma desteği varsayılan olarak etkindir. .NET Framework'ün ö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 API ekler. Bunlar şunlardır:
diğer koleksiyon türlerinde kullanılan deneme desenini bu iki türe genişleten
TryGetValue
yöntemleri. Yöntemler şunlardır:bir koleksiyonu HashSet<T>dönüştüren
Enumerable.To*
uzantı yöntemleri:Koleksiyonun kapasitesini ayarlamanıza olanak tanıyan yeni HashSet<T> oluşturucuları, HashSet<T> boyutunu önceden bildiğinizde bir performans avantajı sağlar:
- public HashSet(int kapasite)
- genel HashSet(int kapasitesi, IEqualityComparer
T comparer)
- public HashSet(int kapasite)
ConcurrentDictionary<TKey,TValue> sınıfı, sözlükten bir değer almak veya eklemek (eğer bulunamazsa) ve sözlüğe bir değer eklemek veya güncellemek için AddOrUpdate ve GetOrAdd yöntemlerinin yeni aşırı yüklemelerini 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'da bağımlılık ekleme için
Bağımlılık ekleme (DI) nesneleri ve bağımlılıklarını birbirinden ayrıştırarak bir bağımlılığın değişmesi nedeniyle nesnenin kodunun artık değiştirilmesi gerekmez. .NET Framework 4.7.2'yi hedefleyen ASP.NET uygulamaları geliştirirken şunları yapabilirsiniz:
işleyicilerinde ve modüllerinde ayarlayıcı tabanlı, arabirim tabanlı ve oluşturucu tabanlı ekleme kullanın,sayfa örnekleri ve ASP.NET web uygulaması projelerinin kullanıcı denetimlerini . ASP.NET web sitesi projelerinin
Sayfa örnekleri işleyicilerinde ve modüllerinde ayarlayıcı tabanlı ve arabirim tabanlı ekleme kullanın. Farklı bağımlılık ekleme çerçevelerini takın.
Aynı Site Tanımlama Bilgileri için Destek
SameSite, tarayıcının siteler arası istekle birlikte çerez göndermesini engeller. .NET Framework 4.7.2, değeri System.Web.SameSiteMode numaralandırma üyesi olan bir HttpCookie.SameSite özelliği ekler. Değeri SameSiteMode.Strict veya SameSiteMode.Laxise ASP.NET SameSite
özniteliğini set-cookie üst bilgisine ekler. SameSite desteği HttpCookie nesneleri için geçerli olduğu gibi, FormsAuthentication ve System.Web.SessionState tanımlama bilgileri için de geçerlidir.
HttpCookie nesnesi için SameSite'yi 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
web.config dosyasını değiştirerek SameSite çerezlerini uygulama düzeyinde de yapılandırabilirsiniz.
<system.web>
<httpCookies sameSite="Strict" />
</system.web>
Web yapılandırma dosyasını değiştirerek FormsAuthentication ve System.Web.SessionState tanımlama bilgileri için SameSite ekleyebilirsiniz:
<system.web>
<authentication mode="Forms">
<forms cookieSameSite="Lax">
<!-- ... -->
</forms>
</authentication>
<sessionState cookieSameSite="Lax"></sessionState>
</system.web>
Ağ
httpclienthandler özellikleri
.NET Framework 4.7.1, System.Net.Http.HttpClientHandler sınıfına sekiz özellik ekledi. Ancak, iki kişi bir PlatformNotSupportedExceptionfırlattı. .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ı için
Artan uyumluluk ve güvenlik talepleri, birçok müşterinin çok faktörlü kimlik doğrulaması (MFA) kullanmasını gerektirir. Ayrıca, güncel en iyi uygulamalar, kullanıcı parolalarının doğrudan bağlantı dizelerine dahil edilmesini caydırmaktadır. Bu değişiklikleri desteklemek için .NET Framework 4.7.2, MFA'yı desteklemek üzere var olan "Authentication" anahtar sözcüğü için "Active Directory Interactive" adlı yeni bir değer ekleyerek sqlclient bağlantı dizelerini
.NET Framework'ün önceki sürümlerinde SQL bağlantısı yalnızca SqlAuthenticationMethod.ActiveDirectoryPassword ve SqlAuthenticationMethod.ActiveDirectoryIntegrated seçeneklerini destekliyor. Bunların her ikisi de MFA'yı desteklemeyenetkileşimli olmayan
Daha fazla bilgi ve örnek için .NET Blog"SQL -- Azure AD Evrensel ve Çok Faktörlü Kimlik Doğrulama Desteği" bölümüne bakın.
Always Encrypted sürüm 2 için destek
NET Framework 4.7.2, kapanım tabanlı Always Encrypted için destek ekler. Always Encrypted'ın özgün sürümü, şifreleme anahtarlarının istemciden hiçbir zaman ayrılmadığı bir istemci tarafı şifreleme teknolojisidir. Kapanım tabanlı Always Encrypted'da istemci, isteğe bağlı olarak şifreleme anahtarlarını SQL Server'ın parçası olarak kabul edilebilen ancak SQL Server kodunun üzerinde oynanamayan güvenli bir hesaplama varlığı olan güvenli bir kapanıma gönderebilir. .NET Framework 4.7.2, kapanım tabanlı Always Encrypted'ı desteklemek için System.Data.SqlClient ad alanına aşağıdaki türleri ve üyeleri ekler:
SqlConnectionStringBuilder.EnclaveAttestationUrl, kapsayıcı tabanlı Always Encrypted için Uri'yi belirtir.
SqlColumnEncryptionEnclaveProvider, tüm enklav sağlayıcılarının türetildiği soyut bir sınıftır.
SqlEnclaveSession, belirli bir kapanım oturumunun durumunu kapsülleyen.
SqlEnclaveAttestationParameters, belirli bir Kanıtlama Protokolü yürütmek için gereken bilgileri almak için SQL Server tarafından kullanılan kanıtlama parametrelerini sağlar.
Uygulama yapılandırma dosyası daha sonra soyut System.Data.SqlClient.SqlColumnEncryptionEnclaveProvider sınıfının, muhafaza sağlayıcısının işlevselliğini sunan somut bir uygulamasını belirtir. Örneğin:
<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>
Kapanım tabanlı Always Encrypted'ın temel akışı şu şekildedir:
Kullanıcı, bölme tabanlı Always Encrypted'ı destekleyen SQL Server'a Always Encrypted bağlantısı oluşturur. Sürücü, doğru enklava bağlandığından emin olmak için kanıtlama hizmetiyle iletişim kurar.
Enklav doğrulandıktan sonra, sürücü SQL Server'da barındırılan güvenli enklav ile güvenli bir kanal oluşturur.
Sürücü, SQL bağlantısı süresince güvenli alan ile istemci tarafından yetkilendirilmiş şifreleme anahtarlarını paylaşır.
Windows Presentation Foundation
Kaynağa Göre Kaynak ResourceDictionaries Bulma
.NET Framework 4.7.2'den başlayarak, tanı asistanı belirli bir kaynak Uri'den oluşturulmuş ResourceDictionaries'ı bulabilir. (Bu özellik üretim uygulamaları tarafından değil, tanılama yardımcıları tarafından kullanılır.) Visual Studio'nun "Düzenle ve Devam Et" özelliği gibi bir tanılama yardımcısı, kullanıcının bir ResourceDictionary'i değişikliklerin çalışan uygulamaya uygulanması amacıyla düzenlemesine olanak tanır. Bunu başarmanın bir adımı, çalışan uygulamanın düzenlenmekte olan sözlükten oluşturduğu tüm ResourceDictionaries'ı bulmaktır. Örneğin, bir uygulama içeriği belirli bir kaynak URI'den kopyalanan bir ResourceDictionary bildirebilir:
<ResourceDictionary Source="MyRD.xaml" />
MyRD.xaml özgün işaretlemeyi düzenleyen bir tanılama yardımcısı, sözlüğü bulmak için yeni özelliği kullanabilir. Özellik, ResourceDictionaryDiagnostics.GetResourceDictionariesForSourceyeni bir statik yöntem tarafından uygulanır. Tanılama yardımcısı, aşağıdaki kodda gösterildiği gibi özgün işaretlemeyi tanımlayan mutlak bir Uri kullanarak yeni yöntemi çağırır:
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, VisualDiagnostics etkinleştirilmediği ve ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO
ortam değişkeni ayarlanmadığı sürece boş bir numaralandırılabilir döndürür.
ResourceDictionary sahiplerini bulma
.NET Framework 4.7.2'den başlayarak, tanılama yardımcısı belirli bir ResourceDictionarysahiplerini bulabilir. (Bu özellik, üretim uygulamaları tarafından değil tanılama yardımcıları tarafından kullanılır.) bir ResourceDictionarydeğişiklik yapıldığında WPF, değişiklikten etkilenebilen tüm DynamicResource başvurularını otomatik olarak bulur.
Visual Studio'nun "Düzenle ve Devam Et" özelliği gibi bir tanılama yardımcısı, StaticResource başvurularını işlemek için bunu genişletmek isteyebilir. Bu işlemin ilk adımı sözlüğün sahiplerini bulmaktır; yani, Resources
özelliği sözlüğe başvuran tüm nesneleri bulmak için (doğrudan veya dolaylı olarak ResourceDictionary.MergedDictionaries özelliği aracılığıyla).
System.Windows.Diagnostics.ResourceDictionaryDiagnostics sınıfında uygulanan ve Resources
özelliği olan her temel tür için bir tane olmak üzere üç yeni statik yöntem şu adımı destekler:
VisualDiagnostics etkinleştirilmediği ve ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO
ortam değişkeni ayarlanmadığı sürece bu yöntemler boş bir numaralandırılabilir döndürür.
StaticResource başvurularını bulma
Artık bir StaticResource başvurusu çözümlendiğinde tanılama yardımcısı bildirim alabilir. (Özellik, üretim uygulamaları tarafından değil tanılama yardımcıları tarafından kullanılır.) Visual Studio'nun "Düzenle ve Devam Et" özelliği gibi bir tanılama yardımcısı, ResourceDictionary değeri değiştiğinde kaynağın tüm kullanımlarını güncelleştirmek isteyebilir. WPF bunu DynamicResource başvuruları
Bildirim, yeni ResourceDictionaryDiagnostics.StaticResourceResolved olayı tarafından uygulanır:
public static event EventHandler<StaticResourceResolvedEventArgs> StaticResourceResolved;
Public Shared Event StaticResourceResolved As EventHandler(Of StaticResourceResolvedEventArgs)
Çalışma zamanı bir StaticResource başvurusu çözümlendiğinde bu olay tetiklenir. StaticResourceResolvedEventArgs bağımsız değişkenleri çözümlemeyi açıklar ve StaticResource başvurusunu barındıran nesne ile özelliği ve çözümleme için kullanılan ResourceDictionary anahtarını 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
VisualDiagnostics etkinleştirilmediği ya da ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO
ortam değişkeni ayarlanmadığı sürece, olay tetiklenmez (ve add
erişimcisi 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 tümü ClickOnce kullanılarak dağıtılabilir. Uygulama bildiriminde aşağıdaki girdi bulunursa, dağıtım .NET Framework 4.7.2 altında başarılı olur:
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
</windowsSettings>
Windows Forms uygulaması için, ClickOnce dağıtımının başarılı olması için artık uygulama bildirimi yerine uygulama yapılandırma dosyasında DPI farkındalığını ayarlamaya yönelik önceki geçici çözüm gerekli değildir.
.NET Framework 4.7.1'deki yenilikler
.NET Framework 4.7.1 aşağıdaki alanlarda yeni özellikler içerir:
Buna ek olarak, .NET Framework 4.7.1'de önemli bir odak noktası, uygulamanın Yardımcı Teknoloji kullanıcıları için uygun bir deneyim sağlamasına olanak tanıyan gelişmiş erişilebilirliktir. .NET Framework 4.7.1'deki erişilebilirlik geliştirmeleri hakkında bilgi için bkz. .NET Framework'de erişilebilirlikle ilgili yenilikler
Temel sınıflar
.NET Standard 2.0 için
.NET Standard
yapılandırma oluşturucuları için destek
Yapılandırma oluşturucuları, geliştiricilerin çalışma zamanında uygulamalar için dinamik olarak yapılandırma ayarları eklemesine ve oluşturmasına olanak tanır. Ö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 bir uygulama başlatılmadan bir süre önce ayarları tanımlanır.
Özel yapılandırma oluşturucusu oluşturmak için oluşturucunuzu soyut ConfigurationBuilder sınıfından türetip ConfigurationBuilder.ProcessConfigurationSection ve ConfigurationBuilder.ProcessRawXmlgeçersiz kılarsınız. Oluşturucularınızı .config dosyanızda da tanımlarsınız. Daha fazla bilgi için .NET Framework 4.7.1 ASP.NET ve Yapılandırma Özellikleri blog gönderisindeki "Yapılandırma Oluşturucuları" bölümüne bakın.
Çalışma zamanı özellik algılama
System.Runtime.CompilerServices.RuntimeFeature sınıfı, önceden tanımlanmış bir özelliğin derleme zamanında veya çalışma zamanında belirli bir .NET uygulamasında desteklenip desteklenmediğini belirlemek için bir mekanizma sağlar. Derleme zamanında bir derleyici, özelliğin desteklenip desteklenmediğini belirlemek için belirtilen alanın mevcut olup olmadığını denetleyebilir; bu durumda, bu özelliğin avantajlarından yararlanan kodu yayar. Bir uygulama, çalışma zamanında kod yaymadan önce RuntimeFeature.IsSupported yöntemini çağırabilir. Daha fazla bilgi için bkz. Çalışma zamanı tarafından desteklenen özellikleri tanımlamak için yardımcı yöntemi ekle.
Değer demeti türleri serileştirilebilir
.NET Framework 4.7.1'den başlayarak, System.ValueTuple ve ilişkili genel türleri, ikili serileştirmeye izin veren Serializableolarak işaretlenir. Bu, Tuple<T1,T2,T3> ve Tuple<T1,T2,T3,T4>gibi Tuple türlerini değer tuple türlerine taşımayı kolaylaştırır. Daha fazla bilgi için .NET Framework 4.7.1 Çalışma Zamanı ve Derleyici Özellikleri blog gönderisindeki "Derleyici -- ValueTuple Serileştirilebilir" bölümüne bakın.
Salt okunur başvurular için destek
.NET Framework 4.7.1, System.Runtime.CompilerServices.IsReadOnlyAttribute'yi ekler. Bu öznitelik, dil derleyicileri tarafından salt okunur başvuru dönüş türlerine veya parametrelerine sahip üyeleri işaretlemek için kullanılır. Daha fazla bilgi için .NET Framework 4.7.1 Çalışma Zamanı ve Derleyici Özellikleri blog gönderisindeki "Derleyici -- ReadOnlyReferences Desteği" bölümüne bakın. Başvuru dönüş değerleri hakkında bilgi için bkz.: Başvuru dönüş değerleri ve ref yerel değişkenleri ve Başvuru dönüş değerleri (Visual Basic).
Ortak dil çalışma zamanı (CLR)
Çöp toplama performansı iyileştirmeleri
.NET Framework 4.7.1'de çöp toplama (GC) değişiklikleri, özellikle büyük nesne yığını (LOH) ayırmaları için genel performansı artırır. .NET Framework 4.7.1'de, küçük nesne yığını (SOH) ve LOH ayırmaları için ayrı kilitler kullanılır ve bu da arka plan GC SOH'yi süpürürken LOH ayırmalarının gerçekleşmesini sağlar. Uygulamaların çok sayıda LOH ayırması yapması sonucunda, ayırma kilidi çatışmasında bir azalma ve performansta bir iyileşme beklenir. Daha fazla bilgi için blog gönderisi .NET Framework 4.7.1 Çalışma Zamanı ve Derleyici Özellikleri
Ağ
Message.HashAlgorithm için SHA-2 desteği
.NET Framework 4.7 ve önceki sürümlerinde, Message.HashAlgorithm özelliği yalnızca HashAlgorithm.Md5 ve HashAlgorithm.Sha değerlerini desteklemektedir. .NET Framework 4.7.1'den başlayarak, HashAlgorithm.Sha256, HashAlgorithm.Sha384ve HashAlgorithm.Sha512 de desteklenir. Bu değerin gerçekten kullanılıp kullanılmadığı MSMQ'ya bağlıdır çünkü Message örneğinin kendisi karma oluşturma yapmaz, ancak değerleri MSMQ'ya geçirir. Daha fazla bilgi için blog gönderisi .NET Framework 4.7.1 ASP.NET ve Yapılandırma özellikleri
ASP.NET
ASP.NET uygulamalarında Yürütme adımları
ASP.NET, istekleri 23 olay içeren önceden tanımlanmış bir işlem hattında işler. ASP.NET her olay işleyicisini yürütme adımı olarak yürütür. .NET Framework 4.7'ye kadar olan ASP.NET sürümlerinde, yerel ve yönetilen iş parçacıkları arasında geçiş nedeniyle ASP.NET yürütme bağlamını iletemez. Bunun yerine, ASP.NET yalnızca HttpContext'ı seçici bir şekilde iletir. .NET Framework 4.7.1'den başlayarak, HttpApplication.OnExecuteRequestStep(Action<HttpContextBase,Action>) yöntemi modüllerin ortam verilerini geri yüklemesine de olanak tanır. Bu özellik, izleme, profil oluşturma, tanılama veya uygulamanın yürütme akışını önemseyen kütüphanelere yöneliktir. Daha fazla bilgi için .NET Framework 4.7.1 ASP.NET ve Yapılandırma Özellikleri blog gönderisindeki "ASP.NET Yürütme Adımı Özelliği"ne bakın.
ASP.NET HttpCookie ayrıştırma
.NET Framework 4.7.1, tanımlama bilgisi değerlerini, son kullanma tarihi ve yol gibi, doğru şekilde atamak için standart bir yol sağlayan HttpCookie.TryParseadında yeni bir yöntem içerir ve bu yöntem, bir dizeden HttpCookie nesnesi oluşturmayı olanak tanır. Daha fazla bilgi için .NET Framework 4.7.1 ASP.NET ve Yapılandırma Özellikleri blog gönderisindeki "ASP.NET HttpCookie ayrıştırma" bölümüne bakın.
ASP.NET form kimlik doğrulaması kimlik bilgileri için SHA-2 karma seçeneklerini
.NET Framework 4.7 ve önceki sürümlerinde, ASP.NET geliştiricilere, MD5 veya SHA1 kullanarak yapılandırma dosyalarında şifreli parolalarla kullanıcı kimlik bilgilerini depolama izni verdi. .NET Framework 4.7.1'den başlayarak ASP.NET SHA256, SHA384 ve SHA512 gibi yeni güvenli SHA-2 karma seçeneklerini de destekler. SHA1 varsayılan olarak kalır ve web yapılandırma dosyasında varsayılan olmayan bir karma algoritması tanımlanabilir.
Önemli
Microsoft, kullanılabilir en güvenli kimlik doğrulama akışını kullanmanızı önerir. Azure SQL'e bağlanıyorsanız Azure kaynakları için Yönetilen Kimlikler önerilen kimlik doğrulama yöntemidir.
.NET Framework 4.7'deki yenilikler
.NET Framework 4.7 aşağıdaki alanlarda yeni özellikler içerir:
- Temel sınıfları
- Ağ
- ASP.NET
- Windows Communication Foundation (WCF)
- Windows Forms
- Windows Presentation Foundation (WPF)
.NET Framework 4.7'ye eklenen yeni API'lerin listesi için bkz. GitHub'da .NET Framework 4.7 API Değişiklikleri
Temel sınıflar
.NET Framework 4.7, DataContractJsonSerializertarafından serileştirmeyi geliştirir:
Eliptik Eğri Şifrelemesi (ECC)* ile gelişmiş işlevsellik
.NET Framework 4.7'de, ECDsa ve ECDiffieHellman sınıflarına, bir nesnenin önceden oluşturulmuş bir anahtarı temsil etmelerine izin vermek için ImportParameters(ECParameters)
yöntemleri eklenmiştir. Açık eğri parametreleri kullanılarak anahtarı dışarı aktarmak için bir ExportParameters(Boolean)
yöntemi de eklendi.
.NET Framework 4.7 ayrıca ek eğriler (Brainpool eğri paketi dahil) için destek ekler ve yeni Create ve Create fabrika yöntemleri aracılığıyla oluşturma kolaylığı için önceden tanımlanmış tanımlar eklemiştir.
GitHub'da .NET Framework 4.7 şifreleme geliştirmelerinin
DataContractJsonSerializer tarafından kontrol karakterleri için daha iyi destek
.NET Framework 4.7'de DataContractJsonSerializer sınıfı, denetim karakterlerini ECMAScript 6 standardına uygun olarak seri hale getirmektedir. Bu davranış, .NET Framework 4.7'yi hedefleyen uygulamalar için varsayılan olarak etkindir ve .NET Framework 4.7 altında çalışan ancak önceki bir .NET Framework 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.
Ağ
.NET Framework 4.7, ağ ile ilgili aşağıdaki özelliği ekler:
TLS protokolleri için varsayılan işletim sistemi desteği*
HTTP, FTP ve SMTP gibi System.Net.Security.SslStream ve yukarı yığın bileşenleri tarafından kullanılan TLS yığını, geliştiricilerin işletim sistemi tarafından desteklenen varsayılan TLS protokollerini kullanmasına olanak tanır. Geliştiricilerin artık bir TLS sürümünü katı bir şekilde kodlaması gerekmiyor.
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 olanak sağlayan yeni bir API kümesi ekler. geliştiriciler artık ASP.NET uygulaması yeterli değilse aşağıdaki üç bileşenin herhangi birini değiştirebilir:
Nesne Önbelleği Deposu. Geliştiriciler, yeni önbellek sağlayıcıları yapılandırma bölümünü kullanarak yeni ICacheStoreProvider arabirimini kullanarak bir ASP.NET uygulaması için nesne önbelleğinin yeni uygulamalarını takabilir.
Bellek izleme. ASP.NET'deki varsayılan bellek izleyicisi, uygulamalara işlem için yapılandırılmış özel bayt sınırına yakın çalıştıklarında veya makinenin kullanılabilir toplam fiziksel RAM'i azaldığında bildirir. Bu sınırlar yaklaştığında bildirimler tetiklenir. Bazı uygulamalarda bildirimler, yararlı tepkilere izin vermek için yapılandırılan sınırlara çok yakın bir şekilde tetiklenir. Geliştiriciler artık ApplicationMonitors.MemoryMonitor özelliğini kullanarak varsayılanı değiştirmek için kendi bellek izleyicilerini yazabilir.
Bellek Sınırı Tepkileri. Varsayılan olarak, ASP.NET özel bayt işlem sınırı yaklaştığında nesne önbelleğini kırpmaya ve GC.Collect düzenli aralıklarla çağırmaya çalışır. Bazı uygulamalarda, GC.Collect çağrılarının sıklığı veya kırpılan önbellek miktarı verimsizdir. Geliştiriciler artık IObserver uygulamalarını uygulamanın bellek izleyicisine abone yaparak 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 yapılandırma özelliği
.NET Framework 4.7'den başlayarak WCF, VARSAYıLAN ileti güvenlik protokolü olarak SSL 3.0 ve TLS 1.0'a ek olarak TLS 1.1 veya TLS 1.2'yi 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 girdiyi eklemeniz gerekir:
<runtime>
<AppContextSwitchOverrides value="Switch.System.ServiceModel.DisableUsingServicePointManagerSecurityProtocols=false;Switch.System.Net.DontEnableSchUseStrongCrypto=false" />
</runtime>
WCF uygulamalarının artırılmış güvenilirliği ve WCF serileştirme
WCF, yarış koşullarını ortadan kaldırarak performansı ve serileştirme seçeneklerinin güvenilirliğini artıran bir dizi kod değişikliği içerir. Bunlar şunlardır:
- SocketConnection.BeginRead ve SocketConnection.Readçağrılarında eşzamansız ve eşzamanlı kodların karışımına daha iyi destek.
- SharedConnectionListener ve DuplexChannelBinderile bağlantı durdurulduğunda güvenilirlik geliştirildi.
- FormatterServices.GetSerializableMembers(Type) yöntemi çağrılırken serileştirme işlemlerinin güvenilirliği geliştirildi.
- ChannelSynchronizer.RemoveWaiter yöntemini çağırarak bir garson kaldırılırken güvenilirlik geliştirildi.
Windows Forms
.NET Framework 4.7'de Windows Forms, yüksek DPI monitörler için desteği geliştirir.
Yüksek DPI desteği
.NET Framework 4.7'yi hedefleyen uygulamalardan başlayarak. .NET Framework, Windows Forms uygulamaları için yüksek DPI ve dinamik DPI desteği sunar. Yüksek DPI desteği, yüksek DPI monitörlerdeki form ve denetimlerin düzenini ve görünümünü geliştirir. Dinamik DPI, kullanıcı çalışan bir uygulamanın DPI'sini değiştirdiğinde veya ölçek faktörünü görüntülediğinde formların ve denetimlerin düzenini ve görünümünü değiştirir.
Yüksek DPI desteği, uygulama yapılandırma dosyanızda bir <System.Windows.Forms.ConfigurationSection> bölümü tanımlayarak yapılandırdığınız bir kabul etme özelliğidir. Windows Forms uygulamanıza yüksek DPI desteği ve dinamik DPI desteği ekleme hakkında daha fazla bilgi için bkz. Windows Forms'da Yüksek DPI Desteği.
Windows Presentation Foundation (WPF)
.NET Framework 4.7'de WPF aşağıdaki geliştirmeleri içerir:
Windows WM_POINTER mesajları temel alan dokunmatik/ekran kalemi yığını desteği
Artık Windows Ink Services Platformu (WISP) yerine
WPF yazdırma API'leri için yeni uygulama
WPF'nin System.Printing.PrintQueue sınıfındaki yazdırma API'leri, kullanım dışı bırakılmış XPS Yazdırma API'yerine Windows Yazdırma Belge Paketi API'sini çağırır. Bu değişikliğin uygulama uyumluluğu üzerindeki etkisi için uygulama uyumluluğu
.NET Framework 4.6.2'deki yenilikler
.NET Framework 4.6.2 aşağıdaki alanlarda yeni özellikler içerir:
Windows Presentation Foundation (WPF)
ClickOnce
Windows Forms ve WPF uygulamalarını UWP uygulamalarına dönüştürme
hata ayıklama geliştirmeleri
.NET Framework 4.6.2'ye eklenen yeni API'lerin listesi için bkz. GitHub'da .NET Framework 4.6.2 API Değişiklikleri
ASP.NET
.NET Framework 4.6.2'de ASP.NET aşağıdaki geliştirmeleri içerir:
Veri ek açıklaması doğrulayıcılarında yerelleştirilmiş hata iletileri için geliştirilmiş destek
Veri ek açıklaması doğrulayıcıları, bir sınıf özelliğine bir veya daha fazla öznitelik ekleyerek doğrulama gerçekleştirmenizi sağlar. Özniteliğin ValidationAttribute.ErrorMessage öğesi, doğrulama başarısız olursa hata iletisinin metnini tanımlar. .NET Framework 4.6.2'den başlayarak ASP.NET hata iletilerinin yerelleştirilmesini kolaylaştırır. Hata iletileri şu durumda yerelleştirilir:
ValidationAttribute.ErrorMessage doğrulama özniteliğinde sağlanır.
Kaynak dosyası App_LocalResources klasöründe depolanır.
Yerelleştirilmiş kaynaklar dosyasının adı,
DataAnnotation.Localization.{
}.resx
biçimindedir. Burada adı, dil kodu ve-
ülke/bölge kodu veya dil kodubiçiminde bir kültür adıdır.Kaynağın anahtar adı, ValidationAttribute.ErrorMessage özniteliğine atanan dizedir ve değeri yerelleştirilmiş hata iletisidir.
Örneğin, aşağıdaki veri ek açıklaması özniteliği, geçersiz bir 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 adlı bir kaynak dosyası oluşturabilirsiniz. Dosya App.LocalResources
klasöründe bulunmalıdır. Örneğin, aşağıda anahtarı ve yerelleştirilmiş Fransızca (fr) dil hata iletisindeki değeri verilmiştir:
Ad | Değer |
---|---|
Derecelendirme 1 ile 10 arasında olmalıdır. | Not 1 ile 10 arasında olmalıdır. |
Ayrıca, veri etiketleme yerelleştirmesi genişletilebilir. Geliştiriciler, yerelleştirme dizesini kaynak dosyası dışında bir yerde depolamak için IStringLocalizerProvider arabirimini uygulayarak kendi dize yerelleştirici sağlayıcılarını takabilir.
oturum durumu depolama sağlayıcılarıyla zaman uyumsuz desteği
ASP.NET artık görev döndüren yöntemlerin oturum durumu deposu sağlayıcılarıyla birlikte kullanılmasına izin vererek ASP.NET uygulamalarının asenkron işlemlerin ölçeklenebilirlik avantajlarından yararlanmasını sağlıyor. Oturum durumu deposu sağlayıcılarıyla zaman uyumsuz işlemleri desteklemek için ASP.NET, IHttpModule'den devralınan ve geliştiricilerin kendi oturum durumu modülünü ve zaman uyumsuz oturum deposu sağlayıcılarını uygulamasına olanak tanıyan yeni bir arabirim (System.Web.SessionState.ISessionStateModule) 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
Ayrıca SessionStateUtility sınıfı, zaman uyumsuz işlemleri desteklemek için kullanılabilecek IsSessionStateReadOnly ve IsSessionStateRequiredolmak üzere iki yeni yöntem içerir.
Çıktı önbelleği sağlayıcıları için zaman uyumsuz destek
.NET Framework 4.6.2'den başlayarak, zaman uyumsuzluğun ölçeklenebilirlik avantajlarını sağlamak için çıktı önbelleği sağlayıcılarıyla birlikte görev döndüren yöntemler kullanılabilir. Bu yöntemleri uygulayan sağlayıcılar, bir web sunucusunda iş parçacığının engellenmesini azaltır ve bir ASP.NET hizmetinin ö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:
System.Web.Caching.OutputCacheProvider'den devralınan ve geliştiricilerin zaman uyumsuz bir çıkış önbelleği sağlayıcısı uygulamasına olanak tanıyan System.Web.Caching.OutputCacheProviderAsync sınıfı.
Çıkış önbelleğini yapılandırmak için yardımcı yöntemler sağlayan OutputCacheUtility sınıfı.
System.Web.HttpCachePolicy sınıfında 18 yeni yöntem. Bunlar GetCacheability, GetCacheExtensions, GetETag, GetETagFromFileDependencies, GetMaxAge, GetMaxAge, GetNoStore, GetNoTransforms, GetOmitVaryStar, GetProxyMaxAge, GetRevalidation, GetUtcLastModified, GetVaryByCustom, HasSlidingExpirationve IsValidUntilExpiresiçerir.
System.Web.HttpCacheVaryByContentEncodings sınıfında 2 yeni yöntem: GetContentEncodings ve SetContentEncodings.
System.Web.HttpCacheVaryByHeaders sınıfında 2 yeni yöntem: GetHeaders ve SetHeaders.
System.Web.HttpCacheVaryByParams sınıfında 2 yeni yöntem: GetParams ve SetParams.
System.Web.Caching.AggregateCacheDependency sınıfında GetFileDependencies yöntemi.
CacheDependency'da, GetFileDependencies yöntemi yer alır.
Karakter kategorileri
.NET Framework 4.6.2'deki karakterler Unicode Standard, Sürüm 8.0.0temel alınarak sınıflandırılır. .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, karakterlerin CharUnicodeInfo sınıfına göre sınıflandırılması ve buna bağlı olan tür ve yöntemlerle sınırlıdır. Bunlar
Unicode 6.0'dan Unicode 7.0'a karakter kategorilerindeki değişiklikler için, Unicode Konsorsiyumu web sitesinde Unicode Standart, Sürüm 7.0.0
Şifreleme
FIPS 186-3 DSA içeren X509 sertifikaları için
.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'ün daha büyük anahtar boyutlarını desteklemenin yanı sıra SHA-2 karma algoritmaları (SHA256, SHA384 ve SHA512) ailesi ile bilgi işlem imzalarına olanak tanır. FIPS 186-3 desteği yeni System.Security.Cryptography.DSACng sınıfı tarafından sağlanır.
.NET Framework 4.6.1'deki RSA sınıfında ve .NET Framework 4.6.1'deki ECDsa sınıfında yapılan son değişikliklere uygun olarak, .NET Framework 4.6.2'deki DSA soyut temel sınıfı, çağıranların bu işlevselliği atama olmadan kullanmasına izin veren ek yöntemlere sahiptir. Aşağıdaki örnekte gösterildiği gibi verileri imzalamak için DSACertificateExtensions.GetDSAPrivateKey uzantısı 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 gösterildiği gibi imzalı verileri doğrulamak için DSACertificateExtensions.GetDSAPublicKey uzantısı 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ına yönelik girişlerde artan netlik
.NET Framework 3.5, üç farklı Anahtar Türetme İşlevi (KDF) yordamıyla Eliptik Eğri Diffie-Hellman Anahtar Sözleşmesi desteği ekledi. Rutinler için girişler ve rutinlerin kendileri, ECDiffieHellmanCng nesnesindeki özellikler aracılığıyla yapılandırıldı. Ancak her yordam her giriş özelliğini okumadığından, geliştiricilerin kafa karışıklığı yaşamasına neden oluyordu.
.NET Framework 4.6.2'de bunu ele almak için, bu KDF yordamlarını ve girişlerini daha net bir şekilde göstermek için ECDiffieHellman temel sınıfına aşağıdaki üç yöntem eklenmiştir:
ECDiffieHellman yöntemi | Açıklama |
---|---|
DeriveKeyFromHash(ECDiffieHellmanPublicKey, HashAlgorithmName, Byte[], Byte[]) | Formülü kullanarak anahtar malzemeyi türetir HASH(secretPrepend || x || secretAppend) HASH(secretPrepend OrElse x OrElse secretAppend) burada x EC Diffie-Hellman algoritmasının hesaplanan sonucudur. |
DeriveKeyFromHmac(ECDiffieHellmanPublicKey, HashAlgorithmName, Byte[], Byte[], Byte[]) | Formülü kullanarak anahtar malzemeyi türetir HMAC(hmacKey, secretPrepend || x || secretAppend) HMAC(hmacKey, secretPrepend OrElse x OrElse secretAppend) burada x EC Diffie-Hellman algoritmasının hesaplanan sonucudur. |
DeriveKeyTls(ECDiffieHellmanPublicKey, Byte[], Byte[]) | TLS sahte rastgele işlev (PRF) türetme algoritmasını kullanarak anahtar malzemeyi türetir. |
Kalıcı anahtar simetrik şifreleme için
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 kıldı. Anahtar adları ve anahtar sağlayıcıları kavramı uygulamaya özgü olduğundan, bu özelliğin kullanılması için tercih edilen fabrika yöntemi yerine somut uygulamaların kurucusunun kullanılması gerekir (örneğin, Aes.Create
çağrısı).
AES (AesCng) ve 3DES (TripleDESCng) algoritmaları için kalıcı anahtar simetrik şifreleme desteği vardır. Mesela:
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 karmalama için SignedXml desteği
.NET Framework 4.6.2, RSA-SHA256, RSA-SHA384 ve RSA-SHA512 PKCS#1 imza yöntemleri ve SHA256, SHA384 ve SHA512 başvuru özeti algoritmaları için SignedXml sınıfına destek ekler.
URI sabitlerinin tümü SignedXmlile açığa çıkarılır.
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 destek eklemek üzere özel bir SignatureDescription işleyicisini CryptoConfig kaydeden tüm programlar geçmişte olduğu gibi çalışmaya devam eder, ancak artık platform varsayılanları olduğundan CryptoConfig kaydı artık gerekli değildir.
SqlClient
SQL Server için .NET Framework Veri Sağlayıcısı (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 zaman aşımları
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ınır ve sonraki 5 saniye ile 1 dakika arasındaki sonraki bağlantı denemelerinde önbelleğe alınan özel durum oluşturulur. Daha fazla bilgi için bkz. SQL Server Bağlantı Havuzu (ADO.NET).
Bağlantı girişimleri genellikle hızlı bir şekilde kurtarılan geçici hatalarla başarısız olabileceğinden, Azure SQL Veritabanlarına bağlanırken bu davranış istenmez. Bağlantı yeniden deneme deneyimini daha iyi iyileştirmek için, Azure SQL Veritabanlarına bağlantılar başarısız olduğunda bağlantı havuzu engelleme süresi davranışı kaldırılır.
Yeni PoolBlockingPeriod
anahtar sözcüğünü eklemek, uygulamanız için en uygun engelleme süresini seçmenizi sağlar. Değerler şunlardır:
Azure SQL Veritabanına bağlanan bir uygulamanın bağlantı havuzu engelleme süresi devre dışı bırakılır ve başka bir SQL Server örneğine bağlanan bir uygulamanın bağlantı havuzu engelleme süresi etkinleştirilir. Bu varsayılan değerdir. Sunucu uç noktası adı aşağıdakilerden biriyle bitiyorsa, Bunlar Azure SQL Veritabanları olarak kabul edilir:
.database.windows.net
.database.chinacloudapi.cn
.database.usgovcloudapi.net
.database.cloudapi.de
Bağlantı havuzu engelleme süresi her zaman etkindir.
Bağlantı havuzu engelleme süresi her zaman devre dışı bırakılır.
Her Zaman Şifreli için Geliştirmeler
SQLClient, Always Encrypted için iki geliştirme sağlar:
Şifrelenmiş veritabanı sütunlarında parametreli sorguların performansını artırmak için, sorgu parametreleri için şifreleme meta verileri artık önbelleğe alınıyor. SqlConnection.ColumnEncryptionQueryMetadataCacheEnabled özelliği
true
(varsayılan değerdir) olarak ayarlandığında, aynı sorgu birden çok kez çağrılırsa istemci sunucudan parametre meta verilerini yalnızca bir kez alır.Anahtar önbelleğindeki sütun şifreleme anahtarı girişleri artık yapılandırılabilir bir zaman aralığından sonra çıkarılır ve SqlConnection.ColumnEncryptionKeyCacheTtl özelliği kullanılarak ayarlanır.
Windows Communication Foundation
.NET Framework 4.6.2'de, Windows Communication Foundation aşağıdaki alanlarda 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'de bu destek, 32 bitten uzun olmayan bir üssü olan ortak anahtara sahip sertifikaların kullanılmasıyla sınırlıdır. Bir uygulama .NET Framework 4.6.2'yi hedeflediğinde, bu özellik varsayılan olarak açıktır.
.NET Framework 4.6.1 ve önceki sürümleri 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ğıdaki gibi kodlarla program aracılığıyla 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ı tarafından birden fazla yaz saati ayarlama kuralı için daha iyi destek sağlanıyor
Müşteriler, DataContractJsonSerializer sınıfının tek bir saat dilimi için birden çok ayarlama kuralını destekleyip desteklemediğini belirlemek için bir uygulama yapılandırma ayarı kullanabilir. Bu, isteğe bağlı bir özelliktir. 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, DataContractJsonSerializer bir nesne tarih ve saat verilerini seri durumdan çıkarmak için TimeZone türü yerine TimeZoneInfo türünü kullanır. TimeZoneInfo, geçmiş saat dilimi verileriyle çalışmayı mümkün kılan birden çok ayarlama kuralını destekler; TimeZone yok.
TimeZoneInfo yapısı ve saat dilimi ayarlamaları hakkında daha fazla bilgi için bkz. Saat Dilimine Genel Bakış.
NetNamedPipeBinding en iyi eşleşme
WCF, istemci uygulamalarında her zaman istedikleriyle en iyi eşleşen URI'yi dinleyen hizmete bağlandığından emin olmak için ayarlanabilen yeni bir uygulama ayarına sahiptir. Bu uygulama ayarı false
(varsayılan) olarak ayarlandığında, NetNamedPipeBinding kullanan istemcilerin istenen URI'nin alt dizesi olan bir URI'yi dinleyen bir hizmete bağlanmayı denemesi mümkündür.
Örneğin, bir istemci net.pipe://localhost/Service1
'de dinleyen bir hizmete bağlanmaya çalışır, ancak bu makinede yönetici ayrıcalığıyla çalışan farklı bir hizmet net.pipe://localhost
'de dinliyordur. Bu uygulama ayarı false
olarak ayarlandığında istemci yanlış hizmete bağlanmayı dener. uygulama ayarını true
olarak ayarladıktan sonra istemci her zaman en iyi eşleşen hizmete bağlanır.
Not
NetNamedPipeBinding kullanan istemciler, hizmetleri tam uç nokta adresi yerine hizmetin temel adresine (varsa) göre bulur. 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
NetTcp'yi aktarım güvenliği ve kimlik bilgisi türü sertifika ile kullanırken SSL 3.0 artık güvenli bağlantı anlaşması için kullanılan varsayılan bir protokol değildir. TlS 1.0, NetTcp protokol listesine eklendiğinden çoğu durumda mevcut uygulamalar üzerinde hiçbir etki olmamalıdır. Mevcut tüm istemcilerin en az TLS 1.0 kullanarak bağlantı anlaşması yapabilmesi gerekir. Ssl3 gerekiyorsa, bunu anlaşmalı protokoller listesine eklemek için aşağıdaki yapılandırma mekanizmalarından birini kullanın.
TcpTransportSecurity.SslProtocols özelliği
<aktarım> bölümü, <netTcpBinding> bölümünün bir parçasıdır
<sslStreamSecurity> bölümünün <customBinding> bölümü
Windows Presentation Foundation (WPF)
.NET Framework 4.6.2'de, Windows Presentation Foundation aşağıdaki alanlarda geliştirilmiştir:
Grup sıralama
Verileri gruplandırmak için CollectionView nesnesi 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 veya kaldırdığında ya da gruplandırmada yer alan öğe özelliklerinin değerini değiştirdiğinde oluşan sezgisel olmayan sıralama sorununu giderir. Ayrıca, gruplandırma özelliklerinin karşılaştırmalarını tam koleksiyondan grup türüne taşıyarak grup oluşturma işleminin performansını artırabilir.
Grup sıralamasını desteklemek için yeni GroupDescription.SortDescriptions ve GroupDescription.CustomSort özellikleri, GroupDescription nesnesi tarafından oluşturulan grup koleksiyonunun nasıl sıralanacağını açıklar. Bu, aynı adlı ListCollectionView özelliklerinin veri öğelerinin nasıl sıralanacağını açıklama şekline benzer.
PropertyGroupDescription sınıfının CompareNameAscending ve CompareNameDescendingolmak üzere iki yeni statik özelliği en yaygın durumlar için kullanılabilir.
Örneğin, aşağıdaki XAML verileri yaşa göre gruplandırıyor, yaş gruplarını artan düzende sıralar ve her yaş grubundaki öğeleri soyadına göre gruplandırın.
<GroupDescriptions>
<PropertyGroupDescription
PropertyName="Age"
CustomSort=
"{x:Static PropertyGroupDescription.CompareNamesAscending}"/>
</PropertyGroupDescription>
</GroupDescriptions>
<SortDescriptions>
<SortDescription PropertyName="LastName"/>
</SortDescriptions>
Dokunmatik klavye desteği
Dokunmatik klavye desteği, metin girişi alabilen bir denetim tarafından dokunmatik giriş alındığında Windows 10'da dokunmatik Klavye'yi otomatik olarak çağırarak ve kapatarak WPF uygulamalarında odak izlemeyi sağlar.
.NET Framework'ün önceki sürümlerinde WPF uygulamaları WPF kalem/dokunma hareketi desteğini devre dışı bırakmadan odak izlemeyi seçemez. Sonuç olarak, WPF uygulamalarının tam WPF dokunma desteği ile Windows fare destekleme sistemi arasında seçim yapması gerekir.
Monitör başına DPI
WPF uygulamaları için yüksek DPI ve karma DPI ortamlarının son zamanlarda yaygınlaşmasını desteklemek için. .NET Framework 4.6.2'de WPF, monitör başına farkındalık sağlar. WPF uygulamanızın monitör başına DPI farkında olmasını sağlama hakkında daha fazla bilgi için GitHub'da
.NET Framework'ün önceki sürümlerinde WPF uygulamaları sistem-DPI'yi algılar. Başka bir deyişle, uygulamanın kullanıcı arabirimi, uygulamanın işlendiği monitörün DPI'sine bağlı olarak uygun şekilde işletim sistemi tarafından ö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 gibi bir yapılandırma deyimi ekleyerek WPF uygulamalarında monitör başına DPI 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, Windows Workflow Foundation aşağıdaki alanda geliştirilmiştir:
Yeniden Barındırılan WF Designer'da C# ifadeleri ve IntelliSense için destek
.NET Framework 4.5'den başlayarak WF, 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ı, İş Akışı Tasarımcısı'nın Visual Studio dışındaki bir uygulamada (örneğin, WPF'de) olmasını sağlayan önemli bir WF özelliğidir. Windows Workflow Foundation, Yeniden Barındırılan İş Akışı Tasarımcısı'nda C# ifadelerini ve IntelliSense'i destekleme olanağı sağlar. Daha fazla bilgi için Windows Workflow Foundation blogbakın.
Availability of IntelliSense when a customer rebuilds a workflow project from Visual Studio
.NET Framework'ün 4.6.2 öncesi sürümlerinde, müşteri Visual Studio'dan bir iş akışı projesini yeniden derlediğinde WF Designer IntelliSense bozulur. Proje derlemesi başarılı olsa da, iş akışı türleri tasarımcıda bulunmaz ve eksik iş akışı türleri için IntelliSense'ten gelen uyarılar Hata Listesi penceresinde görüntülenir. .NET Framework 4.6.2 bu sorunu giderir ve IntelliSense'i kullanılabilir hale getirir.
İş Akışı İzleme açık Workflow V1 uygulamaları artık FIPS modunda çalışmaktadır
FIPS Uyumluluk Modu etkin olan makineler artık İş akışı izleme açık durumda olan bir iş akışı Sürüm 1 stili uygulamayı başarıyla çalıştırabilir. 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, uygulamanın çalıştırılması "Bu uygulama Windows Platformu FIPS doğrulanmış şifreleme algoritmalarının bir parçası değildir" iletisiyle bir özel durum oluşturmaya devam eder.
Visual Studio İş Akışı Tasarımcısı ile Dinamik Güncelleştirme kullanırken iş akışı iyileştirmeleri
İş Akışı Tasarımcısı, FlowChart Etkinlik Tasarımcısı ve diğer İş Akışı Etkinlik Tasarımcıları artık DynamicUpdateServices.PrepareForUpdate yöntemi çağrıldıktan sonra kaydedilmiş iş akışlarını başarıyla yükleyip görüntülüyor. .NET Framework'ün .NET Framework 4.6.2 öncesi sürümlerinde, DynamicUpdateServices.PrepareForUpdate çağrıldıktan sonra kaydedilmiş bir iş akışı için Visual Studio'da bir XAML dosyasının yüklenmesi aşağıdaki sorunlara neden olabilir:
İş Akışı Tasarımcısı XAML dosyasını doğru yükleyemiyor (ViewStateData.Id satırın sonunda olduğunda).
Akış Çizelgesi Etkinlik Tasarımcısı veya diğer İş Akışı Etkinlik 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'yi destekleyecek şekilde güncelleştirildi. ClickOnce hangi protokolün gerekli olduğunu otomatik olarak algılar; TLS 1.1 ve 1.2 desteğini etkinleştirmek için ClickOnce uygulamasında ek adım gerekmez.
Windows Forms ve WPF uygulamalarını UWP uygulamalarına dönüştürme
Windows artık WPF ve Windows Forms uygulamaları da dahil olmak üzere mevcut Windows masaüstü uygulamalarını Evrensel Windows Platformu'na (UWP) getirme özellikleri sunuyor. Bu teknoloji, mevcut kod tabanınızı UWP'ye aşamalı olarak geçirmenizi ve böylece uygulamanızı tüm Windows 10 cihazlarına getirmenizi sağlayarak bir köprü görevi görür.
Dönüştürülen masaüstü uygulamaları, UWP uygulamalarının uygulama kimliğine benzer bir uygulama kimliği elde eder ve bu da UWP API'lerini Canlı Kutucuklar ve bildirimler gibi özellikleri etkinleştirmek için erişilebilir hale getirir. Uygulama önceki gibi davranmaya devam eder ve tam güven uygulaması olarak çalışır. Uygulama dönüştürüldükten sonra, uyarlamalı bir 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 cihazlarında kullanılabilir hale getirilebilir.
Hata ayıklama geliştirmeleri
.NET Framework 4.6.2'daki yönetilmeyen hata ayıklama API'si, bir NullReferenceException fırlatıldığında ilave analiz gerçekleştirmek üzere geliştirildi; bu sayede, kaynak kodunun tek bir satırındaki hangi değişkenin null
olduğu belirlenebilir. Bu senaryoyu desteklemek için yönetilmeyen hata ayıklama API'sine aşağıdaki API'ler eklenmiştir.
ICorDebugCode4, ICorDebugVariableHomeve ICorDebugVariableHomeEnum arabirimleri, yönetilen değişkenlerin yerel adreslerini kullanıma sunar. Bu, hata ayıklayıcıların bir NullReferenceException oluştuğunda bazı kod akışı çözümlemeleri yapmalarını ve
null
yerel konuma karşılık gelen yönetilen değişkeni belirlemek için geriye doğru çalışmasını sağlar.ICorDebugType2::GetTypeID yöntemi, hata ayıklayıcının ICorDebugType örneğine ihtiyaç duymaksızın bir COR_TYPEID elde etmesini sağlayan, ICorDebugType için bir COR_TYPEIDeşlemesi sunar. COR_TYPEID üzerindeki mevcut API'ler, türün sınıf düzenini belirlemek için kullanılabilir.
.NET Framework 4.6.1'deki yenilikler
.NET Framework 4.6.1 aşağıdaki alanlarda yeni özellikler içerir:
.NET Framework 4.6.1 hakkında daha fazla bilgi için aşağıdaki konulara bakın:
4.6.1
Uygulama Uyumluluğu .NET Framework API fark karşılaştırması
(GitHub'da)
Şifreleme: ECDSA içeren X509 sertifikaları için destek
.NET Framework 4.6, X509 sertifikaları için RSACng desteği ekledi. .NET Framework 4.6.1, ECDSA (Eliptik Eğri Dijital İmza Algoritması) X509 sertifikaları için destek ekler.
ECDSA daha iyi performans sunar ve RSA'dan daha güvenli bir şifreleme algoritmasıdır ve Aktarım Katmanı Güvenliği (TLS) performansı ve ölçeklenebilirliğinin önemli olduğu mükemmel bir seçim sağlar. .NET Framework uygulaması, çağrıları mevcut Windows işlevselliğine sarmalar.
Aşağıdaki örnek kod, .NET Framework 4.6.1'de yer alan yeni ECDSA X509 sertifikalarını kullanarak 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'da imza oluşturmak için gereken kodla belirgin bir zıtlık 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
Aşağıdakiler ADO.NET'e eklendi:
Donanım korumalı anahtarlar için Always Encrypted desteği
ADO.NET artık Always Encrypted sütun ana anahtarlarının Donanım Güvenlik Modülleri'nde (HSM) yerel olarak depolanmasını destekliyor. 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 anahtarlardan yararlanabilir.
Müşterilerin HSM'de depolanan sütun ana anahtarlarıyla korunan Always Encrypted verilerine erişmek için uygulama sunucularına veya istemci bilgisayarlara HSM satıcı tarafından sağlanan CSP sağlayıcısını veya CNG anahtar deposu sağlayıcılarını yüklemesi gerekir.
AlwaysOn için geliştirilmiş MultiSubnetFailover bağlantı davranışı
SqlClient artık bir AlwaysOn Kullanılabilirlik Grubuna (AG) otomatik olarak daha hızlı bağlantılar sağlıyor. Uygulamanızın farklı bir alt ağdaki AlwaysOn kullanılabilirlik grubuna (AG) bağlanıp bağlanmadığını saydam bir şekilde algılar ve geçerli etkin sunucuyu hızla bulur ve sunucuya bir bağlantı sağlar. Bu sürümden önce, bir uygulamanın bir AlwaysOn Kullanılabilirlik Grubuna bağlandığını belirtmek için bağlantı dizesini "MultisubnetFailover=true"
içerecek şekilde ayarlaması gerekiyordu. bağlantı anahtar sözcüğü true
olarak ayarlanmadan, bir uygulama AlwaysOn Kullanılabilirlik Grubuna bağlanırken zaman aşımıyla karşılaşabilir. Bu sürümle, bir uygulamanın artık
Windows Presentation Foundation (WPF)
Windows Presentation Foundation bir dizi iyileştirme ve değişiklik içerir.
İyileştirilmiş performans
Dokunma olaylarının tetiklemesindeki gecikme .NET Framework 4.6.1'de düzeltildi. Ayrıca, hızlı giriş sırasında RichTextBox denetiminde yazmak işleme iş parçacığını artık engellemez.
Yazım denetimi iyileştirmeleri
WPF'deki yazım denetleyicisi, ek dilleri yazım denetimi için işletim sistemi desteğinden yararlanmak üzere Windows 8.1 ve sonraki sürümlerde güncelleştirildi. Windows 8.1'in önceki Windows sürümlerinde işlevsellikte bir değişiklik yoktur.
.NET Framework'ün önceki sürümlerinde olduğu gibi, bir TextBox denetiminin veya RichTextBox bloğunun dili aşağıdaki sırayla bilgi aranarak algılanır:
varsa
xml:lang
.Geçerli giriş dili.
Geçerli kültür.
WPF'de dil desteği hakkında daha fazla bilgi için.NET Framework 4.6.1 özellikleriyle ilgili
Kullanıcı başına özel sözlükler için ek destek
.NET Framework 4.6.1'de WPF, genel olarak kaydedilmiş özel sözlükleri tanır. Bu özellik, bunları denetim başına kaydetme özelliğine ek olarak kullanılabilir.
WPF'nin önceki sürümlerinde özel sözlükler Dışlanan Sözcükleri ve Otomatik Düzelt listelerini tanımıyordu. Windows 8.1 ve Windows 10'da, %AppData%\Microsoft\Spelling\<language tag>
dizinine yerleştirilebilen dosyaların kullanımı aracılığıyla desteklenir. Aşağıdaki kurallar bu dosyalar için geçerlidir:
Dosyalar .dic (eklenen sözcükler için), .exc (dışlanan sözcükler için) veya .acl (Otomatik Düzelt için) uzantılarına sahip olmalıdır.
Dosyalar, Bayt Siparişi İşareti (BOM) ile başlayan UTF-16 LE düz metni olmalıdır.
Her satır bir sözcükten (eklenen ve hariç tutulan sözcük listelerinde) veya sözcükleri dikey çubukla ("|") ayırarak otomatik düzeltme çifti içermelidir (Otomatik Düzelt sözcük listesinde).
Bu dosyalar salt okunur olarak kabul edilir 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ükler .lex dosyalarını kullanmaya devam etmelidir.
Örnekleri
Microsoft/WPF-Samples GitHub deposunda bir dizi WPF örneği vardır. Bize bir pull-request göndererek veya bir GitHub sorunu açarak örneklerimizi geliştirmemize yardımcı olun.
DirectX uzantılarını
WPF, DX10 ve Dx11 içeriğiyle birlikte çalışmanızı kolaylaştıran yeni D3DImage uygulamaları sağlayan bir NuGet paketi içerir. Bu paketin kodu açık kaynaklıdır ve GitHubüzerinde
Windows Workflow Foundation: İşlemler
Transaction.EnlistPromotableSinglePhase yöntemi artık işlemi yükseltmek için MSDTC dışında bir dağıtılmış işlem yöneticisi kullanabilir. Bunu, yeni Transaction.EnlistPromotableSinglePhase(IPromotableSinglePhaseNotification, Guid) aşırı yükleme fonksiyonuna bir GUID işlem yükseltici tanımlayıcısı belirterek yaparsınız. Bu işlem başarılı olursa, işlemin özelliklerine yönelik sınırlamalar vardır. MSDTC olmayan bir işlem yükselticisi kaydolduktan sonra, aşağıdaki yöntemler MSDTC'ye yükseltme gerektirdiğinden bir TransactionPromotionException oluşturur:
MSDTC olmayan bir işlem teşvik edicisi dahil edildikten sonra, tanımladığı protokoller kullanılarak gelecekteki kalıcı dahil etmeler için kullanılması gerekmektedir. İşlem tanıtıcısının Guid öğesi, PromoterType özelliği kullanılarak elde edilebilir. İşlem yükseltildiğinde, işlem yükseltici yükseltilen belirteci temsil eden bir Byte dizisi sağlar. Bir uygulama, GetPromotedToken yöntemiyle MSDTC olmayan bir işlem için yükseltilen belirteci alabilir.
Yükseltme işleminin başarıyla tamamlanması için yeni Transaction.EnlistPromotableSinglePhase(IPromotableSinglePhaseNotification, Guid) aşırı yükleme kullanıcılarının belirli bir çağrı dizisini izlemesi zorunludur. Bu kurallar yöntemin belgelerinde belgelenmiştir.
Profil çıkarma
Yönetilmeyen profil oluşturma API'si aşağıdaki gibi geliştirilmiştir:
ICorProfilerInfo7 arabiriminde PDB'lere erişmek için daha iyi destek.
ASP.NET Core'da derlemelerin Roslyn tarafından bellek içinde derlenmeleri çok daha yaygın hale gelmektedir. Profil oluşturma araçları oluşturan geliştiriciler için bu, geçmişte diskte seri hale getirilmiş PDB'lerin artık mevcut olmayabileceği anlamına gelir. Profil oluşturucu araçları genellikle kod kapsamı veya satır satır performans analizi gibi görevlerin kaynak satırlarına kodu eşlemek için PDB'leri kullanır. ICorProfilerInfo7 arabirimi artık ICorProfilerInfo7::GetInMemorySymbolsLength ve ICorProfilerInfo7::ReadInMemorySymbolsolmak üzere iki yeni yöntem içeriyor, bu sayede profil oluşturucu, yeni API'leri kullanarak bellek içi PDB'nin içeriğini bayt dizisi olarak elde edebilir, ardından işleyebilir veya diske seri hale getirebilir.
ICorProfiler arabirimiyle daha iyi enstrümantasyon.
Dinamik izleme için
ICorProfiler
API'leri ReJit işlevini kullanan profil oluşturucular artık bazı meta verileri değiştirebilir. Daha önce bu tür araçlar herhangi bir zamanda IL'yi izleyebiliyordu, ancak meta veriler yalnızca modül yükleme zamanında değiştirilebiliyordu. IL meta verileri ifade ettiğinden, yapılabilecek izleme türlerini sınırlamıştı. Modül yüklendikten sonra meta veri düzenlemelerinin bir alt kümesini desteklemek için ICorProfilerInfo7::ApplyMetaData yönteminiekleyerek, özellikle yeni , , , , ve kayıtları ekleyerek bu sınırların bazılarını kaldırdık. Bu değişiklik, çok daha geniş bir anında ölçüm aralığını mümkün kılar.
Yerel Görüntü Oluşturucu (NGEN) PDB'leri
Makineler arası olay izleme, müşterilerin Makine A'daki bir programın profilini oluşturmasına ve B Makinesinde kaynak satır eşlemesi ile profil oluşturma verilerine bakmasına olanak tanır. Kullanıcı, .NET Framework'ün önceki sürümlerini kullanarak profili oluşturulan makinedeki tüm modülleri ve yerel görüntüleri kaynaktan yerel eşlemeyi oluşturmak için IL PDB'yi içeren analiz makinesine kopyalar. Dosyalar telefon uygulamaları gibi nispeten küçük olduğunda bu işlem iyi çalışsa da, dosyalar masaüstü sistemlerinde çok büyük olabilir ve kopyalamak için önemli bir süre gerektirebilir.
Ngen PDB'leri ile NGen, IL PDB bağımlılığı olmadan IL'den yerele eşlemeyi içeren bir PDB oluşturabilir. Makineler arası olay izleme senaryomuzda tek gereken, Makine A tarafından oluşturulan yerel görüntü PDB'sini B Makinesine kopyalamak ve IL PDB'nin kaynakto-IL eşlemesini ve yerel görüntü PDB'sinin IL-yerel eşlemesini okumak için
.NET 2015'teki yenilikler
.NET 2015, .NET Framework 4.6 ve .NET Core'ı tanıtır. Bazı yeni özellikler her ikisi için de geçerlidir ve diğer özellikler .NET Framework 4.6 veya .NET Core'a özeldir.
ASP.NET Core
.NET 2015, modern bulut tabanlı uygulamalar oluşturmaya yönelik yalın bir .NET uygulaması olan ASP.NET Core'a sahiptir. ASP.NET Core modülerdir, bu nedenle yalnızca uygulamanıza gereken özellikleri ekleyebilirsiniz. IIS'de veya özel bir işlemde kendi başınıza barındırılabilir ve .NET Framework'ün farklı sürümlerine sahip uygulamaları aynı sunucuda ç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ştirilir. Visual Studio 2015 veya sonraki sürümlerde araçlar aracılığıyla ASP.NET Core uygulamaları oluşturursunuz. Mevcut uygulamalarınız yeni .NET Framework üzerinde çalışır; ancak MVC 6 veya SignalR 3 kullanan bir uygulama oluşturmak için Visual Studio 2015 veya sonraki sürümlerinde proje sistemini kullanmanı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 HttpResponse.FlushAsynczaman uyumsuz yanıt temizleme için dilinizin
async/await
desteği kullanılarak yanıtların zaman uyumsuz olarak boşaltılmasına olanak tanıyan basit bir görev tabanlı API sağlar.Model bağlaması, görev döndüren yöntemleri destekler
.NET Framework 4.5'te ASP.NET, Web Forms sayfalarında ve kullanıcı denetimlerinde CRUD tabanlı veri işlemlerine genişletilebilir, kod odaklı bir yaklaşımı etkinleştiren Model Bağlama özelliğini ekledi. Model Bağlama sistemi artık Taskdöndüren model bağlama yöntemlerini destekliyor. Bu özellik, Web Forms geliştiricilerinin Entity Framework de dahil olmak üzere ORM'lerin daha yeni sürümlerini kullanırken veri bağlama sisteminin kolaylığıyla zaman uyumsuzluğun ölçeklenebilirlik avantajlarını elde etmesini sağlar.
Asenkron model bağlama,
aspnet:EnableAsyncModelBinding
yapılandırma ayarı tarafından denetlenir.<appSettings> <add key=" aspnet:EnableAsyncModelBinding" value="true|false" /> </appSettings>
Hedef .NET Framework 4.6 uygulamalarında varsayılan olarak
true
olur. .NET Framework 4.6 üzerinde çalışan ve .NET Framework'ün önceki bir sürümünü hedefleyen uygulamalarda, varsayılan olarakfalse
. Yapılandırma ayarıtrue
olarak ayarlanarak etkinleştirilebilir.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 ve kullanıcılar için daha düşük gecikme süresine neden olan yeni bir web sayfası sürümüdür. Protokol, tek bir deneyimin parçası olarak istenen birden çok yapıt için iyileştirildiğinden, web sayfaları (hizmetlerin aksine) HTTP/2'den en iyi şekilde yararlanıyor. .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 ve ASP.NET'de yeni özellikler gerekiyordu. HTTP/2'yi ASP.NET ile kullanmak için Windows 10'da çalışıyor olmanız gerekir. HTTP/2, System.Net.Http.HttpClient API'sini kullanan Windows 10 Evrensel Windows Platformu (UWP) uygulamaları için de varsayılan olarak desteklenir ve açıktır.
ASP.NET uygulamalarında PUSH_PROMISE özelliğini kullanmanın bir yolunu sağlamak için, HttpResponse sınıfına iki aşırı yükleme içeren yeni bir yöntem (PushPromise(String) ve PushPromise(String, String, NameValueCollection)) eklenmiştir.
Not
ASP.NET Core HTTP/2'yi desteklese de PUSH PROMISE özelliğine yönelik destek henüz eklenmemiştir.
Tarayıcı ve web sunucusu (Windows üzerinde IIS) tüm işleri yapar. Kullanıcılarınız için ağır kaldırma yapmanız gerekmez.
ana tarayıcıların çoğu HTTP/2destekler, bu nedenle sunucunuz destekliyorsa kullanıcılarınızın HTTP/2 desteğinden yararlanması olasıdır.
Belirteç Bağlama Protokolü için
Desteği Microsoft ve Google, Belirteç Bağlama Protokolüolarak adlandırılan yeni bir kimlik doğrulaması yaklaşımı üzerinde işbirliği içindedir. Kimlik doğrulama jetonlarının (tarayıcı önbelleğinizde) çalınarak kötü niyetli kişiler tarafından parolanıza veya başka ayrıcalıklı bilgilere ihtiyaç duyulmadan güvenli kaynaklara (örneğin, banka hesabınız) erişim sağlanabileceği varsayımıdır. Yeni protokol bu sorunu azaltmayı amaçlar.
Belirteç Bağlama Protokolü, Windows 10'da tarayıcı özelliği olarak uygulanacaktır. ASP.NET uygulamalar protokole katılır, böylece kimlik doğrulama belirteçlerinin meşru olduğu doğrulanır. İstemci ve sunucu uygulamaları, protokol tarafından belirtilen uçtan uca korumayı oluşturur.
Rastgele dize karma algoritmaları
.NET Framework 4.5,
rastgele dize karma algoritması kullanıma sunulmuştur. Ancak, bazı ASP.NET özellikleri kararlı bir karma koda bağlı olduğundan ASP.NET tarafından desteklenmiyordu. .NET Framework 4.6'da, rastgele dize karma algoritmaları artık desteklenmektedir. Bu özelliği etkinleştirmek için aspnet:UseRandomizedStringHashAlgorithm
yapılandırma ayarını kullanın.<appSettings> <add key="aspnet:UseRandomizedStringHashAlgorithm" value="true|false" /> </appSettings>
ADO.NET
ADO .NET artık SQL Server 2016'da kullanılabilen Always Encrypted özelliğini destekliyor. Always Encrypted ile SQL Server şifrelenmiş veriler üzerinde işlemler gerçekleştirebilir ve en iyi şifreleme anahtarı, uygulamanın sunucuda değil müşterinin güvenilen ortamında bulunur. Always Encrypted, müşteri verilerinin güvenliğini sağlar, böylece DTA'lar düz metin verilerine erişemeyebilir. Verilerin şifrelenmesi ve şifresinin çözülmesi sürücü düzeyinde saydam bir şekilde gerçekleşir ve mevcut uygulamalarda yapılması gereken değişiklikler en aza indirgenir. 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 derleyicisinin (başlangıçta kod adı RyuJIT) yeni bir sürümünü 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ışır. Yeni derleyiciye geçişi mümkün olduğunca saydam hale getirmek için özen gösterilmiş olsa da, davranış değişiklikleri mümkündür.
Yeni 64 bit JIT derleyicisi, System.Numerics ad alanında SIMD özellikli türlerle birleştiğinde donanım SIMD hızlandırma özellikleri de içerir ve bu da iyi performans iyileştirmeleri sağlayabilir.
Derleme yükleyicisi geliştirmeleri
Derleme yükleyicisi artık ilgili NGEN görüntüsü yüklendikten sonra IL derlemelerini kaldırarak belleği daha verimli bir şekilde kullanıyor. Bu değişiklik, özellikle büyük 32 bit uygulamalar (Visual Studio gibi) için yararlı olan sanal belleği azaltır ve fiziksel bellek tasarrufu sağlar.
Temel sınıf kitaplığı değişiklikleri
Temel 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:
IReadOnlyCollection<T> uygulamaları
Ekstra koleksiyonlar IReadOnlyCollection<T>'ı, Queue<T> ve Stack<T>gibi uygular.
CultureInfo.CurrentCulture ve CultureInfo.CurrentUICulture
CultureInfo.CurrentCulture ve CultureInfo.CurrentUICulture özellikleri artık salt okunur değil, okuma-yazma özelliğine sahiptir. Bu özelliklere yeni bir CultureInfo nesnesi atarsanız,
Thread.CurrentThread.CurrentCulture
özelliği tarafından tanımlanan geçerli iş parçacığı kültürü veThread.CurrentThread.CurrentUICulture
özellikleri tarafından tanımlanan geçerli ui iş parçacığı kültürü de değişir.Atık toplama (GC) geliştirmeleri
GC sınıfı artık kritik bir yol yürütülürken çöp toplamayı engellemenizi sağlayan TryStartNoGCRegion ve EndNoGCRegion yöntemlerini içerir.
GC.Collect(Int32, GCCollectionMode, Boolean, Boolean) yönteminin yeni bir aşırı yüklemesi, hem küçük nesne yığınının hem de büyük nesne yığınının süpürülmüş ve sıkıştırılmış veya yalnızca süpürülmüş olup olmadığını denetlemenize olanak tanır.
SIMD destekli türler
System.Numerics ad alanı artık Matrix3x2, Matrix4x4, Plane, Quaternion, Vector2, Vector3ve Vector4gibi SIMD özellikli bir dizi türü içerir.
Yeni 64 bit JIT derleyicisi donanım SIMD hızlandırma özellikleri de içerdiğinden, yeni 64 bit JIT derleyicisi ile SIMD özellikli türler kullanılırken özellikle önemli performans geliştirmeleri vardır.
Şifreleme güncellemeleri
API'si Windows Şifreleme API'lerininWindows CNG şifreleme API'lerini destekleyecek şekilde güncelleştiriliyor. .NET Framework'ün önceki sürümleri, uygulamasının temeli olarak önceki bir sürümüne dayanmaktadır. Belirli uygulama kategorileri için önemli olan modern şifreleme algoritmalarını desteklediğinden CNG API'sini desteklemeye yönelik isteklerimiz vardı. .NET Framework 4.6, Windows CNG şifreleme API'lerini desteklemek için aşağıdaki yeni geliştirmeleri içerir:
mümkün olduğunda CAPI tabanlı uygulama yerine CNG tabanlı bir uygulama döndüren X509 Sertifikaları,
System.Security.Cryptography.X509Certificates.RSACertificateExtensions.GetRSAPublicKey(System.Security.Cryptography.X509Certificates.X509Certificate2)
veSystem.Security.Cryptography.X509Certificates.RSACertificateExtensions.GetRSAPrivateKey(System.Security.Cryptography.X509Certificates.X509Certificate2)
için bir uzantı yöntemleri kümesi. (Bazı akıllı kartlar, vb., hala CAPI gerektirir ve API'ler geri dönüşü işler).RSA algoritmasının CNG uygulamasını sağlayan System.Security.Cryptography.RSACng sınıfı.
Sık kullanılan işlemlerin artık türü dönüştürme gerektirmemesi için RSA API'sinde yapılan geliştirmeler. Örneğin, X509Certificate2 nesnesi kullanarak verileri şifrelemek için .NET Framework'ün önceki sürümlerinde aşağıdakine benzer bir kod gerekir.
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'daki yeni şifreleme API'lerini kullanan kod, atamayı önlemek 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)
Unix zamanı ile tarih ve saat arasında dönüştürme desteği
Tarih ve saat değerlerini Unix saatine veya Unix saatinden dönüştürmeyi desteklemek için aşağıdaki yeni yöntemler DateTimeOffset yapısına eklenmiştir:
Uyumluluk anahtarları
AppContext sınıfı, kitaplık yazarlarının kullanıcıları için yeni işlevsellikten standart bir vazgeçme mekanizması sağlamasını mümkün kılan yeni bir uyumluluk özelliği ekler. Bir geri çevirme isteğini iletmek için bileşenler arasında gevşek bir şekilde bağlanmış bir sözleşme oluşturur. Bu özellik genellikle mevcut işlevsellikte bir değişiklik yapıldığında önemlidir. Buna karşılık, yeni işlevler için zaten örtük bir kabul vardır.
AppContextile kitaplıklar uyumluluk anahtarlarını tanımlar ve kullanıma sunarken, bunlara bağımlı olan kod bu anahtarları kitaplık davranışını etkileyecek şekilde ayarlayabilir. Varsayılan olarak, kitaplıklar yeni işlevselliği sağlar ve yalnızca anahtar etkinleştirildiyse işlevselliği değiştirir (yani önceki işlevi sağlar).
Bir uygulama (veya kitaplık), bağımlı kitaplığın tanımladığı bir anahtarın değerini (daima Boolean değerindedir) tanımlayabilir. Anahtar her zaman varsayılan olarak
false
. Anahtarıntrue
olarak ayarlanması bunu etkinleştirir. Anahtarı açıkçafalse
olarak ayarlamak 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 bildirip bildirmediğini denetlemesi ve ardından uygun şekilde işlem yapması 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
Kütüphane tarafından sağlanan resmi bir sözleşme olduklarından, anahtarlar için tutarlı bir biçim kullanmak yararlıdır. Aşağıda iki açık biçim vardır.
anahtar
. ad alanı . anahtar adı Anahtar
. kitaplık . anahtar adı
Görev tabanlı zaman uyumsuz modelinde (TAP) yapılan değişiklikler
.NET Framework 4.6'yı hedefleyen uygulamalar için Task ve Task<TResult> nesneleri çağıran iş parçacığının kültürünü ve kullanıcı arabirimi kültürünü devralır. .NET Framework'ün önceki sürümlerini hedefleyen veya belirli bir .NET Framework sürümünü hedeflemeyen uygulamaların davranışı etkilenmez. Daha fazla bilgi için CultureInfo sınıfı konusunun "Kültür ve görev tabanlı zaman uyumsuz işlemler" bölümüne bakın.
System.Threading.AsyncLocal<T> sınıfı,
async
yöntemi gibi belirli bir zaman uyumsuz denetim akışı için yerel olan ortam verilerini temsil etmenizi sağlar. Verileri iş parçacıkları arasında kalıcı hale getirmek için kullanılabilir. Ayrıca ortam verileri değiştiğinde, AsyncLocal<T>.Value özelliği açıkça değiştirildiğinden veya iş parçacığı bir bağlam geçişiyle karşılaştığından bildirim alan bir geri çağırma yöntemi de tanımlayabilirsiniz.Belirli bir durumda tamamlanan görevleri döndürmek için görev tabanlı zaman uyumsuz desene (TAP) Task.CompletedTask, Task.FromCanceledve Task.FromExceptionüç kolaylık yöntemi eklenmiştir.
NamedPipeClientStream sınıfı artık yeni ConnectAsyncile zaman uyumsuz iletişimi destekliyor. yöntem.
EventSource artık Olay günlüğü yazmayı destekliyor
Artık EventSource sınıfını, makinede oluşturulan mevcut ETW oturumlarına ek olarak olay günlüğüne yönetim veya işlem iletilerini günlüğe kaydetmek için kullanabilirsiniz. Geçmişte bu işlevsellik için Microsoft.Diagnostics.Tracing.EventSource NuGet paketini kullanmanız gerekiyordu. Bu işlev artık .NET Framework 4.6'da yerleşiktir.
Hem NuGet paketi hem de .NET Framework 4.6 aşağıdaki özelliklerle güncelleştirildi:
dinamik olayları
Olay yöntemleri oluşturmadan "anında" tanımlanan olaylara izin verir.
Zengin yükler
Özel olarak öznitelikli sınıfların ve dizilerin yanı sıra ilkel türlerin yük olarak geçirilmesine izin verir
Etkinlik izleme
Başlat ve Durdur olaylarının, aralarındaki olayları, aktif olan tüm etkinlikleri temsil eden bir ID ile etiketlemesini sağlar.
Bu özellikleri desteklemek için aşırı yüklenmiş Write yöntemi EventSource sınıfına eklenmiştir.
Windows Presentation Foundation (WPF)
HDPI geliştirmeleri
WPF'deki HDPI desteği artık .NET Framework 4.6'da daha iyi. Kenarlıklı denetimlerdeki kırpma örneklerini azaltmak için düzen yuvarlamada değişiklikler yapılmıştır. Varsayılan olarak, bu özellik yalnızca TargetFrameworkAttribute .NET Framework 4.6 olarak ayarlandıysa etkinleştirilir. Çerçevenin ö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ı DPI ayarlarına sahip birden çok monitörle kaplanan WPF pencereleri artık karartılmış alanlar olmaksızın tamamen görüntüleniyor. Bu yeni davranışı devre dışı bırakmak için app.config dosyasının
<appSettings>
bölümüne aşağıdaki satırı ekleyerek bu davranışı geri çevirebilirsiniz:<add key="EnableMultiMonitorDisplayClipping" value="true"/>
System.Windows.Input.Cursor'ye DPI ayarına göre sağ imleci otomatik olarak yükleme desteği eklendi.
Dokunuş daha iyi
Müşteri, dokunmanın öngörülemeyen davranışlar ürettiğini belirttiği Connect raporları, .NET Framework 4.6'da ele alınmıştır. Windows Mağazası 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'daki WPF, Windows 8.1 ve sonraki sürümlerin saydam alt pencerelerini destekler. Bu, ana pencerelerinizde dikdörtgen olmayan ve saydam alt pencereler oluşturmanıza olanak tanır. HwndSourceParameters.UsesPerPixelTransparency özelliğini
true
olarak ayarlayarak bu özelliği etkinleştirebilirsiniz.
Windows Communication Foundation (WCF)
ssl desteği
WCF artık aktarım güvenliği ve istemci kimlik doğrulaması ile NetTcp kullanırken SSL 3.0 ve TLS 1.0'a ek olarak SSL sürümü TLS 1.1 ve TLS 1.2'yi destekliyor. Artık hangi protokolün kullanılacağını seçmek veya eski daha az güvenli protokolleri devre dışı bırakmak mümkündür. Bu, SslProtocols özelliğini ayarlayarak veya bir yapılandırma dosyasına aşağıdakileri ekleyerek 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 belirli iletilerin farklı temel HTTP bağlantıları kullanılarak gönderilmesini sağlamasına olanak tanır. Bunu yapmanın iki yolu vardır:
Bağlantı grubu adı ön eki kullanma
Kullanıcılar, WCF'nin bağlantı grubu adı için ön ek olarak kullanacağı bir dize belirtebilir. Farklı ön eklere sahip iki ileti, temel alınan farklı 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ğeri istenen ön ektir.
Farklı kanal fabrikalarını kullanma
Kullanıcılar, farklı kanal fabrikaları tarafından oluşturulan kanallar kullanılarak gönderilen iletilerin farklı temel HTTP bağlantılarını kullanmasını sağlayan bir özelliği de etkinleştirebilir. Bu özelliği etkinleştirmek için kullanıcıların aşağıdaki
appSetting
true
olarak ayarlaması gerekir:<appSettings> <add key="wcf:httpTransportBinding:useUniqueConnectionPoolPerFactory" value="true" /> </appSettings>
Windows Workflow Foundation (WWF)
Artık, istek zaman aşımına uğramadan önce bekleyen bir "protokol dışı" yer işareti olduğunda bir iş akışı hizmetinin sıra dışı işlem isteğinde kaç saniye tutulacağını belirtebilirsiniz. "Protokol dışı" bir yer işareti, bekleyen Alma etkinlikleriyle bağlantılı olmayan bir yer işaretidir. Bazı etkinlikler, uygulamaları içinde protokol olmayan yer işaretleri oluşturur, bu nedenle protokol olmayan bir yer işaretinin mevcut olduğu belirgin olmayabilir. Bunlar State ve Pick'i içerir. Bu nedenle, durum makinesiyle uygulanan veya Pick etkinliği içeren bir iş akışı hizmetiniz varsa, büyük olasılıkla protokol dışı yer işaretlerine sahip olursunuz. app.config dosyanızın
appSettings
bölümüne aşağıdaki gibi bir satır ekleyerek aralığı belirtirsiniz:<add key="microsoft:WorkflowServices:FilterResumeTimeoutInSeconds" value="60"/>
Varsayılan değer 60 saniyedir.
value
0 olarak ayarlanırsa, sıra dışı istekler aşağıdaki gibi görünen bir metin hatasıyla hemen 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, sırasız bir işlem iletisi alındığında ve protokole dahil olmayan yer işareti yoksa aldığınız iletiyle aynıdır.
FilterResumeTimeoutInSeconds
öğesinin değeri sıfır değilse, protokol dışı yer işaretleri vardır ve zaman aşımı aralığı sona ererse, işlem bir zaman aşımı iletisiyle başarısız olur.İşlemler
Artık TransactionException'dan türetilmiş olan bir özel durumun atılmasına neden olan işlemin dağıtılmış işlem tanımlayıcısını ekleyebilirsiniz. Bunu yapmak için app.config dosyanızın
appSettings
bölümüne aşağıdaki anahtarı eklersiniz:<add key="Transactions:IncludeDistributedTransactionIdInExceptionMessage" value="true"/>
Varsayılan değer
false
.Ağ
soket yeniden kullanımı
Windows 10, giden TCP bağlantıları için yerel bağlantı noktalarını yeniden kullanarak makine kaynaklarını daha iyi kullanan yeni bir yüksek ölçeklenebilirlik ağ algoritması içerir. .NET Framework 4.6 yeni algoritmayı destekleyerek .NET uygulamalarının yeni davranışlardan yararlanmasını sağlar. Windows'un önceki sürümlerinde yük altındayken bağlantı noktası tükenmesine neden olarak hizmetin ölçeklenebilirliğini sınırlayan yapay bir eşzamanlı bağlantı sınırı (genellikle 16.384, dinamik bağlantı noktası aralığının varsayılan boyutu) vardı.
.NET Framework 4.6'da, bağlantı noktasının yeniden kullanılmasını etkinleştirmek için iki API eklenmiştir ve bu da eşzamanlı bağlantılarda 64 KB sınırını etkili bir şekilde kaldırır:
System.Net.Sockets.SocketOptionName bir numaralandırma değeridir.
ServicePointManager.ReusePort özelliği.
varsayılan olarak,
HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319
kayıt defteri anahtarınınHWRPortReuseOnSocketBind
değeri 0x1 olarak ayarlanmadığı sürece ServicePointManager.ReusePort özelliğifalse
. HTTP bağlantılarında yerel bağlantı noktası yeniden kullanılmasını etkinleştirmek için ServicePointManager.ReusePort özelliğinitrue
olarak ayarlayın. Bu, HttpClient ve HttpWebRequest'den giden tüm TCP soket bağlantılarının, yerel bağlantı noktası tekrar kullanımını sağlayan yeni bir Windows 10 soket seçeneği olan SO_REUSE_UNICASTPORT'u kullanmasına neden olur.Yalnızca yuvaları olan uygulamalar yazan geliştiriciler, Socket.SetSocketOption gibi bir yöntemi çağırırken System.Net.Sockets.SocketOptionName seçeneğini belirterek, giden yuvaların bağlama işlemi sırasında yerel portları yeniden kullanabilmesini sağlayabilir.
Uluslararası etki alanı adları ve PunyCode için destek
uluslararası etki alanı adlarını ve PunyCode'ı daha iyi desteklemek için Uri sınıfına IdnHostyeni bir özellik eklendi.
Windows Forms denetimlerinde Yeniden Boyutlandırma'ya .
Bu özellik .NET Framework 4.6'da DomainUpDown, NumericUpDown, DataGridViewComboBoxColumn, DataGridViewColumn ve ToolStripSplitButton türlerini ve UITypeEditorçizerken kullanılan Bounds özelliği tarafından belirtilen dikdörtgeni içerecek şekilde genişletilmiştir.
Bu, isteğe bağlı bir özelliktir. Etkinleştirmek için
EnableWindowsFormsHighDpiAutoResizing
öğesini uygulama yapılandırması (app.config) dosyasındatrue
olarak ayarlayın:<appSettings> <add key="EnableWindowsFormsHighDpiAutoResizing" value="true" /> </appSettings>
Kod sayfası kodlamaları için desteği
.NET Core öncelikli olarak Unicode kodlamalarını destekler ve varsayılan olarak kod sayfası kodlamaları için sınırlı destek sağlar. kod sayfası kodlamalarını Encoding.RegisterProvider yöntemiyle kaydederek .NET Framework'te kullanılabilen ancak .NET Core'da desteklenmeyen kod sayfası kodlamaları için destek ekleyebilirsiniz. Daha fazla bilgi için bkz. System.Text.CodePagesEncodingProvider.
.NET Native
C# veya Visual Basic ile yazılan Evrensel Windows Platformu (UWP) uygulamaları, uygulamaları IL yerine yerel koda derleyen yeni bir teknolojiden yararlanabilir. Bu teknoloji, daha hızlı başlatma ve yürütme sürelerine sahip uygulamalar üretir. Daha fazla bilgi için bkz. .NET Nativeile Uygulama Derleme
Uygulamalarınız, Visual Studio 2015 veya sonraki sürümlerle derlendiğinde varsayılan olarak yerel koda derlenir. Daha fazla bilgi için bkz. .NET Nativekullanmaya başlama
.NET Yerel uygulamalarında hata ayıklamayı desteklemek için yönetilmeyen hata ayıklama API'sine bir dizi yeni arabirim ve numaralandırma eklenmiştir. Daha fazla bilgi için Hata Ayıklama (Yönetilmeyen API Başvurusu) konusuna bakın.
Açık kaynak .NET Framework paketleri
Sabit koleksiyonlar, SIMD API'lerigibi .NET Core paketleri ve System.Net.Http ad alanında bulunanlar gibi ağ API'leri artık GitHubüzerinde açık kaynak paketler olarak kullanılabilir. Koda erişmek için GitHubüzerinde
.NET'e bakın. Daha fazla bilgi ve bu paketlere nasıl katkıda bulunabileceğiniz hakkında daha fazla bilgi için bkz. GitHub'da .NET Giriş Sayfası giriş.NET .
.NET Framework 4.5.2'deki yenilikler
ASP.NET uygulamaları için yeni API'ler. Yeni HttpResponse.AddOnSendingHeaders ve HttpResponseBase.AddOnSendingHeaders yöntemleri, yanıt istemci uygulamasına boşaltılırken yanıt üst bilgilerini ve durum kodunu incelemenize ve değiştirmenize olanak sağlar. PreSendRequestHeaders ve PreSendRequestContent olayları yerine bu yöntemleri kullanmayı göz önünde bulundurun; daha verimli ve güvenilirdir.
HostingEnvironment.QueueBackgroundWorkItem yöntemi, küçük arka plan iş öğeleri zamanlamanıza olanak tanır. ASP.NET bu öğeleri izler ve tüm arka plan iş öğeleri tamamlanana kadar IIS'nin çalışan işlemini aniden sonlandırmasını engeller. Bu yöntem, ASP.NET yönetilen uygulama etki alanı dışında çağrılamıyor.
Yeni HttpResponse.HeadersWritten ve HttpResponseBase.HeadersWritten özellikleri, yanıt üst bilgilerinin yazılıp yazılmadığını gösteren Boole değerleri döndürür. HttpResponse.StatusCode gibi API'lere yapılan ve üst bilgiler yazıldığında istisna oluşturan çağrıların başarılı olmasını sağlamak için bu özellikleri kullanabilirsiniz.
Windows Forms denetimlerinde yeniden boyutlandırma. Bu özellik genişletildi. Artık sistem DPI ayarını kullanarak aşağıdaki ek kontrollerin bileşenlerini (örneğin açılır kutulardaki açılan ok) yeniden boyutlandırabilirsiniz.
Bu bir katılım gerektiren özelliktir. Etkinleştirmek için
EnableWindowsFormsHighDpiAutoResizing
öğesini uygulama yapılandırması (app.config) dosyasındatrue
olarak ayarlayın:<appSettings> <add key="EnableWindowsFormsHighDpiAutoResizing" value="true" /> </appSettings>
Yeni iş akışı özelliği. EnlistPromotableSinglePhase yöntemini kullanan (ve bu nedenle IPromotableSinglePhaseNotification arabirimini uygulayan) bir kaynak yöneticisi, aşağıdakileri istemek için yeni Transaction.PromoteAndEnlistDurable yöntemini kullanabilir:
İşlemi bir Microsoft Dağıtılmış İşlem Düzenleyicisi (MSDTC) işlemine yükseltin.
IPromotableSinglePhaseNotification değerini, tek aşamalı işlemeleri destekleyen dayanıklı bir liste olan bir ISinglePhaseNotificationile değiştirin.
Bu, aynı uygulama alanında yapılabilir ve yükseltmeyi sağlamak için MSDTC ile etkileşime geçmek üzere fazladan yönetilmeyen koda ihtiyaç duymaz. Yeni yöntem yalnızca System.Transactions'den tanıtılabilir liste tarafından uygulanan IPromotableSinglePhaseNotification
Promote
yöntemine bekleyen bir çağrı olduğunda çağrılabilir.Profilleme iyileştirmeleri. Aşağıdaki yeni yönetilmeyen profil oluşturma API'leri daha sağlam profil oluşturma sağlar:
- COR_PRF_ASSEMBLY_REFERENCE_INFO Yapısı
- COR_PRF_HIGH_MONITOR Numaralandırma
- GetAssemblyReferences Yöntemi
- GetEventMask2 Yöntemi
- SetEventMask2 Yöntemi
- AddAssemblyReference Yöntemi
Önceki
ICorProfiler
uygulamaları bağımlı derlemelerin gecikmeli yüklenmesini desteklemektedir. Yeni profil oluşturma API'leri, uygulama tam olarak başlatıldıktan sonra yüklenmek yerine profil oluşturucu tarafından eklenen bağımlı derlemelerin hemen yüklenebilir olmasını gerektirir. Bu değişiklik, mevcutICorProfiler
API'lerinin kullanıcılarını etkilemez.Hata ayıklama geliştirmeleri. Aşağıdaki yeni yönetilmeyen hata ayıklama API'leri, profil oluşturucuyla daha iyi tümleştirme sağlar. Artık profil oluşturucu tarafından eklenen meta verilere ve döküm hata ayıklama sırasında derleyici ReJIT istekleri tarafından oluşturulan yerel değişkenlere ve kodlara erişebilirsiniz.
- SetWriteableMetadataUpdateMode Yöntemi
- EnumerateLocalVariablesEx Yöntemi
- GetLocalVariableEx Yöntemi
- GetCodeEx Metodu
- GetActiveReJitRequestILCode Yöntemi
- getInstrumentedILMap Yöntemi
Olay izleme değişiklikleri. .NET Framework 4.5.2, daha büyük bir yüzey alanı için işlem dışı, Windows için Olay İzleme (ETW) tabanlı etkinlik izlemeyi etkinleştirir. Bu, Gelişmiş Güç Yönetimi (APM) satıcılarının tek tek isteklerin ve iş parçacıkları arasında geçen etkinliklerin maliyetlerini doğru şekilde izleyen basit araçlar sağlamasına olanak tanır. Bu olaylar yalnızca ETW denetleyicileri bunları etkinleştirdiğinde tetiklenir; bu nedenle, değişiklikler önceden yazılmış ETW kodunu veya ETW devre dışı ile çalışan kodu etkilemez.
Bir işlemi teşvik etmeyi ve bunu dayanıklı bir kayda dönüştürmeyi
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, ITransactionPromoter.Promote yöntemine yanıt olarak daha önce Transaction.EnlistPromotableSinglePhase tarafından oluşturulmuş bir listeleme tarafından kullanılabilir.
System.Transactions
'dan işlemi bir MSDTC işlemine terfi ettirmesini ve terfi edilebilir kaydı dayanıklı bir kayda "dönüştürmesini" ister. Bu yöntem başarıyla tamamlandıktan sonra, IPromotableSinglePhaseNotification arabirimine artıkSystem.Transactions
tarafından başvurulmayacak ve sağlanan ISinglePhaseNotification arabirimine gelecekteki bildirimler gelecektir. Söz konusu kayıt, işlem günlüğü ve kurtarmayı destekleyen dayanıklı bir kayıt olarak işlev görmelidir. Ayrıntılar için Transaction.EnlistDurable bakın. Ayrıca, kaydın ISinglePhaseNotificationdesteklemesi gerekir. Yalnızca bir ITransactionPromoter.Promote çağrısı işlenirken bu yöntem çağrılabilir. Böyle bir durum söz konusu değilse, TransactionException özel durumu oluşturulur.
.NET Framework 4.5.1'deki yenilikler
Nisan 2014 güncelleştirmeleri:
Visual Studio 2013 Güncelleştirme 2, şu senaryoları desteklemek için Taşınabilir Sınıf Kitaplığı şablonlarına yönelik güncelleştirmeler içerir:
Windows 8.1, Windows Phone 8.1 ve Windows Phone Silverlight 8.1'i hedefleyen taşınabilir kitaplıklarda Windows Çalışma Zamanı API'lerini kullanabilirsiniz.
Windows 8.1 veya Windows Phone 8.1'i hedeflediğinizde taşınabilir kitaplıklara XAML (Windows.UI.XAML türleri) ekleyebilirsiniz. Aşağıdaki XAML şablonları desteklenir: Boş Sayfa, Kaynak Sözlüğü, Şablonlu Denetim ve Kullanıcı Denetimi.
Windows 8.1 ve Windows Phone 8.1'i hedefleyen Mağaza uygulamalarında kullanmak üzere taşınabilir bir Windows Çalışma Zamanı bileşeni (.winmd dosyası) oluşturabilirsiniz.
Taşınabilir Sınıf Kitaplığı gibi bir Windows Mağazası veya Windows Phone Mağazası sınıf kitaplığını yeniden hedefleyebilirsiniz.
Bu değişiklikler hakkında daha fazla bilgi için bkz. Taşınabilir Sınıf Kitaplığı.
.NET Framework içerik kümesi artık Windows uygulamaları oluşturmaya ve dağıtmaya yönelik bir ön derleme teknolojisi olan .NET Native belgelerini içerir. .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. .NET Nativeile Uygulama Derleme
. .NET Framework Başvuru Kaynağı yeni bir gözatma deneyimi ve gelişmiş işlevsellik sağlar. Artık .NET Framework kaynak koduna çevrimiçi göz atabilir, çevrimdışı görüntüleme için başvuru kaynağını indirebilir ve hata ayıklama sırasında kaynaklar (düzeltme ekleri ve güncelleştirmeler dahil) arasında adım adım ilerleyebilirsiniz. Daha fazla bilgi için .NET Başvuru Kaynağıiçin yeni bir görünüm
blog girdisine bakın.
.NET Framework 4.5.1'deki temel sınıflardaki 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 hedefleyen bir uygulamayı derlediğinizde, uygulamanız veya bileşenleri aynı derlemenin birden çok sürümüne başvuruyorsa bağlama yeniden yönlendirmeleri uygulama yapılandırma dosyasına eklenebilir. Bu özelliği , .NET Framework'ün eski sürümlerini hedefleyen projeler için de etkinleştirebilirsiniz. Daha fazla bilgi için bkz. Otomatik Bağlama Yönlendirmesini Etkinleştirme ve Devre Dışı Bırakma.
Geliştiricilerin sunucu ve bulut uygulamalarının performansını geliştirmesine yardımcı olmak için tanılama bilgileri toplama olanağı. Daha fazla bilgi için EventSource sınıfındaki WriteEventWithRelatedActivityId ve WriteEventWithRelatedActivityIdCore yöntemlerine bakın.
Atık toplama sırasında büyük nesne yığınını (LOH) açıkça sıkıştırabilme. Daha fazla bilgi için GCSettings.LargeObjectHeapCompactionMode özelliğine bakın.
.NET Framework güncelleştirmesinin ardından ASP.NET uygulama askıya alma, çok çekirdekli JIT iyileştirmeleri ve daha hızlı uygulama başlatma gibi ek performans iyileştirmeleri. Ayrıntılar için .NET Framework 4.5.1 duyuru ve ASP.NET uygulamasını askıya alma blog gönderisine bakın.
Windows Forms geliştirmeleri şunlardır:
Windows Forms denetimlerinde yeniden boyutlandırma. Uygulamanızın uygulama yapılandırma dosyasındaki (app.config) bir girişi kabul ederek denetimlerin bileşenlerini (örneğin, özellik kılavuzunda görünen simgeler) yeniden boyutlandırmak için sistem DPI ayarını kullanabilirsiniz. Bu özellik şu anda aşağıdaki Windows Forms denetimlerinde desteklenmektedir:
- PropertyGrid
- TreeView
'ın bazı yönleri (desteklenen ek denetimler için 4.5.2'deki yeni özelliklere bakın)
Bu özelliği etkinleştirmek için yapılandırma dosyasına (app.config) yeni bir <appSettings> öğesi ekleyin ve
EnableWindowsFormsHighDpiAutoResizing
öğesinitrue
olarak ayarlayın:<appSettings> <add key="EnableWindowsFormsHighDpiAutoResizing" value="true" /> </appSettings>
Visual Studio 2013'te .NET Framework uygulamalarınızda hata ayıklarken yapılan iyileştirmeler şunlardır:
Visual Studio hata ayıklayıcısındaki değerleri döndürür. Visual Studio 2013'te yönetilen bir uygulamada hata ayıkladığınızda, Autos penceresi yöntemler için dönüş türleri ve değerleri görüntüler. Bu bilgiler masaüstü, Windows Mağazası ve Windows Phone uygulamalarında 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 Et. Visual Studio 2013, masaüstü, Windows Mağazası ve Windows Phone için 64 bit yönetilen uygulamalar için Düzenle ve Devam Et özelliğini destekler. Mevcut sınırlamalar hem 32 bit hem de 64 bit uygulamalar için geçerli olmaya devam eder (desteklenen Kod Değişiklikleri (C#) makalesinin son bölümüne bakın).
Asenkron farkındalıklı hata ayıklama. Visual Studio 2013'te 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 program yürütmesini daha net bir şekilde izleyebilmek için mantıksal üst çerçeveler halinde zincirler. Görevler penceresi Paralel Görevler penceresinin yerini alır ve belirli bir kesme noktasıyla ilişkili görevleri görüntüler ve ayrıca uygulamada etkin veya zamanlanmış durumdaki diğer görevleri görüntüler. .NET Framework 4.5.1 duyuru
"Zaman uyumsuz hata ayıklama" bölümünde bu özellik hakkında bilgi edinebilirsiniz. Windows Çalışma Zamanı bileşenleri için daha iyi özel durum desteği. Windows 8.1'de, Windows Mağazası uygulamalarından kaynaklanan özel durumlar, dil sınırları boyunca bile özel duruma neden olan hata hakkındaki bilgileri korur. Bu özellik hakkında bilgi edinmek için .NET Framework 4.5.1 duyuru
"Windows Mağazası uygulama geliştirme" bölümünü okuyabilirsiniz.
Visual Studio 2013'den başlayarak, Windows 8.x Store uygulamalarının yanı sıra masaüstü uygulamalarını iyileştirmek için Yönetilen Profil Destekli İyileştirme Aracı (Mpgo.exe) kullanabilirsiniz.
ASP.NET 4.5.1'deki yeni özellikler için bkz. ASP.NET ve Visual Studio 2013 için Web Araçları Sürüm Notları.
.NET Framework 4.5'teki yenilikler
Temel sınıflar
Dağıtım sırasında .NET Framework 4 uygulamalarını algılayıp kapatarak sistem yeniden başlatmalarını azaltma olanağı. .NET Framework 4.5 Yüklemeleri Sırasında Sistem Yeniden Başlatmalarını Azaltma'e bakın.
64 bit platformlarda 2 gigabayttan (GB) büyük diziler için destek. Bu özellik, uygulama yapılandırma dosyasında etkinleştirilebilir. Nesne boyutu ve dizi boyutuyla ilgili diğer kısıtlamaları da listeleyen
gcAllowVeryLargeObjects öğesine bakın. Sunucular için arka plan çöp toplama ile daha iyi performans. .NET Framework 4.5'te sunucu çöp toplamayı kullandığınızda, arka plan çöp toplama otomatik olarak etkinleştirilir. Atık Toplama
Temel Bilgileri konusunun Arka Plan Sunucusu Çöp Toplama bölümüne bakın. Uygulama performansını geliştirmek için isteğe bağlı olarak çok çekirdekli işlemcilerde kullanılabilen arka plan tam zamanında (JIT) derlemesi. Bkz. ProfileOptimization.
Düzenli ifade motorunun, zaman aşımına uğramadan önce bir düzenli ifadeyi çözmeye çalışacağı süreyi sınırlama yeteneği. Regex.MatchTimeout özelliğine bakın.
Uygulama etki alanı için varsayılan kültürü tanımlama olanağı. CultureInfo sınıfına bakın.
Unicode (UTF-16) kodlaması için konsol desteği. Console sınıfına bakın.
Kültürel dize sıralama ve karşılaştırma verilerinin sürüm oluşturma desteği. SortVersion sınıfına bakın.
Kaynakları alırken daha iyi performans. Bkz. kaynaklarıpaketleme ve dağıtma.
Sıkıştırılmış dosyanın boyutunu küçültmek için Zip sıkıştırma iyileştirmeleri. System.IO.Compression ad alanına bakın.
CustomReflectionContext sınıfı aracılığıyla varsayılan yansıma davranışını geçersiz kılmak için bir yansıma bağlamını özelleştirme olanağı.
Windows 8'de System.Globalization.IdnMapping sınıfı kullanıldığında Uygulamalarda Uluslararası Etki Alanı Adları (IDNA) standardının 2008 sürümü desteği.
Windows 8'de .NET Framework kullanıldığında, dize karşılaştırmasının Unicode 6.0'ı uygulayan işletim sistemine delege edilmesi. Diğer platformlarda çalışırken .NET Framework, Unicode 5.x uygulayan kendi dize karşılaştırma verilerini içerir. String sınıfına ve SortVersion sınıfının Açıklamalar bölümüne bakın.
Metin dizeleri için karma kodları her uygulama alanı temelinde hesaplama olanağı. Bkz. <RastgeleleştirilmişDizeHashAlgoritmasıKullan> Elemanı.
Tür yansıma desteği Type ve TypeInfo sınıfları arasında bölünür. Windows Mağazası Uygulamalarıiçin .NET Framework'te
Yansıma bölümüne bakın.
Yönetilen Genişletilebilirlik Çerçevesi (MEF)
.NET Framework 4.5'te, Yönetilen Genişletilebilirlik Çerçevesi (MEF) aşağıdaki yeni özellikleri sağlar:
Genel tipler için destek.
Öznitelikler yerine adlandırma kurallarına göre parçalar oluşturmanıza olanak tanıyan kural tabanlı programlama modeli.
Birden çok kapsam.
Windows 8.x Store uygulamaları oluştururken kullanabileceğiniz bir MEF alt kümesi. Bu alt küme, indirilebilir paket olarak NuGet Galerisi'nden kullanılabilir. Paketi yüklemek için projenizi Visual Studio'da açın,
Project menüsünden NuGet Paketlerini Yönetseçin ve paketini çevrimiçi olarak arayın.
Daha fazla bilgi için bkz. Yönetilen Genişletilebilirlik Çerçevesi (MEF).
Zaman uyumsuz dosya işlemleri
.NET Framework 4.5'te C# ve Visual Basic dillerine yeni zaman uyumsuz özellikler eklendi. Bu özellikler, zaman uyumsuz işlemler gerçekleştirmek için görev tabanlı bir model ekler. Bu yeni modeli kullanmak için G/Ç sınıflarındaki zaman uyumsuz yöntemleri kullanın. Bkz. Asenkron Dosya I/O.
Araçları
.NET Framework 4.5'te Kaynak Dosyası Oluşturucu (Resgen.exe), .NET Framework derlemesine eklenmiş bir .resources dosyasından Windows 8.x Store uygulamalarında kullanmak üzere bir .resw dosyası oluşturmanıza olanak tanır. Daha fazla bilgi için bkz. Resgen.exe (Kaynak Dosya Oluşturucu).
Yönetilen Profil Destekli İyileştirme (Mpgo.exe), yerel görüntü derlemelerini iyileştirerek uygulama başlatma süresini, bellek kullanımını (çalışma kümesi boyutu) ve aktarım hızını geliştirmenizi sağlar. Komut satırı aracı, yerel görüntü uygulaması derlemeleri için profil verileri oluşturur. bkz. Mpgo.exe (Yönetilen Profil Destekli İyileştirme Aracı). Visual Studio 2013'den başlayarak windows 8.x Store uygulamalarını ve masaüstü uygulamalarını iyileştirmek için Mpgo.exe kullanabilirsiniz.
Paralel bilgi işlem
.NET Framework 4.5, paralel bilgi işlem için çeşitli yeni özellikler ve geliştirmeler sağlar. Bunlar arasında gelişmiş 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 yer alır. .NET ile Paralel Programlama blogunda .NET Framework 4.5'teki Paralellik için Yenilikler
İnternet
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ğlaması ekler. Daha fazla bilgi için aşağıdaki kaynaklara bakın:
Visual Studio 2013 için ASP.NET ve Web Araçları Sürüm Notları
Ağ
.NET Framework 4.5, HTTP uygulamaları için yeni bir programlama arabirimi sağlar. Daha fazla bilgi için yeni System.Net.Http ve System.Net.Http.Headers ad alanlarına bakın.
Ayrıca, mevcut HttpListener ve ilgili sınıfları kullanarak WebSocket bağlantısını kabul etmek ve bu bağlantıyla etkileşimde bulunan yeni bir programlama arabirimi için de destek sağlanır. Daha fazla bilgi için yeni System.Net.WebSockets ad alanına ve HttpListener sınıfına bakın.
Buna ek olarak, .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ı (IDN) ayrıştırma desteği. Daha fazla bilgi için bkz. Uri ve ilgili sınıflar.
E-posta Adresi Uluslararasılaştırma (EAI) desteği. Daha fazla bilgi için System.Net.Mail ad alanına bakın.
Geliştirilmiş IPv6 desteği. Daha fazla bilgi için System.Net.NetworkInformation ad alanına bakın.
Ç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'te, Windows Presentation Foundation (WPF) aşağıdaki alanlarda değişiklikler ve geliştirmeler içerir:
Hızlı Erişim Araç Çubuğu, Uygulama Menüsü ve sekmeleri barındıran bir şerit kullanıcı arabirimi uygulamanıza olanak tanıyan yeni Ribbon denetimi.
Zaman uyumlu ve zaman uyumsuz veri doğrulamasını destekleyen yeni INotifyDataErrorInfo arabirimi.
VirtualizingPanel ve Dispatcher sınıfları için yeni özellikler.
Büyük gruplandırılmış veri kümeleri görüntülenirken ve kullanıcı arabirimine bağlı olmayan iş parçacıklarında koleksiyonlara erişilirken performans iyileştirildi.
Statik özelliklere veri bağlama, ICustomTypeProvider arabirimini uygulayan özel türlere veri bağlama ve bağlama ifadesinden veri bağlama bilgilerinin alınması.
Değerler değiştikçe verilerin yeniden konumlandırılması (canlı şekillendirme).
Bir öğe kapsayıcısının veri bağlamı bağlantısının kesilip kesilmediğini denetleyebilme.
Özellik değişiklikleri ve veri kaynağı güncelleştirmeleri arasında geçmesi gereken süreyi ayarlayabilme.
Zayıf olay desenleri uygulamak için geliştirilmiş destek. Ayrıca, olaylar artık işaretleme uzantılarını kabul edebilir.
Windows Communication Foundation (WCF)
.NET Framework 4.5'te, Windows Communication Foundation (WCF) uygulamalarını yazmayı ve korumayı kolaylaştırmak için aşağıdaki özellikler eklenmiştir:
Oluşturulan yapılandırma dosyalarının basitleştirilmesi.
Sözleşmeye dayalı geliştirme desteği.
ASP.NET uyumluluk modunu daha kolay yapılandırabilme.
Varsayılan aktarım özelliği değerlerinde yapılan değişiklikler, bunları ayarlamanız gerekmesi olasılığını azaltır.
XML sözlüğü okuyucuları için kotaları el ile yapılandırma olasılığını azaltmak için XmlDictionaryReaderQuotas sınıfına yönelik güncelleştirmeler.
Derleme işleminin bir parçası olarak Visual Studio tarafından WCF yapılandırma dosyalarının doğrulanması, böylece uygulamanızı çalıştırmadan önce yapılandırma hatalarını algılayabilirsiniz.
Yeni zaman uyumsuz akış desteği.
Internet Information Services (IIS) ile HTTPS üzerinden bir uç noktayı kullanıma sunabilmek için yeni HTTPS protokolü eşlemesi.
Hizmet URL'sine
?singleWSDL
ekleyerek tek bir WSDL belgesinde meta veri oluşturma olanağı.Websockets, TCP aktarımına benzer performans özelliklerine sahip 80 ve 443 numaralı bağlantı noktaları üzerinden gerçek çift yönlü iletişimi etkinleştirmeyi destekler.
Hizmetleri kodda yapılandırma desteği.
XML Düzenleyicisi araç ipuçları.
ChannelFactory önbelleğe alma desteği.
İkili kodlayıcı sıkıştırma desteği.
Geliştiricilerin "tetikle ve unut" mesajları kullanan hizmetler yazmasına olanak tanıyan UDP aktarımı 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ında birden çok kimlik doğrulama modunu destekleme olanağı.
Uluslararası etki alanı adlarını (IDN) kullanan WCF hizmetleri için destek.
Daha fazla bilgi için bkz. Windows Communication Foundation'daki Yenilikler.
Windows Workflow Foundation (WF)
.NET Framework 4.5'te, Windows Workflow Foundation'a (WF) aşağıdakiler gibi çeşitli yeni özellikler eklendi:
.NET Framework 4.0.1 (.NET Framework 4 Platform Güncelleştirmesi 1) kapsamında ilk olarak sunulan durum makinesi iş akışları. Bu güncelleştirme, geliştiricilerin durum makinesi iş akışları oluşturmasını sağlayan birkaç yeni sınıf ve etkinlik içeriyor. .NET Framework 4.5 için bu sınıflar ve etkinlikler şunları içerecek şekilde güncelleştirildi:
Durumlarda kesme noktaları belirleme yeteneğ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, Stateve Transition.
Aşağıdakiler gibi gelişmiş İş Akışı Tasarımcısı özellikleri:
Visual Studio'daki Hızlı Bul ve Dosyalarda Buldahil gelişmiş iş akışı arama özellikleri.
Kapsayıcı etkinliğine ikinci bir alt etkinlik eklendiğinde otomatik olarak bir Sıra etkinliği oluşturma ve her iki etkinliği de Sıra etkinliğine ekleme olanağı.
Kaydırma desteği, bir iş akışının görünür kısmının kaydırma çubukları kullanılmadan değiştirilmesini sağlar.
İş akışının bileşenlerini ağaç stili ana hat görünümünde gösteren ve Belge Ana Hattı görünümünde bir bileşen seçmenize olanak tanıyan yeni bir Belge Ana Hattı görünümü.
Etkinliklere ek açıklamalar ekleyebilme.
İş akışı tasarımcısını kullanarak etkinlik delegeleri tanımlama ve tüketme yeteneği.
Durum makinesi ve akış çizelgesi iş akışlarındaki etkinlikler ve geçişler için otomatik bağlanma ve otomatik ekleme.
XAML dosyasındaki tek bir öğede bir iş akışı için görünüm durumu bilgilerinin depolanması, böylece görünüm durumu bilgilerini kolayca bulabilir ve düzenleyebilirsiniz.
Çocuk etkinliklerin kalıcı hale gelmesini önlemek için bir NoPersistScope kapsayıcı etkinliği.
C# ifadeleri için destek:
Visual Basic kullanan iş akışı projeleri Visual Basic ifadelerini, 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 oluşturma geliştirmeleri:
Kalıcı bir iş akışı örneği ile iş akışı tanımı arasında eşleme sağlayan yeni WorkflowIdentity sınıfı.
WorkflowServiceHostdahil olmak üzere aynı konaktaki birden çok iş akışı sürümünün yan yana yürütülmesi.
Dinamik Güncelleştirme'de, kalıcı bir iş akışı örneğinin tanımını değiştirme olanağı.
Sözleşme öncelikli iş akışı hizmeti geliştirme, mevcut bir hizmet sözleşmesiyle eşleşecek etkinliklerin otomatik olarak oluşturulması için destek sağlar.
Daha fazla bilgi için bkz. Windows Workflow Foundation'daki Yenilikler.
Windows 8.x Store uygulamaları için .NET
Windows 8.x Store uygulamaları belirli form faktörleri için tasarlanmıştır ve Windows işletim sisteminin gücünden yararlanılır. .NET Framework 4.5 veya 4.5.1 alt kümesi, C# veya Visual Basic kullanarak Windows için Windows 8.x Mağazası uygulamaları oluşturmak için kullanılabilir. Bu alt küme, Windows 8.x Store uygulamaları için .NET olarak adlandırılır ve
Taşınabilir Sınıf Kitaplıkları
Visual Studio 2012'deki Taşınabilir Sınıf Kitaplığı projesi (ve sonraki sürümleri), birden çok .NET Framework platformunda çalışan yönetilen derlemeler yazmanızı ve derlemenizi sağlar. Taşınabilir Sınıf Kitaplığı projesi kullanarak hedef platformları (Windows Phone ve Windows 8.x Mağazası uygulamaları için .NET gibi) seçersiniz. Projenizdeki kullanılabilir türler ve üyeler otomatik olarak bu platformlardaki ortak türler ve üyeler ile kısıtlanır. Daha fazla bilgi için bkz. Taşınabilir Sınıf Kitaplığı.
Ayrıca bkz.
- .NET Framework ve Bant Dışı Sürümleri
- .NET Framework'da erişilebilirlikle ilgili yenilikler
- Visual Studio 2019'daki Yenilikler
- ASP.NET
- Visual Studio'da C++ için Yenilikler
- .NET SDK'yi indir