Microsoft: Build 2023’te .NET 8.0 için daha fazla paket ve plan
.NET 8.0’ın ilk dört önizleme sürümü şu anda mevcuttur. Şimdiye kadar kural olmasına rağmen, Build 2023 konferansının bir parçası olarak yeni yayınlar çıkmadı, ancak mevcut Önizleme 4, konferanstan bir hafta önce hazırdı. Bununla birlikte, yapı konferansında, Kasım 2023’te planlanan bir çıkış tarihine kadar önümüzdeki birkaç ay içinde gelecek önizleme derlemeleri için bazı duyurular yapıldı.Blazor WebAssembly artık gerçek çoklu iş parçacığı özelliğine sahip olmalıdır.
Duende kimlik sunucusu yok
Mayıs ortasında sürüm 4’ü önizledikten sonra, Yapı Konferansı’nda .NET geliştiricileri için en büyük duyurulardan biri, Microsoft’un Duende Identity Server tümleştirmesini ASP.NET Core’daki proje şablonlarına kaldıracağıydı. Ancak, geliştiricilerin Identity Server’a veya diğer OIDC uyumlu kimlik doğrulama sunucularına bağlantı eklemesi yine de mümkün olacaktır.
Bu adımın arka planı, Identity Server 1’den 4’e kadar olan sürümlerin açık kaynaklı yazılım ve kar amacı gütmeyen bir .NET Foundation projesi olmasıdır. Ekim 2020’de Dominick Baier ve Brock Allen, yazılımı Duende şirket adı altında ticari bir modele dönüştürdü. Yalnızca açık kaynak projeleri lisans ücretlerinden muaftır. Microsoft ayrıca ASP.NET Core 8.0’da OIDC uyumlu bir merkezi kimlik doğrulama sunucusu olmadan uygulamaya özel kimlik doğrulama belirteçlerini kullanmayı kolaylaştıracağını duyurdu.
Bir sonraki uzun süredir devam eden destek sürümü, .NET 8.0 ile birlikte görünecektir. 21 Kasım 2023’te Haberler ve www.IT-Visions.de tarafından sunulan betterCode() .NET 8.0 çevrimiçi konferansı, .NET 8.0’a ilişkin temel bir genel bakış elde etmek için araçlar sağlayacaktır. Uzman konuşmaları .NET 8.0, ASP.NET Core 8.0, Blazor 8.0, .NET MAUI, C# 12.0 ve daha fazlasındaki yenilikleri gösterir. Dört tam günlük atölye çalışması pratik bilgiler verir.
Web hizmetleri esnekliği
“.NET 8 ile Bulutta Yerel Geliştirme” konferansında, Microsoft’un Baş Program Yöneticisi Brady Gaster, 23 Mayıs’tan bu yana erken bir sürüm 8.0.0 önizlemesi olan yeni bir Microsoft.Extensions.Http.Resilience paketini gösterdi. , NuGet.org’da 2023 .4.23273.7, ancak .NET 8.0 Önizleme 4’ün parçası değildi. Bu paketle geliştiriciler şunları yapabilir: AddStandardResilienceHandler() ile bağlantılı olarak gRPC ve WebAPI hizmetlerini kullanırken AddGrpcClient() VE AddHttpClient() Arama. yeni yöntemde AddStandardResilienceHandler() Zaman aşımı, tekrar sayısı, hız sınırı ve geri dönüş gibi geçici hata davranışı için çok sayıda ayar mevcuttur. Liste 1’de gösterilen bir ASP.NET Core 8.0 projesinden alıntı, ilgili örnekleri gösterir.
// WebAPI-Dienst mit Standard-Resilienz-Einstellungen
builder.Services.AddHttpClient<OrderServiceClient>(c =>
{
var url = builder.Configuration["ORDERS_URL"] ?? throw new InvalidOperationException("ORDERS_URL is not set");
c.BaseAddress = new(url);
})
.AddStandardResilienceHandler();
// gRPC-Dienst mit angepassten Resilienz-Einstellungen
builder.Services.AddGrpcClient<Products.Products.ProductsClient>(c =>
{
var backendUrl = builder.Configuration["PRODUCTS_URL"] ?? throw new InvalidOperationException("PRODUCTS_URL is not set");
c.Address = new(backendUrl);
})
.AddStandardResilienceHandler(
x =>
{
x.RetryOptions = new HttpRetryPolicyOptions() { BackoffType = BackoffType.Linear, RetryCount = 3, ShouldRetryAfterHeader = true };
x.AttemptTimeoutOptions = new HttpTimeoutPolicyOptions() { TimeoutStrategy = TimeoutStrategy.Optimistic, TimeoutInterval = TimeSpan.FromSeconds(5) };
x.CircuitBreakerOptions = new HttpCircuitBreakerPolicyOptions() { FailureThreshold = 0.5, BreakDuration = TimeSpan.FromSeconds(4), SamplingDuration = TimeSpan.FromSeconds(15) };
x.TotalRequestTimeoutOptions = new HttpTimeoutPolicyOptions() { TimeoutStrategy = TimeoutStrategy.Optimistic, OnTimedOutAsync = (x) => Log(x) };
}
);
Liste 1: Varsayılan esneklik ayarlarına sahip WebAPI hizmeti
Yeni Microsoft.Extensions.Http.Resilience paketi, dayanıklılık ve hata işleme için köklü bir .NET kitaplığı olan Polly’yi temel alır. Polly’nin ilk sürümü, klasik .NET Framework için 2013 yılında yayınlandı. Ek olarak, Brady Gaster’ın konuşması, .NET’te OpenTelemetry Protocol (OTLP) uygulamasındaki bazı iyileştirmeleri duyurdu.
Brady Gaster’ın konuşmasında duyurulduğu üzere ASP.NET Core 8.0’daki ölçeklenebilirlik ve yüksek kullanılabilirlik geliştirmeleri.
(Resim: Microsoft)
Microsoft, OTLP’yi ilk olarak .NET 7.0’da tanıttı. Yeni özellikler, Grafana dahil olmak üzere Prometheus gibi izleme yazılımları, Jaeger ve Zipkin ile izleme ve Application Insights, AWS Cloud Watch ve Google Cloud Monitoring gibi Application Performance Monitoring (APM) bulut uygulamalarıyla entegrasyonu kolaylaştırır.
.NET 8.0 uygulamalarının OTLP özellikli yazılıma entegrasyonu.
(Resim: Microsoft)
Bahsi geçen paketlerin tamamı Microsoft.Extensions.Telemetry ve Microsoft.Extensions.Compliance.Redaction gibi ilk olarak 23 Mayıs 2023 tarihinde NuGet.org üzerinde yayınlandı. Yeni telemetri paketleri, .NET için mevcut OpenTelemetry SDK’sını temel alır.
Geliştiriciler, sunumda gösterilen örnek uygulamayı GitHub’da bulabilirler. Yeni Microsoft.Extensions.Http.Resilience paketi burada zaten kullanılıyor olsa da, telemetri örneği hala .NET için OpenTelemetry SDK’yı (paket adı OpenTelemetry.*) kullanıyor. Yeni paketlerin kullanımına ilişkin bir örnek (Microsoft.Extensions.Telemetry.* ve Microsoft.Extensions.Compliance.*) henüz dahil edilmemiştir.
AOT derleyicisinden yeni ölçümler
Microsoft’un başlangıçta yalnızca konsol uygulamaları için .NET 7.0’da tanıttığı ve .NET 8.0’da gRPC ve Minimal WebAPI ile web hizmetlerine genişletilecek olan ilk derleyici (“Native AOT”) için Microsoft, durumla ilgili yeni rakamlar gösterdi. yapı boyutunda, RAM kullanımında ve başlatma süresinde iyileştirmeler.
Tam zamanında derleyici ile .NET 8.0 kullanan bir WebAPI hizmeti için ölçümler.
(Resim: Microsoft)
Yalnızca saniye başına istek (RPS) cinsinden ölçülen çalışma zamanı performansı, Windows altında biraz iyileşir ve Linux altında şu anda AOT derlemesi nedeniyle biraz daha kötüdür.
Native-AOT yapısıyla yukarıdaki resimde gösterilen WebAPI hizmeti için ölçümler.
(Resim: Microsoft)
.NET yazılım mimarı Damian Edwards, “.NET performansına ve yerel AOT’ye derinlemesine dalış” konferansında, veri erişiminin şu ana kadar yalnızca ADO.NET (yani Command ve DataReader nesneleri aracılığıyla) ve deneysel ilişkisel eşleyicisi “NanoORM” aracılığıyla mümkün olduğunu açıkladı. Desteklenmektedir.
Yerleşik Entity Framework Core nesne-ilişkisel eşleştiricinin AOT uyumlu hale gelmesi için hala uzun bir yolu var. NanORM, StackExchange’in Dapper’ına benzer şekilde çalışır. Bu, geliştirme ekiplerinin sorgulamak için Entity Framework Core gibi LINQ’u değil SQL’i kullandığı anlamına gelir, örneğin:
using var db = new SqliteConnection(connectionString);
var todos = db.QueryAsync<Todo>("SELECT * FROM Todos");
var todosList = new List<Todo>();
orada QueryAsync<T> Microsoft.Data.Sqlite.SqliteConnection sınıfında bir uzantı yöntemi. Bu nedenle geliştiriciler, Liste 2’de gösterildiği gibi veri kayıtlarını eklemek, değiştirmek ve silmek için bir karakter dizisinde SQL sözdizimini de kullanır.
var todo = new Todo { Title = title };
var createdTodo = await db.QuerySingleAsync<Todo>("""
INSERT INTO Todos(Title, IsComplete)
Values(@Title, @IsComplete)
RETURNING *
""",
todo.Title.AsDbParameter(),
todo.IsComplete.AsDbParameter());
Liste 2: Geliştiriciler, kayıtları eklemek, düzenlemek ve silmek için bir karakter dizisinde SQL sözdizimini kullanır.
Böylece NanORM, Entity Framework Core’dan önemli ölçüde daha az veritabanı yönetim sistemi soyutlaması, geliştirme kolaylığı ve sağlamlık sunar.
Çok iş parçacıklı Blazor WebAssembly
Blazor 8.0’da, Blazor WebAssembly’de geliştirici tarafından oluşturulan iş parçacıkları biçiminde çoklu iş parçacığı kullanımı mümkün olacaktır. .NET 7.0’dan başlayarak, .NET WASM SDK’da yalnızca deneysel destek vardır ve yalnızca WebAssembly tabanlı tarayıcıda ancak Blazor Çerçevesi olmadan çalışan .NET kodu için destek vardır. Çalışma devam ediyor ve GitHub üzerinden takip edilebilir. Microsoft, .NET WebAssembly ve .NET WASM SDK için SDK’ları uyumlu hale getirmeye devam etmektedir. .NET 8.0’da Microsoft ayrıca geliştirilmekte olan Blazor uygulamalarının çalışırken yeniden yüklenmesini iyileştirmek istiyor.
Blazor United sadece bir prototip olmaya devam ediyor
Build’ta Microsoft, Ocak 2023’te duyurulan ve modern bir web uygulaması için kademeli iyileştirmeler sunmayı amaçlayan Blazor United’ı bir kez daha sergiledi. Önce bir Blazor United web uygulamasını yalnızca sunucu tarafında işleyebilir, ardından Blazor Sunucusunu WebSocket etkileşimiyle sessizce geçirebilir ve son olarak, .NET derlemeleri tarayıcıda eksiksiz olarak yüklendikten sonra Blazor WebAssembly ile istemci tarafında çalıştırabilirsiniz. Blazor United demosu etkileyiciydi ve daha önce zor olan Blazor Server ile Blazor WebAssembly arasındaki seçime bir çözüm gibi görünüyor. Bununla birlikte, Blazor United hala yalnızca bir prototip olarak mevcuttur ve henüz .NET 8.0 önizlemelerinin bir parçası değildir.
Genel olarak, .NET, bu yılki Build konferansında önceki yıllara göre daha az temsil edildi ve .NET geliştirme ekibinden yalnızca altı sunum yapıldı. Bunlar aşağıdaki derslerdir:
Dersler artık YouTube’da daha sonra ücretsiz olarak da izlenebilir.
(FM)
Haberin Sonu