Aracılığıyla paylaş


.NET 7'deki yenilikler

.NET 7, .NET 6 'ün ardından gelir ve birleştirilmiş, modern, basit ve hızlıolmayı hedefler. .NET 7, standart vadeli destek (STS) sürümü (eski adıyla geçerli sürümü) olarak 18 ay boyunca desteklenecektir.

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:

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:

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 'da HTTP işleyicisine hız sınırı getirme ve .NETiçin hız sınırlamasının duyurusu .
Bir üzerindeki tüm okumak için API'ler. - Stream.ReadExactly
- Stream.ReadAtLeast
Stream.Read akıştaki kullanılabilir verilerden daha az veri döndürebilir. Yeni yöntemleri, istenen bayt sayısını tam olarak okur ve yeni yöntemleri istenen bayt sayısını en az okur. Daha fazla bilgi için .NET 7 Preview 5 blog gönderisine bakın.
DateOnly, TimeOnly, Int128, UInt128ve 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:

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, listve update alt komutları artık -- önekine sahip değildir.

Yazma

.NET 7 için yeni bir kavram olanşablon kısıtlamaları, şablonlarınıza izin verilen bağlamı tanımlamanıza olanak sağlar. Kısıtlamalar, şablon altyapısının dotnet new listgibi 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 publishkullanarak 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 ManagePackageVersionsCentrallytrue 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.

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 CoreWCFyükseltmeyi destekliyor. Daha fazla bilgi için bkz. CoreWCFkullanmak için WCF sunucu tarafı projesini yükseltme.

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, AutoML ve araçlarla ilgili yenilikler ve ML.NET Metin Sınıflandırma API'sine giriş blog gönderilerine bakın. ve etiketleriyle belirtilen blog yazılarımızı inceleyebilirsiniz.

Ayrıca bkz.

  • .NET 7 için Sürüm notları