İlkay İlknur

Hoşgeldiniz

Bloga yeni yazı eklendiğinde haberdar olmak için RSS veya email bazlı servisi kullanabilirsiniz.

MemoryStream'in Optimize Versiyonu RecyclableMemoryStream

Şubat 14, 2021
Gerek blogda performansla ilgili yazdığım yazılarda gerekse .NET Conf'ta yaptığım "Yüksek Performanslı Uygulama Geliştirme" oturumunda memory allocationları azaltmakla ilgili pek çok yöntemden bahsettim. Özellikle LOH(Large Object Heap) allocationları konusunda oldukça dikkatli olmamız gerektiğinden çünkü LOH'da yer kalmadığı durumlarda uygulamalarımızda full GC tetiklendiğinden ...
Devamı →

IAsyncEnumerable<T> İle Asenkron Streaming

Şubat 04, 2021
Bu yazıda .NET Core 3.0 ile beraber gelen, asenkron streaming yapmamıza olanak sağlayan IAsyncEnumerable&lt;T&gt; interface'ini inceleyeceğiz. Aslında bu interface'in senkron versiyonu olan IEnumerable&lt;T&gt; interface'ine çok da yabancı değiliz. Hatırlamak amacıyla ufak bir örnek yaparsak, public IEnumerable&lt;string&gt; ReadLines(string filePath) { using var stream = File.OpenRead(fil...
Devamı →

.NET Runtime Eventlerine In-Process ve Out Of Process Erişmek

Ocak 24, 2021
Bir önceki yazıda .NET içerisindeki diagnostic araçlarından bahsetmiştik. Bu araçlardan biri olan dotnet-trace ile uygulamalarımızın tracelerini toplayıp sonrasında da bu traceleri çeşitli araçlarla analiz edip runtime eventlerini ve daha pek çok şeyi analiz edebiliyorduk. Bu yazıda ise işi biraz daha ileri götürüp bu runtime eventlerini uygulamalarımız içerisinde nasıl işleyebileceğimizi ve kendi...
Devamı →

.NET Uygulamalarında Kullanabileceğimiz Diagnostics Araçları

Ocak 17, 2021
Bu yazıda .NET uygulamalarımızı monitör ederken, memory ve performans problemeleriyle karşılaştığımızda kullanabileceğimiz diagnostics araçlarını inceleyeceğiz. Daha öncesinde yine bu kapsamda dotnet-counters isimli aracı blogda yazmıştım. Dilerseniz o yazıyı da okuyabilirsiniz. dotnet-trace dotnet-trace CLI toolu ile çalışan .NET uygulamaların tracelerini toplayabiliyoruz. Bu tool cross-platfor...
Devamı →

C# 8.0 İle Beraber Daha Kolay İndeksleme ve Slicing

Ocak 10, 2021
Herkese Selamlar, Bu yazıda C# 8.0 ile beraber gelen ve çok az bilindiğini düşündüğüm indexing ve slicing operasyonlarında kullanabileceğimiz bir özelliği inceleyeceğiz. Tabi öncelikle programlama dili tarafındaki kolaylıklara geçmeden önce .NET Standart 2.1 ve .NET Core 3.0 ile beraber gelen System.Index ve System.Range tiplerine bir bakalım. public readonly struct Index : IEquatable&lt;Index...
Devamı →

Lambda Expressionlarda Allocationlardan Kaçınmak

Aralık 19, 2020
Bir süre önce Twitter ve LinkedIn hesabımda CLR Heap Allocation Analyzer isimli bir Visual Studio extensionından bahsetmiştim. Bu extensionı kullanan çoğu kişi farkında olmadan yaptığı bazı allocationlardan kolayca kurtulabilirken özellikle tek bir noktada takılıp kalabiliyorlar. O da lambda expresionların neden olduğu allocationlar. Oldukça sinsice gerçekleşen bir allocation olduğu için farkedilm...
Devamı →

Source Generatorlar İle Kod Yazan Kod Yazma

Aralık 08, 2020
Bu yazıda beni de uzun zamandan beri heyecanlandıran bir özelliği inceleyeceğiz. C# 9.0 ile beraber gelen programlama dili yeniliklerinin yanında belki de yeterli ilgiyi görmeyen ama uzun vadede pek çok şeyi değiştirebilecek olan özelliklerden biri source generatorlar. Source generatorlar bizim derleme zamanı sırasında varolan kodları analiz edip yeni kodlar yaratmamızı ve bunları da derlemeye dah...
Devamı →

System.Text.Json API'larına .NET 5.0 İle Beraber Gelen Yenilikler

Ekim 25, 2020
Önceki yazılarımdan birinde .NET Core 3.0 ile beraber gelen yeni System.Text.Json API'larından bahsetmiştim. O yazıyı, bu API'ların mevcutta kullandığımız Newtonsoft.Json kütüphanesine göre oldukça yeni olduğundan bu nedenle de özellik bakımından arada farklar olabileceğinden, .NET 5.0 ile beraber bu farkın biraz daha kapanacağından bahsederek sonlandırmıştım. Bu yazının konusu da System.Text.Json...
Devamı →

stackalloc İfadesi Nedir? Nasıl Kullanılır?

Ekim 17, 2020
Bu yazıda kod yazarken belki intellisense pencereseninde adını görüp merak ettiğiniz belki de arada kullandığınız stackalloc ifadelerinden bahsedeceğiz. stackalloc ifadesi en basit anlatımla stack üzerinde belirtilen kadar bir blok memory allocate etmek için kullanılır. Stack üzerinde allocate edilen bu alan metot sonlanmasıyla beraber otomatik olarak boşa çıkacağı için GC üzerinde de herhangi bir...
Devamı →

ASP.NET Health Check Mekanizması ve Azure App Servicelerde Health Check Kullanımı

Eylül 25, 2020
Health check mekanizmaları uygulamamızın sağlığının yerinde olup olmadığını görebildiğimiz ve gerekli durumlarda da dışarıya bildirebildiğimiz mekanizmalar. Uygulamanızı monitör ederken bu mekanizmadan gelen sonuçları değerlendirebileceğiniz gibi aynı zamanda bu API'ları load balancer veya container orchestratora verip onların bu bilgileri kullanarak trafik yönlendirmesi veya instanceları restart ...
Devamı →