.NET 5’teki yenilikler
.NET 5, 3.1'den sonraki büyük .NET Core sürümü. Bu yeni sürümü iki nedenle .NET Core 4 yerine .NET 5 olarak adlandırılmıştır:
- 4.x sürümündeki karışıklığı önlemek için 4.x .NET Framework atlamış olduk.
- Bundan sonra .NET'in ana uygulamasının bu olduğunu vurgulamak için addan "Core" belirttik. .NET 5, .NET Core veya diğer platformlara göre daha fazla türde uygulama ve .NET Framework.
ASP.NET Core 5.0 , .NET 5'i temel almaktadır ancak MVC 5 ile karıştırılmasından kaçınmak için "Çekirdek" ASP.NET korur. Benzer şekilde, Entity Framework Core 5.0, 5 ve 6 ile karıştırılmasından kaçınmak için "Core" Entity Framework korur.
.NET 5, .NET Core 3.1'e kıyasla aşağıdaki geliş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 dosya uygulamaları
- Uygulama kırpma
- Windows ARM64 ve ARM64 içleri
- Döküm hata ayıklama için araç desteği
- Null değere sahip başvuru türleri için çalışma zamanı kitaplıklarına %80 açıklama ek açıklamalı
- Performans geliştirmeleri:
.NET 5, .NET Framework
.NET 5 ve sonraki sürümler, .NET'in ileriye doğru ana uygulamasıdır ancak 4.x .NET Framework de desteklene devam ediyor. Aşağıdaki teknolojileri .NET 5'e .NET Framework için bir plan yoktur, ancak .NET'te alternatifler vardır:
| Teknoloji | Önerilen alternatif |
|---|---|
| Web Forms | ASP.NET Core Blazor veya Razor Pages |
| Windows İş Akışı (WF) | Açık kaynak CoreWF veya Elsa-Workflows |
Windows Communication Foundation
Windows Communication Foundation'ın (WCF) özgün uygulaması yalnızca Windows. Ancak, .NET Foundation'dan kullanılabilen bir istemci bağlantı noktası vardır. Tamamen açık kaynak, platformlararası ve Microsoft tarafından de desteklemektedir. Temel 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
Topluluk, daha önce adı geçen istemci kitaplıklarını tamamlayan sunucu bileşenlerini bulundurur. Veri GitHub CoreWCF'de bulunabilir. Sunucu bileşenleri Microsoft tarafından resmi olarak desteklanmaz. WCF'ye alternatif olarak gRPC'yi göz önünde bulundurabilirsiniz.
.NET 5, .NET Standard
Yeni uygulama geliştirme, sınıf kitaplıkları dahil olmak üzere tüm proje türleri için hedef çerçeve bilinen net5.0 adı (TFM) belirtebilir. Tek ihtiyacınız olan TFM'nin .NET 5 iş yükleri arasında kod paylaşımı net5.0 basitleştirildi.
.NET 5 uygulamaları ve kitaplıkları için Hedef Çerçeve Bilinen Adı net5.0 (TFM), ve netcoreapp TFM'lerini birleştirir netstandard 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 bunu yapabiliriz. 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şecek. .NET 5, dile birçok yeni özellik getiren C# 9 ile eşleştirildi. İşte öne çıkan birkaç önemli şey:
Kayıtlar: Değer tabanlı eşitlik semantiğine ve yeni bir ifade tarafından desteklenen yıkıcı olmayan yıkıcı yıkıcıya sahip başvuru
withtürleri.İlişkisel desen eşleştirme: Yeni anahtar sözcükler , ve mantıksal desenler de dahil olmak üzere karşılaştırmalı değerlendirmeler ve ifadeler için ilişkisel işleçlere desen eşleştirme
andorözelliklerininotgenişleter.Üst düzey deyimler: C# benimsenme ve öğrenmeyi hızlandırmanın bir yöntemi olarak yöntem atlanabilir ve aşağıdaki gibi
Mainbasit bir uygulama geçerli olabilir:System.Console.Write("Hello world!");İşlev işaretçileri: Aşağıdaki ara dil (IL) opcode'larını ortaya çıkaran dil yapıları:
ldftnvecalli.
Kullanılabilir C# 9 özellikleri hakkında daha fazla bilgi için bkz. C# 9'daki yeni özellikler.
Kaynak oluşturucular
Kaynak oluşturucular, vurgulanan yeni C# özelliklerinden bazılarına ek olarak geliştirici projelerinde de yol almaktadır. 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şturuculara ve C# kaynak oluşturucu örneklerine tanıtma.
F# güncelleştirmeleri
F#, .NET işlevsel programlama dilidir ve .NET 5 ile geliştiricilerin F# 5'e erişimi vardır. Yeni özelliklerden biri, C# ve hatta JavaScript'te irdelenmiş dizeye benzer şekilde i ilişkilendirme dizeleridir.
let name = "David"
let age = 36
let message = $"{name} is {age} years old."
Temel dize ilişkilendirmeye ek olarak, türe bağlı ilişkilendirme de vardır. Türü belirtilen ilişkilendirme ile, belirli bir tür biçim belirleyicisi ile eşleşmeli.
let name = "David"
let age = 36
let message = $"%s{name} is %d{age} years old."
Bu, bir sprintf dizeyi tür güvenli girişlere göre biçime alan işleve benzer.
Daha fazla bilgi için bkz. F# 5'te neler var.
Visual Basic güncelleştirmeleri
.NET 5'te Visual Basic dil özelliği yoktur. Ancak .NET 5 ile Visual Basic şu şekilde genişletildi:
| Description | 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 Project | mstest |
| NUnit 3 Test Project | nunit |
| NUnit 3 Test Öğesi | nunit-test |
| xUnit Test Project | xunit |
.NET CLI'dan proje şablonları hakkında daha fazla bilgi için bkz. dotnet new .
System.Text.Json yeni özellikleri
System.Text.Jsoniçin ve içinde 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 sayılara izin verme veya yazma
- Sabit türleri ve C# 9 Kayıtlarını destekleme
- Genel olmayan özellik erişimcilerini destekleme
- Destek alanları
- Özellikleri koşullu olarak yoksay
- Dize olmayan anahtar sözlüklerini destekleme
- Özel dönüştürücülerin null işlemesine izin ver
- JsonSerializerOptions'ı kopyalama
- Web varsayılanları ile JsonSerializerOptions oluşturma