Yıllardır kullandığımız Task.ConfigureAwait(false) artık tek başına yeterli değil. .NET 8 ile birlikte gelen yeni bir enum var ve bir Task tamamlandığında uygulamanın nasıl tepki vereceğini çok daha hassas bir şekilde belirlememize olanak tanıyor.
Bu makalede .NET üzerinde Transactional Outbox Pattern uygulayarak bu iki işlemi tek bir atomik birime nasıl indirgeyeceğimizi ve Eventual Consistency prensibiyle sistemler arası veri bütünlüğünü nasıl garanti altına alacağımızı inceleyeceğiz.
Yüksek trafikli .NET sistemlerinde performans ve thread güvenliği (thread-safety) kritik öneme sahiptir. Veri yapıları arasındaki küçük farklar, saniyede binlerce isteğin işlendiği senaryolarda CPU ve bellek kullanımında büyük farklar yaratabilir.
Günümüz yazılım projelerinde, uzun süre devam eden işlemlerin doğru şekilde ele alınması, uygulamanın kararlı ve akıcı çalışması için büyük önem taşır. Birçok operasyon kullanıcıyı bekletmeden arka planda yürütülmelidir.
Parallel.ForEachAsync bize .NET 6 ile birlikte tanıtılmıştır. Bu metot .NET 6'nın getirdiği en önemli yeniliklerden birisi. Çünkü async metotların paralel döngü içinde verimli bir şekilde kullanılmasına olanak tanır.
Bilindiği üzere .NET, uygulamanın kendi ihtiyaçlarını karşılayacak düzeyde oldukça sade bir DI container yer alır. Bu built-in container Microsoft.DependencyInjection NuGet paketinin içinde bulunur ve yalnızca temel özellikleri sunar.
.NET 10 çıktı ve beraberinde C#14 ile birlikte yeni özellikler geldi. Bunların arasından geliştirici deneyimini ve kod kalitesini doğrudan etkileyen daha ilginç yeniliklerden bazılarını aktaracağım.
C#’ta await kullanmak sadece bir bekleme demek değildir. Derleyici metodu arka planda yeniden yazıyor ve dönüş tipi Task oluyor. Ne demek istediğimi daha iyi anlamak için örnekler üzerinden anlatacağım.
C# üzerinde NEST paketi kullanarak farklı yapılarda ihtiyaçlarınıza göre sorgular oluşturabilirsiniz. Fakat ihtiyacınıza en uygun şekilde oluşturmak için bilmeniz gereken Query yapısı bulunuyor.
C#’ta bir sınıf (class) başvurulan (referenced) bir tip olarak kabul edilir. Sınıflar içinde properties, methods, constructors ve programlama dilinde mevcut olan diğer bileşenler oluşturulabilir.