.NET 7'deki yenilikler
.NET 7, .NET 6
Bu makalede .NET 7'nin yeni özellikleri listelenir ve her biri hakkında daha ayrıntılı bilgilerin bağlantıları sağlanır.
Performans
Performans, .NET 7'nin önemli bir odağıdır ve tüm özellikleri performans göz önünde bulundurularak tasarlanmıştır. Buna ek olarak, .NET 7 yalnızca performansa yönelik aşağıdaki geliştirmeleri içerir:
- Yığın üzerinde değiştirme (OSR), katmanlı derlemenin tamamlayıcısıdır. Çalışma zamanı ortamının, yürütme sürecinin ortasında çalışmakta olan bir metod tarafından yürütülen kodu değiştirmesine olanak tanır (yani, 'çağrı yığında' iken). Uzun süre çalışan yöntemler, yürütmenin ortasında daha iyileştirilmiş sürümlere geçebilir.
- Profil destekli iyileştirme (PGO) artık OSR ile çalışır ve etkinleştirilmesi daha kolaydır (proje dosyanıza
<TieredPGO>true</TieredPGO>
ekleyerek). PGO ayrıca, temsilciler gibi ek özellikleri de izleyebilir ve iyileştirebilir. - Arm64 için geliştirilmiş kod oluşturma.
- Native AOT, dış bağımlılık olmadan hedef platformun dosya biçiminde tek başına bir yürütülebilir dosya oluşturur. Il veya JIT olmadan tamamen yereldir ve hızlı başlangıç süresi ve küçük, bağımsız dağıtım sağlar. .NET 7'de Native AOT, konsol uygulamalarına odaklanır ve uygulamaların küçültülmesi gerekir.
- Blazor WebAssembly, Android ve iOS uygulamalarını destekleyen Mono çalışma zamanında performans geliştirmeleri.
.NET 7'yi bu kadar hızlı hale getiren performans odaklı özelliklerin birçoğuna ayrıntılı bir bakış için .NET 7'deki Performans iyileştirmeleri blog gönderisine bakın.
System.Text.Json serileştirmesi
.NET 7, aşağıdaki alanlarda System.Text.Json serileştirmesine yönelik iyileştirmeler içerir:
- Sözleşme özelleştirme, türlerin nasıl serileştirildiği ve seriden çıkarıldığı üzerinde daha fazla kontrol sağlar. Daha fazla bilgi için bkz. JSON sözleşmesini özelleştirme.
- kullanıcı tanımlı tür hiyerarşileri için çok biçimli serileştirme
. Daha fazla bilgi için bkz. Türetilmiş sınıfların özelliklerini seri hale getirme. - JSON yükünde bulunması gereken özellikler olan, seri durumdan çıkarmanın başarılı olması için destek gerektiren
üyeleridir. Daha fazla bilgi için bkz. Gerekli özellikler.
Bu güncelleştirmeler ve diğer güncelleştirmeler hakkında bilgi için .NET 7'de System.Text.Json'daki yenilikler blog gönderisine bakın.
Genel matematik
.NET 7 ve C# 11, üzerinde çalıştığınız türü tam olarak bilmenize gerek kalmadan matematiksel işlemleri genel olarak gerçekleştirmenize olanak sağlayan yenilikler içerir. Örneğin, iki sayı ekleyen bir yöntem yazmak istiyorsanız, daha önce her tür için yöntemin aşırı yük ölçütünü eklemeniz gerekiyordu. Artık tür parametresinin sayı benzeri bir tür olarak kısıtlandığı tek bir genel yöntem yazabilirsiniz. Daha fazla bilgi için Genel matematik makalesine ve Genel matematik blog gönderisine bakın.
Normal ifadeler
. NET'in normal ifade kitaplığı .NET 7'de önemli işlevsel ve performans geliştirmeleri görmüştür:
Yeni seçenek RegexOptions.NonBacktracking, geri izlemeyi önleyen bir yaklaşım kullanarak eşleştirmeyi etkinleştirir ve girişin uzunluğunda doğrusal zaman işlemeyi garanti eder. Geri izleme motoru sağdan sola yapılan aramalarda kullanılamaz ve birkaç başka kısıtlama vardır, ancak tüm düzenli ifadeler ve girişler için hızlıdır. Daha fazla bilgi için bkz. geri izlememe modu.
Normal ifade kaynak oluşturucuları yeni. Kaynak oluşturucular, derleme zamanında deseninizi
için iyileştirilmiş bir altyapı oluşturarak aktarım hızı performans avantajları sağlar. Yayılan kaynak projenizin bir parçasıdır, böylece bunu görüntüleyebilir ve hatalarını ayıklayabilirsiniz. Ayrıca, yeni bir kaynak oluşturucu tarafından üretilen tanılama SYSLIB1045
, kaynak oluşturucuya dönüştürülebilecek Regex kullandığınız yerler konusunda sizi uyarır. Daha fazla bilgi için bkz. .NET normal ifade kaynak oluşturucularını.Büyük/küçük harfe duyarlı olmayan aramalar için .NET 7, büyük performans kazanımları içerir. Kazançlar, RegexOptions.IgnoreCase belirtilmesi artık desendeki her karakterde ve girişteki her karakterde ToLower çağırmadığından gelir. Bunun yerine, büyük/küçük harfle ilgili tüm işlemler Regex oluşturulduğunda yapılır.
Regex artık bazı API'ler için span'ları destekliyor. Bu desteğin bir parçası olarak aşağıdaki yeni yöntemler eklenmiştir:
- Regex.EnumerateMatches
- Regex.Count
- Regex.IsMatch(ReadOnlySpan<Char>) (ve birkaç aşırı yükleme daha)
Bu ve diğer geliştirmeler hakkında daha fazla bilgi için .NET 7'deki Normal ifade geliştirmeleri blog gönderisine bakın.
.NET kitaplıkları
.NET kitaplık API'leri için birçok geliştirme yapılmıştır. Bazıları bu makalenin diğer ayrılmış bölümlerinde belirtilmiştir. Bazıları aşağıdaki tabloda özetlenir.
Açıklama | API'ler | Daha fazla bilgi |
---|---|---|
TimeSpan, TimeOnly, DateTimeve DateTimeOffset türlerinde mikrosaniye ve nanosaniye desteği | - DateTime.Microsecond - DateTime.Nanosecond - DateTime.AddMicroseconds(Double) - Yeni DateTime oluşturucu aşırı yüklemeleri - DateTimeOffset.Microsecond - DateTimeOffset.Nanosecond - DateTimeOffset.AddMicroseconds(Double) - DateTimeOffset oluşturucu için yeni aşırı yüklemeler - TimeOnly.Microsecond - TimeOnly.Nanosecond - TimeSpan.Microseconds - TimeSpan.Nanoseconds - TimeSpan.FromMicroseconds(Double) - Ve diğerleri... |
Bu API'ler, mikrosaniye ve nanosaniye değerlerini belirlemek için artık "tik" değeri üzerinde hesaplama yapmanız gerekmediği anlamına gelir. Daha fazla bilgi için .NET 7 Preview 4 blog gönderisine bakın. |
Tar arşivlerini okumak, yazmak, arşivleme ve ayıklamak için API'ler | System.Formats.Tar | Daha fazla bilgi için .NET 7 Preview 4 ve .NET 7 Preview 6 blog gönderilerine bakın. |
Trafiği güvenli bir düzeyde tutarak kaynağı korumak için API'leri sınırlama oranı | RateLimiter ve diğerleri System.Threading.RateLimiting NuGet paketi içinde | Daha fazla bilgi için bkz. .NET |
Bir |
- Stream.ReadExactly - Stream.ReadAtLeast |
Stream.Read akıştaki kullanılabilir verilerden daha az veri döndürebilir. Yeni |
DateOnly , TimeOnly , Int128 , UInt128 ve Half için yeni tür dönüştürücüleri |
System.ComponentModel ad alanında: - DateOnlyConverter - TimeOnlyConverter - Int128Converter - UInt128Converter - HalfConverter |
Tür dönüştürücüleri genellikle değer türlerini bir dizeye ve dizeden dönüştürmek için kullanılır. Bu yeni API'ler, daha yakın zamanda eklenen türler için tür dönüştürücüleri ekler. |
IMemoryCache için ölçüm desteği | - MemoryCacheStatistics - MemoryCache.GetCurrentStatistics() |
GetCurrentStatistics(), bir veya daha fazla bellek önbelleğinin istatistiklerini izlemek için olay sayaçlarını veya ölçüm API'lerini kullanmanıza olanak tanır. Daha fazla bilgi için .NET 7 Preview 4 blog gönderisine bakın. |
Unix dosya izinlerini almak ve ayarlamak için API'ler |
-
System.IO.UnixFileMode sabit listesi - File.GetUnixFileMode - File.SetUnixFileMode - FileSystemInfo.UnixFileMode - Directory.CreateDirectory(String, UnixFileMode) - FileStreamOptions.UnixCreateMode |
Daha fazla bilgi için .NET 7 Preview 7 blog gönderisine bakın. |
Dizede ne tür bir söz diziminin beklendiğini belirten öznitelik | StringSyntaxAttribute | Örneğin, string parametresine [StringSyntax(StringSyntaxAttribute.Regex)] ile atıfta bulunarak bir normal ifade beklediğini belirtebilirsiniz. |
Tarayıcıda veya diğer WebAssembly mimarilerinde çalışırken JavaScript ile birlikte çalışmak için API'ler | System.Runtime.InteropServices.JavaScript | JavaScript uygulamaları, JavaScript'teki .NET kitaplıklarını yeniden kullanmak için .NET 7'deki genişletilmiş WebAssembly desteğini kullanabilir. Daha fazla bilgi için bkz. .NET 7'de herhangi bir JavaScript uygulamasından .NET kullanma. |
Gözlemlenebilirlik
.NET 7, gözlemlenebilirlikiyileştirmeler sağlar. Gözlemlenebilirlik, uygulamanızın ölçeklendirildikçe ve teknik karmaşıklık arttıkça durumunu anlamanıza yardımcı olur. . NET'in gözlemlenebilirlik uygulaması öncelikle OpenTelemetrytemel alır. Geliştirmeler şunlardır:
- Yönetilen iş parçacığının span bağlamının ne zaman değiştiğini tespit etmek için kullanabileceğiniz yeni Activity.CurrentChanged olayı.
- Activity özellikleri için yeni, performanslı numaralandırıcı yöntemleri: EnumerateTagObjects(), EnumerateLinks()ve EnumerateEvents().
Daha fazla bilgi için .NET 7 Preview 4 blog gönderisine bakın.
.NET SDK
.NET 7 SDK CLI şablon deneyimini geliştirir. Ayrıca kapsayıcılara yayımlamayı ve NuGet ile merkezi paket yönetimini etkinleştirir.
Şablon
dotnet new
komutunda ve şablon yazmada bazı hoş geldiniz iyileştirmeleri yapılmıştır.
dotnet new
Şablona dayalı olarak yeni bir proje, yapılandırma dosyası veya çözüm oluşturan dotnet new
CLI komutu, artık keşif amaçlı sekme tamamlama desteği sunuyor:
- Kullanılabilir şablon adları
- Şablon seçenekleri
- İzin verilebilen seçenek değerleri
Buna ek olarak, daha iyi uyumluluk için install
, uninstall
, search
, list
ve update
alt komutları artık --
önekine sahip değildir.
Yazma
.NET 7 için yeni bir kavram olanşablon dotnet new list
gibi komutlarda hangi şablonları göstermesi gerektiğini belirlemesine yardımcı olur. Şablonunuzu bir işletim sistemi, şablon altyapısı konağı (örneğin, Visual Studio'daki .NET CLI veya Yeni Proje iletişim kutusu) ve yüklü bir iş yüküyle kısıtlayabilirsiniz. Kısıtlamaları şablonunuzun yapılandırma dosyasında tanımlarsınız.
Ayrıca şablon yapılandırma dosyasında artık birden çok değere izin vermek için bir şablon parametresine açıklama ekleyebilirsiniz. Örneğin, web
şablonu birden çok kimlik doğrulaması biçimine izin verir.
Daha fazla bilgi için .NET 7 Preview 6 blog gönderisine bakın.
Kapsayıcıya yayınla
Kapsayıcılar, bulutta çok çeşitli uygulamaları ve hizmetleri dağıtmanın ve çalıştırmanın en kolay yollarından biridir. Kapsayıcı görüntüleri artık desteklenen bir .NET SDK çıkış türüdür ve dotnet publish
kullanarak uygulamalarınızın kapsayıcılı sürümlerini oluşturabilirsiniz. Özellik hakkında daha fazla bilgi için bkz. .NET SDK için yerleşik kapsayıcı desteği duyurusu. Öğretici için bkz. dotnet publishile bir .NET uygulamasını kapsayıcılı hale
Merkezi paket yönetimi
Artık NuGet'in merkezi paket yönetimi (CPM) özelliğini kullanarak projelerinizdeki ortak bağımlılıkları tek bir konumdan yönetebilirsiniz. Bunu etkinleştirmek için, deponuzun köküne bir Directory.Packages.props dosyası eklersiniz. Bu dosyada MSBuild özelliği ManagePackageVersionsCentrally
true
olarak ayarlayın ve PackageVersion
öğeleri kullanarak ortak paket bağımlılığı için sürümler ekleyin. Ardından, tek tek proje dosyalarında, merkezi olarak yönetilen paketlere başvuran PackageReference öğelerden Version
özniteliklerini atlayabilirsiniz.
Daha fazla bilgi için bkz. Merkezi paket yönetimi.
P/Kaynak oluşturmayı çağır
.NET 7, C# dilinde platform çağrıları (P/Invokes) için bir kaynak oluşturucu sunar. Kaynak kodu oluşturucu, derleme zamanında marshal kodunun kaynak oluşturulmasını tetiklemek için static
üzerindeki LibraryImportAttribute ve partial
yöntemlerini arar. Derleme zamanında marshalling kodu oluşturularak, DllImportAttributekullanılırken olduğu gibi çalışma zamanında hiçbir IL saplaması oluşturulması gerekmez. Kaynak oluşturucu, uygulama performansını artırır ve ayrıca uygulamanın önceden derlenmiş (AOT) olmasını sağlar. Daha fazla bilgi için bkz. platform çağrıları için kaynak oluşturma ve Kaynak tarafından oluşturulan P/Invokesözel marshallers kullanma.
İlgili sürümler
Bu bölüm, .NET 7 sürümüyle eşleşen sürümleri olan ilgili ürünler hakkında bilgi içerir.
Visual Studio 2022 sürüm 17.4
Daha fazla bilgi için bkz. Visual Studio 2022'deki yenilikler
C# 11
C# 11, genel matematik, ham dize değişmez değerleri, dosya kapsamlı türler ve diğer yeni özellikler için destek içerir. Daha fazla bilgi için bkz. C# 11'deki yenilikler.
F# 7
F# 7, dili daha basit hale getirme ve performansı geliştirme ve yeni C# özellikleriyle birlikte çalışma yolculuğuna devam eder. Daha fazla bilgi için bkz. F# 7 Duyurusu.
.NET MAUI
.NET Çok platformlu Uygulama Kullanıcı Arabirimi (.NET MAUI), C# ve XAML ile yerel mobil ve masaüstü uygulamaları oluşturmaya yönelik platformlar arası bir çerçevedir. Android, iOS, macOS ve Windows API'lerini tek bir API'de birleştirir. En son güncelleştirmeler hakkında bilgi için bkz. .NET 7 için .NET MAUI'deki yenilikler.
ASP.NET Core
ASP.NET Core 7.0 hız sınırlama ara yazılımını, minimum API'lerde yapılan iyileştirmeleri ve gRPC JSON kodlamasını içerir. Tüm güncelleştirmeler hakkında bilgi için bkz. ASP.NET Core 7'deki yenilikler.
EF Core
Entity Framework Core 7.0 JSON sütunları için sağlayıcıdan bağımsız destek, değişiklikleri kaydetmek için geliştirilmiş performans ve özel tersine mühendislik şablonları içerir. Tüm güncelleştirmeler hakkında bilgi için bkz. EF Core 7.0'daki yenilikler.
Windows Forms
.NET 7 için Windows Forms üzerinde çok fazla çalışıldı. Aşağıdaki alanlarda iyileştirmeler yapılmıştır:
- Erişilebilirlik
- Yüksek DPI ve ölçeklendirme
- Veri Bağlama
Daha fazla bilgi için bkz. .NET 7'de Windows Forms'daki yenilikler.
WPF
.NET 7'deki WPF, performans ve erişilebilirlik geliştirmelerinin yanı sıra çok sayıda hata düzeltmesi içerir. Daha fazla bilgi için .NET 7'de WPF'ye yönelik yenilikler blog gönderisine bakın.
Orleans
Orleans, sağlam, ölçeklenebilir dağıtılmış uygulamalar oluşturmaya yönelik platformlar arası bir çerçevedir. Orleansiçin en son güncelleştirmeler hakkında bilgi için bkz. Orleans 3.x'ten 7.0'a geçiş.
.NET Yükseltme Yardımcısı ve CoreWCF
.NET Yükseltme Yardımcısı artık sunucu tarafı WCF uygulamalarının, WCF'nin .NET'e (Core) topluluk tarafından oluşturulan bağlantı noktası olan CoreWCF
ML.NET
ML.NET artık en son son derin öğrenme tekniklerini kullanarak özel metin sınıflandırma modellerini eğitmeye olanak sağlayan bir metin sınıflandırma API'sini içeriyor. Daha fazla bilgi için,
Ayrıca bkz.
- .NET 7 için
Sürüm notları