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ının yürütmesinin ortasında çalışmakta olan bir yöntem tarafından yürütülen kodu değiştirmesine olanak tanır (başka bir ifadeyle "yığında" olur). 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 ekleyerek <TieredPGO>true</TieredPGO> ). PGO ayrıca temsilciler gibi ek öğeleri de izleyebilir ve iyileştirebilir.
Arm64 için geliştirilmiş kod oluşturma.
Yerel 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 Yerel AOT, konsol uygulamalarına odaklanır ve uygulamaların kırpılması gerekir.
Blazor WebAssembly, Android ve iOS uygulamalarını destekleyen Mono çalışma zamanında performans geliştirmeleri.
.NET 7, aşağıdaki alanlarda System.Text.Json serileştirmesine yönelik iyileştirmeler içerir:
Sözleşme özelleştirmesi , türlerin nasıl seri hale getirildiği ve seri durumdan çıkarıldığı üzerinde daha fazla denetim sağlar. Daha fazla bilgi için bkz . JSON sözleşmesini özelleştirme.
Kullanıcı tanımlı tür hiyerarşileri için polimorfik serileştirme . Daha fazla bilgi için bkz . Türetilmiş sınıfların özelliklerini seri hale getirme.
Seri durumdan çıkarmanın başarılı olması için JSON yükünde bulunması gereken özellikler olan gerekli üyeler için destek. Daha fazla bilgi için bkz . Gerekli özellikler.
.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üklemesini 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 altyapısı sağdan sola aramada kullanılamaz ve birkaç kısıtlama daha vardır, ancak tüm normal ifadeler ve girişler için hızlıdır. Daha fazla bilgi için bkz . Geri izleme modu.
Normal ifade kaynak oluşturucuları yeni. Kaynak oluşturucular, derleme zamanında deseniniz 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 tanılaması SYSLIB1045 , kullandığınız Regex ve kaynak oluşturucuya dönüştürülebilecek yerler konusunda sizi uyarır. Daha fazla bilgi için bkz . .NET normal ifade kaynak oluşturucuları.
Büyük/küçük harfe duyarlı olmayan aramalar için .NET 7, büyük performans kazanımları içerir. Kazançlar, artık belirtilmesi RegexOptions.IgnoreCase desendeki her karakterde ve girişteki her karakterde çağrı ToLower yapılmadığından gelir. Bunun yerine, büyük/küçük harfle ilgili tüm çalışmalar oluşturulurken Regex yapılır.
Regex artık bazı API'ler için spans'i destekliyor. Bu desteğin bir parçası olarak aşağıdaki yeni yöntemler eklenmiştir:
.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.
Bu API'ler, mikrosaniye ve nanosaniye değerlerini belirlemek için artık "değer" değeri üzerinde hesaplama yapmanız gerekmediğini gösterir. 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
Stream.Read akıştaki kullanılabilir verilerden daha az veri döndürebilir. Yeni ReadExactly yöntemler tam olarak istenen bayt sayısını okur ve yeni ReadAtLeast yöntemler en az istenen bayt sayısını okur. Daha fazla bilgi için .NET 7 Preview 5 blog gönderisine bakın.
, , TimeOnly, Int128UInt128ve için DateOnlyyeni tür dönüştürücüleriHalf
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.
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
Örneğin, parametresini ile [StringSyntax(StringSyntaxAttribute.Regex)]attribut ederek bir string parametrenin normal ifade beklediğini belirtebilirsiniz.
Tarayıcıda veya diğer WebAssembly mimarilerinde çalışırken JavaScript ile birlikte çalışmak için API'ler
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özlemlenebilirlik konusunda geliştirmeler yapar. 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ı öncelikli olarak OpenTelemetry çevresinde oluşturulur. Geliştirmeler arasında şunlar yer alıyor:
Yönetilen iş parçacığının yayılma bağlamının ne zaman değiştiğini algılamak için kullanabileceğiniz yeni Activity.CurrentChanged olay.
.NET 7 SDK'sı CLI şablon deneyimini geliştirir. Ayrıca kapsayıcılara yayımlamayı ve NuGet ile merkezi paket yönetimini etkinleştirir.
Şablonlar
komutunda ve şablon yazmada dotnet new bazı hoş geldiniz geliştirmeleri yapılmıştır.
dotnet new
Şablona dotnet new dayalı olarak yeni bir proje, yapılandırma dosyası veya çözüm oluşturan CLI komutu artık aşağıdakileri keşfetmek için sekme tamamlamayı destekliyor:
Kullanılabilir şablon adları
Şablon seçenekleri
İzin verilebilen seçenek değerleri
Buna ek olarak, daha iyi uyumluluk için , installuninstall, search, listve update alt komutları artık ön eke -- 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 gibi dotnet new listkomutlarda 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 şablon birden çok kimlik doğrulaması biçimine izin verir.
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 .NET SDK'sının desteklenen bir çıkış türüdür ve kullanarak dotnet publishuygulamaları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 duyuruları. Öğretici için bkz . Dotnet publish ile bir .NET uygulamasını kapsayıcıya alma.
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ğini ManagePackageVersionsCentrally olarak true ayarlayın ve öğeleri kullanarak PackageVersion 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 tüm PackageReference öğelerindeki öznitelikleri atlayabilirsinizVersion.
.NET 7, C# dilinde platform çağrıları (P/Invokes) için bir kaynak oluşturucu sunar. Kaynak oluşturucu LibraryImportAttributestaticpartial, derleme zamanı kaynak oluşturmasını tetikleme yöntemleri için üzerinde arar. Derleme zamanında marshalling kodu oluşturularak, kullanırken DllImportAttributeolduğ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/Invoke'larda ö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.
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 Duyuruları.
.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'a çok fazla iş eklendi. 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'taki 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'deki yenilikler blog gönderisine bakın.
Orleans
Orleans güçlü, ölçeklenebilir dağıtılmış uygulamalar oluşturmaya yönelik platformlar arası bir çerçevedir. için en son güncelleştirmeler hakkında bilgi için Orleansbkz . 3.x'ten Orleans 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ı CoreWCF'ye yükseltmeyi destekliyor. Bu, WCF'nin topluluk tarafından oluşturulan bir bağlantı noktası olan .NET'e (Core) yükseltiliyor. Daha fazla bilgi için bkz . WCF sunucu tarafı projesini CoreWCF kullanacak şekilde 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çlarıyla ilgili yenilikler ve ML.NET Metin Sınıflandırma API'sine Giriş blog gönderilerine bakın.
Bu içeriğin kaynağı GitHub'da bulunabilir; burada ayrıca sorunları ve çekme isteklerini oluşturup gözden geçirebilirsiniz. Daha fazla bilgi için katkıda bulunan kılavuzumuzu inceleyin.
.NET geri bildirimi
.NET, açık kaynak bir projedir. Geri bildirim sağlamak için bir bağlantı seçin:
Bu modülde, Yükseltme Yardımcısı'nı kullanarak bir ASP.NET Framework uygulamasını ne zaman, neden ve nasıl ASP.NET Core'a modernleştirmeyi öğreneceksiniz.