C#

.NET 8 Preview: Minimal API'ler ve Performance İyileştirmeleri İncelemesi

· 8 dakika okuma · 0
.NET 8 Preview: Minimal API'ler ve Performance İyileştirmeleri İncelemesi

Merhaba,

.NET 8, Kasım 2023'te resmi olarak yayımlanmadan önce preview sürümleri ardı ardına geliyor ve her birinde dikkat çekici özellikler var. Bu yazımda şimdiye kadar gördüklerimizi dilim döndüğünce aktarmak istedim. Özellikle .NET 8'in LTS sürümü olacağını düşününce bu değerlendirme daha da önem kazanıyor.

.NET 8'in LTS Olması Ne Anlama Geliyor ?

Önce bunu netleştirelim. .NET 7 Current sürümüydü, 18 ay destek alıyordu. .NET 8 ise LTS (Long-Term Support) sürümü — 3 yıl desteklenecek. Kurumsal projeler için bu çok kritik. .NET 8 çıktığında yeni projeleri doğrudan bununla başlatmak mantıklı.

Blazor'da Devrim: Unified Rendering

Bu sürümün belki de en heyecan verici özelliği Blazor'daki değişim. Şimdiye kadar Blazor Server ve Blazor WebAssembly birbirinden bağımsız iki hosting modeliydi. .NET 8 ile bunlar birleşiyor.

Yeni modelde aynı bileşen hem server-side hem client-side render edilebiliyor. Hatta sayfa içinde bileşen bazında rendering modu seçilebiliyor. İlk yükleme için server-side (hız için), interaktif kısımlar için WebAssembly (offline için) kombinasyonu artık mümkün. Bu mimari esneklik kurumsal web uygulamalarında çok değerli.

Native AOT Compilation

.NET 8 ile Native AOT (Ahead-of-Time Compilation) minimal API'ler için resmi destek kazanıyor. AOT ne demek?

  • Uygulama, çalışma zamanında JIT derlemesi yapmadan doğrudan makine koduna derleniyor
  • Başlangıç süresi milisaniyeler mertebesine iniyor (container ve serverless ortamlarda altın değerinde)
  • Bellek kullanımı dramatik biçimde düşüyor
  • Çalıştırmak için .NET runtime kurulu olması gerekmiyor, tek başına çalışan binary üretiliyor

Microservice mimarisinde küçük, hızlı başlayan servisler için bu özellik gerçek bir game changer.

Performance Tarafı

Microsoft'un paylaştığı preview benchmark'larına göre .NET 8:

  • TechEmpower Plaintext benchmark'ında saniyede 1.9 milyon istek — bir önceki sürüme göre %18 artış
  • LINQ operasyonlarında belirgin hızlanma
  • Frozen Collections ile salt okunur koleksiyonlarda arama hızı artışı
  • System.Text.Json'da daha hızlı serialization/deserialization

C# 12 Yenilikleri

.NET 8 ile birlikte C# 12 de geliyor. Öne çıkan özellikler:

  • Primary Constructors: Sınıf parametrelerini doğrudan sınıf imzasında tanımlayabiliyorsunuz, ayrıca constructor yazmaya gerek kalmıyor.
  • Collection Expressions: Dizi, liste, span — tüm koleksiyonları aynı sözdizimi ile oluşturabiliyorsunuz.
  • Inline Arrays: Performans kritik senaryolarda stack'te sabit boyutlu dizi tanımlamak artık çok daha kolay.

Ne Zaman Geçmeli ?

Kasım 2023'te resmi sürüm çıktığında yeni projeler için .NET 8'i tercih etmenizi öneririm. Mevcut .NET 6 LTS projelerini aceleyle taşımak gerekmez, 2024 Kasım'a kadar destek var. Ama .NET 7 üzerindeyseniz .NET 8 çıkınca geçişi planlamaya başlayın, support süresi kısalıyor.

İyi Günler Dilerim,

Bu yazıyı paylaş: