SEKTöR HABERLERI

LeadByExample(): Jakub Chodounsky'nin Pratik Mühendislik Üzerine, YOLO Zihniyeti ve En İyi Uygulamaların Her Zaman En İyi Olmadığı Durumlar

.NET 11'in dördüncü önizleme sürümü artık mevcut ve hem kütüphane yazarlarını hem de üretimde .NET hizmetleri işleten ekipleri maddi olarak etkileyen birkaç değişiklik getiriyor. Iron Software'de, .NET kütüphanelerinden oluşan bir portföyü sürdürüyoruz, bu da her önizleme sürümünün bizi iki değerlendirmeye götürdüğü anlamına gelir: bizim için bakıcılar olarak ne değişir ve bu kütüphaneleri uygulamalarına entegre eden müşteriler için ne değişir. Aşağıdakiler, en önemli bulduğumuz Önizleme 4 güncellemeleridir.

Proses API: yılların en ciddi güncellemesi

System.Diagnostics.Process, birkaç sürüm döngüsünde ilk ciddi güncellemesini alır ve kütüphane yazarlarının yıllardır etrafında çalıştığı tam acı noktalarına yönelir. Bu, işimizle doğrudan ilgilidir. IronPDF içsel olarak bir Chromium render işlemi sarar, bu da ekibimizin Microsoft'un şimdi standart hale getirdiği yüzey alanı üzerinde özelleştirilmiş çözümler inşa ettiği ve sürdüğü anlamına gelir: işlem oluşturma, kilitlenmesiz çıktı yakalama, platformlar arası yaşam süresi yönetimi ve güvenilir sonlandırma davranışı.

Yeni API yüzeyi, kütüphane ekiplerinin yıllardır etrafından dolaştığı sorunların bir kataloğu gibi okunur:

// One-line execution with no deadlock risk
string output = await Process.RunAndCaptureTextAsync("git", ["log", "-5"]);

// Cross-platform parent-exit behavior
var psi = new ProcessStartInfo("renderer.exe")
{
    KillOnParentExit = true,
};
// One-line execution with no deadlock risk
string output = await Process.RunAndCaptureTextAsync("git", ["log", "-5"]);

// Cross-platform parent-exit behavior
var psi = new ProcessStartInfo("renderer.exe")
{
    KillOnParentExit = true,
};
Imports System.Diagnostics
Imports System.Threading.Tasks

' One-line execution with no deadlock risk
Dim output As String = Await Process.RunAndCaptureTextAsync("git", {"log", "-5"})

' Cross-platform parent-exit behavior
Dim psi As New ProcessStartInfo("renderer.exe") With {
    .KillOnParentExit = True
}
$vbLabelText   $csharpLabel

RunAndCaptureTextAsync, boru tamponu kilitlenmelerini ortadan kaldırmak için stdout ve stderr'i çoğullandırır. KillOnParentExit ve StartDetached, Windows ve Linux'ta alt işlem yaşam süresi üzerinde platformlar arası kontrol sağlar. InheritedHandles, hangi kulpların bir alt işlem tarafından miras alınacağını açıkça belirtmeye olanak tanır ve genel mirasın tarihi varsayımını değiştirir. Hafif SafeProcessHandle yüzeyi, standart API'den %20 daha küçük NativeAOT ikili dosyalarını üretir.

Alt işlemleri koordine eden .NET yazılımı geliştiren her ekip için, sürüm notlarının bu bölümü dikkatlice incelenmeye değer.

Bu altyapıyı içeride inşa etmeyi ve bakmayı tercih etmeyen ekipler için, IronPDF, kutudan çıktığı gibi test edilmiş üretim uygulamalarını sunar: kilitlenmesiz çıktı yakalama, yaşam süresi kontrolü ve güvenilir hata işleme. Iron Suite'in ücretsiz deneme sürümünü başlatın, kredi kartı gerekmiyor.

Span tabanlı Deflate, ZLib ve GZip API'leri

Bu değişiklik sürüm notlarında daha az görünür, ancak sıkıştırılmış veri işleyen her yükü önemli ölçüde iyileştirir. PDF belgeleri, sıkıştırılmış içerik akışları içerir. XLSX dosyaları, sıkıştırılmış XML ZIP arşivleridir. DOCX aynı deseni izler. Yeni span tabanlı kodlayıcı ve kod çözücü API'leri, sürekli olarak IronPDF gibi kütüphanelerin ve IronXL gibi kütüphanelerin gerçekleştirdiği işlemler üzerinden ayrımları azaltır.

Bunlar, nadiren sürüm başlıklarında yer alan altyapı seviyesi iyileştirmelerdir ancak çerçeve yoluyla işlenen her baytın maliyetini azaltır.

Şimdi çerçeve kütüphanelerine derlenmiş Runtime Async

Önizleme 3, Runtime Async üzerinde önizleme-özellik kapısını kaldırmıştır. Önizleme 4 bunu daha da genişletir: çalışma zamanı kütüphanelerinin kendisi (tüm BCL, System.IO ve System.Net.Http dahil), artık runtime-async ile derlenmiştir. Çerçeveye yapılan her asenkron çağrı, artık özellik etkinleştirilmiş olsun olmasın yeni devam mekanizmasını kullanır.

Büyük miktarda G/Ç gerçekleştiren kütüphaneler için (dosya okuma, uzaktaki varlıkları indirme, codec'ler aracılığıyla bayt akışı), bu, tüketici tarafı değişikliklerine gerek kalmadan bağımlılık performansında anlamlı bir iyileştirmeyi temsil eder. Runtime ekibinden Andy Gocke, el ile etkinleştirilmiş DecompressAsync'in bir MemoryStream ile desteklendiğinde sıfır ek tahsis ürettiğini teyit etmiştir. Microsoft henüz resmi performans karşılaştırma sayıları yayınlamadı ve tam performans test setini tamamlaması gerektiğini belirtti, ancak yapısal değişiklik yürürlükte.

MAUI, CoreCLR'a taşınıyor

Bu sürümdeki en önemli mimari değişikliktir, ancak ürün hattımız üzerindeki doğrudan etki sınırlıdır. Önizleme 4 ile başlayan Android, iOS ve Mac Catalyst üzerinde MAUI uygulamaları, varsayılan olarak CoreCLR üzerinde çalışır ve .NET'in mobil çalışma zamanı olarak 15 yıldan fazla süren Mono'yu sonlandırır. Artık aynı çalışma zamanı, ASP.NET Core, masaüstü uygulamaları ve mobil platform için güç sağlıyor. dotnet watch artık Android ve iOS için de mevcut ve MAUI geliştirici deneyiminde başından beri sıkça belirtilen boşluklardan birini adresliyor.

IronBarcode veya IronPDF'yi bir MAUI uygulaması içinde kullanan ekipler için, altındaki çalışma zamanı artık .NET yığını ile birleştirilmiştir.

Bilinen sınırlamalar ve düşünceler

  • Visual Studio desteği, Insider kanalında sınırlı kalıyor. Kararlı Visual Studio sürümlerindeki ekipler henüz .NET 11'i ana geliştirme hattına entegre etmiyor.
  • Runtime Async yapısal olarak yerleşmiştir, ancak resmi kıyaslamaları yoktur. "10M awaits: 80ms'den 32ms'ye, 687MB'den 94KB'ye" yaygın şekilde dolaşan rakam, Microsoft yerine bir topluluk özetinden kaynaklanmaktadır.
  • MAUI'deki CoreCLR geçişi, varsayılan olarak gönderilen bir çalışma zamanı değişikliğidir. Mevcut MAUI uygulamaları, şeffaf bir yükseltme varsayılmak yerine fiziksel cihazlarda test edilmelidir.
  • Herhangi bir önizleme gibi, üretim dağıtımı için en az birinci sürüm adayı beklenmelidir.

Özet

Önizleme 4, bugüne kadarki .NET 11 döngüsündeki en güçlü değişiklik setini temsil eder. Proses API yeniden yazımı, alt işlemleri başlatan veya işleten .NET yazılımı geliştiren ekipler için en önemli güncellemedir. Sıkıştırma ve Runtime Async iyileştirmeleri, G/Ç yoğun yüklerde bileşik hale gelir. MAUI çalışma zamanı hikayesi artık platformun geri kalanıyla tutarlıdır.

Ekibimiz, her önizlemeyi aktif olarak takip ediyor ve kütüphanelerimizi .NET 11 genel kullanıma sunulduğunda gün bir uyumlu hale getirmeye hazırlıyor.