.NET 5’teki yenilikler
.NET 5, .NET Core'un 3.1'i izleyen sonraki önemli sürümüdür. Bu yeni sürümü iki nedenden dolayı .NET Core 4 yerine .NET 5 olarak adlandırdık:
- .NET Framework 4.x ile karışıklığı önlemek için 4.x sürüm numaralarını atladık.
- Bundan sonra .NET'in ana uygulaması olduğunu vurgumak için adından "Core" değerini düşürdük. .NET 5, .NET Core veya .NET Framework'ten daha fazla uygulama türünü ve daha fazla platformu destekler.
ASP.NET Core 5.0, .NET 5'i temel alır ancak ASP.NET MVC 5 ile karıştırılmasını önlemek için "Core" adını korur. Benzer şekilde, Entity Framework Core 5.0, Entity Framework 5 ve 6 ile karıştırılmasını önlemek için "Core" adını korur.
.NET 5, .NET Core 3.1 ile karşılaştırıldığında aşağıdaki iyileştirmeleri ve yeni özellikleri içerir:
- C# güncelleştirmeleri
- F# güncelleştirmeleri
- Visual Basic güncelleştirmeleri
- System.Text.Json yeni özellikleri
- Tek dosyalı uygulamalar
- Uygulama kırpma
- Windows Arm64 ve Arm64 iç bilgileri
- Döküm hata ayıklama için araç desteği
- Çalışma zamanı kitaplıkları null atanabilir başvuru türleri için %80 ek açıklamalı
- Performans iyileştirmeleri:
.NET 5, .NET Framework'ün yerini almaz
.NET 5 ve sonraki sürümleri, .NET'in ileriye dönük ana uygulamasıdır, ancak .NET Framework 4.x hala desteklenmektedir. .NET Framework'ten .NET 5'e aşağıdaki teknolojileri taşıma planı yoktur, ancak .NET'te alternatifler vardır:
Teknoloji | Önerilen alternatif |
---|---|
Web Forms | ASP.NET Core Blazor veya Razor Pages |
Windows İş Akışı (WF) | Elsa-İş Akışları |
Windows Communication Foundation
Windows Communication Foundation'ın (WCF) özgün uygulaması yalnızca Windows'ta destekleniyordu. Ancak. .NET Foundation'dan bir istemci bağlantı noktası vardır. Tamamen açık kaynak, platformlar arasıdır ve Microsoft tarafından desteklenir. Çekirdek NuGet paketleri aşağıda listelenmiştir:
- System.ServiceModel.Duplex
- System.ServiceModel.Federation
- System.ServiceModel.Http
- System.ServiceModel.NetTcp
- System.ServiceModel.Primitives
- System.ServiceModel.Security
Yukarıda belirtilen istemci kitaplıklarını tamamlayan sunucu bileşenleri CoreWCF aracılığıyla kullanılabilir. Nisan 2022 itibarıyla CoreWCF, Microsoft tarafından resmi olarak desteklenmektedir. Ancak WCF'ye alternatif olarak gRPC'yi göz önünde bulundurun.
.NET 5, .NET Standard'ın yerini almaz
Yeni uygulama geliştirme, sınıf kitaplıkları da dahil olmak üzere tüm proje türleri için Hedef Çerçeve Takma Adını (TFM) belirtebilir net5.0
. .NET 5 iş yükleri arasında kod paylaşımı basitleştirilir: tek ihtiyacınız olan TFM'dir net5.0
.
.NET 5 uygulamaları ve kitaplıkları için TFM, net5.0
ve netstandard
TFM'lerini netcoreapp
birleştirir ve değiştirir. Ancak. .NET Framework, .NET Core ve .NET 5 iş yükleri arasında kod paylaşmayı planlıyorsanız, bunu TFM'niz olarak belirterek netstandard2.0
yapabilirsiniz. Daha fazla bilgi için bkz . .NET Standard.
C# güncelleştirmeleri
.NET 5 uygulamaları yazan geliştiriciler en son C# sürümüne ve özelliklerine erişebilir. .NET 5, dile birçok yeni özellik getiren C# 9 ile eşleştirilir. İşte birkaç önemli nokta:
Kayıtlar: Değer tabanlı eşitlik semantiğine ve yeni
with
bir ifade tarafından desteklenen yıkıcı olmayan mutasyona sahip başvuru türleri.İlişkisel desen eşleştirme: Mantıksal desenler de dahil olmak üzere karşılaştırmalı değerlendirmeler ve ifadeler için desen eşleştirme özelliklerini ilişkisel işleçlere
and
genişletir - yeni anahtar sözcükler ,or
venot
.Üst düzey deyimler: C# benimsemesini ve öğrenmesini hızlandırmanın bir aracı olarak yöntem
Main
atlanabilir ve aşağıdaki örnek kadar basit bir uygulama geçerlidir:System.Console.Write("Hello world!");
İşlev işaretçileri: Aşağıdaki ara dil (IL) işlem kodlarını kullanıma sunan dil yapıları:
ldftn
vecalli
.
Kullanılabilir C# 9 özellikleri hakkında daha fazla bilgi için bkz . C# 9'daki yenilikler.
Kaynak oluşturucular
Kaynak oluşturucular, vurgulanan yeni C# özelliklerinden bazılarına ek olarak geliştirici projelerine de giriş yapıyor. Kaynak oluşturucular, derleme sırasında çalışan kodun programınızı incelemesine ve kodunuzun geri kalanıyla birlikte derlenmiş ek dosyalar üretmesine olanak sağlar.
Kaynak oluşturucular hakkında daha fazla bilgi için bkz . C# kaynak oluşturucuları ve C# kaynak oluşturucu örneklerine giriş.
F# güncelleştirmeleri
F# .NET işlevsel programlama dilidir ve .NET 5 ile geliştiriciler F# 5'e erişebilir. Yeni özelliklerden biri C# dilindeki ilişkilendirilmiş dizelere ve hatta JavaScript'e benzer ilişkilendirilmiş dizelerdir.
let name = "David"
let age = 36
let message = $"{name} is {age} years old."
Temel dize ilişkilendirmesine ek olarak, türlenmiş ilişkilendirme vardır. Yazılan ilişkilendirmede, belirli bir tür biçim tanımlayıcısıyla eşleşmelidir.
let name = "David"
let age = 36
let message = $"%s{name} is %d{age} years old."
Bu biçim, bir dizeyi sprintf
tür açısından güvenli girişlere göre biçimlendiren işleve benzer.
Daha fazla bilgi için bkz . F# 5'teki yenilikler.
Visual Basic güncelleştirmeleri
.NET 5'te Visual Basic için yeni dil özelliği yok. Bununla birlikte, .NET 5 ile Visual Basic desteği şu şekilde genişletilir:
Açıklama | dotnet new Parametre |
---|---|
Konsol Uygulaması | console |
Sınıf kitaplığı | classlib |
WPF Uygulaması | wpf |
WPF Sınıf kitaplığı | wpflib |
WPF Özel Denetim Kitaplığı | wpfcustomcontrollib |
WPF Kullanıcı Denetimi Kitaplığı | wpfusercontrollib |
Windows Forms (WinForms) Uygulaması | winforms |
Windows Forms (WinForms) Sınıf kitaplığı | winformslib |
Birim Testi Projesi | mstest |
NUnit 3 Test Projesi | nunit |
NUnit 3 Test Öğesi | nunit-test |
xUnit Test Projesi | xunit |
.NET CLI'dan proje şablonları hakkında daha fazla bilgi için bkz dotnet new
. .
System.Text.Json yeni özellikleri
ve içinde System.Text.Json için yeni özellikler vardır:
- Başvuruları koruma ve döngüsel başvuruları işleme
- HttpClient ve HttpContent uzantısı yöntemleri
- Tırnak içinde numaralara izin verme veya sayı yazma
- Sabit türleri ve C# 9 Kayıtlarını destekleme
- Ortak olmayan özellik erişimcilerini destekleme
- Destek alanları
- Özellikleri koşullu olarak yoksay
- Dize anahtarı olmayan sözlükleri destekleme
- Özel dönüştürücülerin null değeri işlemesine izin ver
- JsonSerializerOptions Kopyalama
- Web varsayılanlarıyla JsonSerializerOptions oluşturma