İlkay İlknur

Hoşgeldiniz

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

.NET Uygulamalarında Trimming Kontrolü

Mayıs 10, 2021
Bundan önceki yazılarımdan birinde uygulamalarımızı yayınlarken kullanabileceğimiz opsiyonlardan bahsetmiştim. O yazıda .NET'in kurulu olmadığı yerlerde uygulamayı .NET runtime'ı ile birlikte deploy etme opsiyonunun deployment paketlerini ne kadar büyüttüğünü de görmüştük. Bu sorunun çözümü olarak uygulamanızı publish ederken sadece uygulamanın kullandığı ve uygulamanın çalışması için gerekli olan...
Devamı →

Params Kullanımında Oluşabilecek Allocationlar

Nisan 18, 2021
Bir önceki yazıda foreach döngülerinde oluşabilecek olan allocationlardan bahsetmiştik. Bu yazıda ise params kullanımını incelleyeceğiz ve oluşabilecek allocationlara bakacağız. Değişen sayıda parametre kabul eden metotlarda params keywordünü kullanıp, metodu çağıranların parametreleri kolay bir şekilde sırayla geçmesini sağlayabiliyoruz. Örnek yapmamız gerekirse... public void DoWork(params s...
Devamı →

Foreach Döngülerinde Oluşabilecek Allocationlar

Nisan 11, 2021
Herkese Selamlar, Bu yazıda konumuz foreach döngülerinin oluşturabileceği allocationlar. Biraz ilginç bir konu. :) Konuya hemen basitçe giriş yapalım. Bir foreach döngüsü yazdığımızda yazdığımız kod compiler tarafından yaklaşık olarak aşağıdaki gibi dönüştürülür. Foreach Döngüsü List<int> Collection = new List<int>(); foreach (var item in Collection) { }  Çevrilmiş ha...
Devamı →

Source Generatorlar İçin Kod Üretim Opsiyonları

Mart 31, 2021
Blogda daha önce yazdığım yazıda source generatorların ne olduğundan ve nerelerde kullanılabileceğinden bahsetmiştim. Source generatorlardaki en sıkıntılı noktalardan biri aslında kod üretme kısmı. Özellikle yazdığınız source generator karmaşık bir hal aldığında işler biraz karışabiliyor. Bu yazıda source generator implemente ederken kullanabileceğimiz üç farklı kod üretim yöntemini inceleyeceğiz....
Devamı →

C# 8.0 - Default Interface Methods

Mart 23, 2021
Herkese Selamlar, Bu yazıda C# 8.0 ile beraber ile gelen default interface metotları özelliğini inceleyeceğiz. Bu özelliği incelemeden önce varolan interface yapısını da kısaca inceleyip aradaki farkları öyle görmemizde fayda var. Default metotların olmadığı yani C# 7.0 versiyonunda bir interface içerisinde tanımladığımız üyeler her zaman abstract ve public olma özelliğini taşıyordu. Örneğin, ...
Devamı →

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ı →