c# yazıları.

c# konusunda yayımlanan teknik inceleme, uygulama notu ve rehberler.
Gelecek yazılar için buradan fikir edinebilirsin.

Aradığın notu bul.

Başlık, özet ve yazı içeriğinde tek yerden arayın.

Tüm konular

#c# yazıları

8 yazı
C#’ta using var: Küçük Bir Değişiklik, Farklı Bir Yaşam Döngüsü
• 6 dk okuma • #c#

C#’ta using var: Küçük Bir Değişiklik, Farklı Bir Yaşam Döngüsü

C#’ta using var kullanırken asıl dikkat etmemiz gereken konulardan biri, nesnenin ne zaman dispose edileceği. Bir kodu if bloğuna taşımak küçük bir düzenleme gibi görünse de nesnenin yaşam süresini beklenmedik şekilde değiştirebiliyor. Bu yazıda OpenTelemetry ile çalışırken karşıma çıkan bir örnekten yola çıkarak TracerProvider yapısını, IDisposable kullanımını ve scope yönetimini anlattım. Ayrıca benzer hataların önüne geçmek için tercih ettiğim kod düzenini örneklerle gösterdim.

Singleton, Scoped, Transient: .NET'te Hangisini Ne Zaman Kullanmalıyız?
• 15 dk okuma • #.net

Singleton, Scoped, Transient: .NET'te Hangisini Ne Zaman Kullanmalıyız?

Singleton, Scoped ve Transient, .NET Dependency Injection sisteminin en temel konularından biri olsa da gerçek projelerde aralarındaki farkı doğru uygulamak her zaman kolay değil. Bir servisin ne zaman oluşturulduğunu, ne kadar süre yaşadığını ve hangi nesnelerle aynı örneği paylaştığını anlamak, doğru yaşam döngüsünü seçmenin temelini oluşturuyor. Bu yazıda üç yaklaşımı çalışan kod örnekleri, nesne kimlikleri ve gerçek proje senaryolarıyla karşılaştırdım. Ayrıca DbContext, BackgroundService, IDisposable ve thread safety üzerinden yanlış servis kaydının nasıl sorunlara yol açabileceğini inceledim.

IHostedService mi, BackgroundService mi, Hangfire mı? .NET'te Arka Plan İşleri
• 10 dk okuma • #.net

IHostedService mi, BackgroundService mi, Hangfire mı? .NET'te Arka Plan İşleri

Bir .NET uygulamasında e-posta göndermekten toplu veri işlemeye kadar pek çok işi kullanıcı isteğinden bağımsız yürütebiliriz. Peki bunun için IHostedService mi, BackgroundService mi, yoksa Hangfire mı kullanmalıyız? Bu yazıda arka plan işleri ile zamanlanmış görevler arasındaki ayrımı açıklıyor, bu üç yaklaşımın nasıl çalıştığını kod örnekleriyle inceliyorum. Son olarak hangi senaryoda hangisini tercih edebileceğimizi ve uygulamada dikkat etmemiz gereken noktaları ele alıyorum.

En İyi Kod Bazen Sildiğiniz Koddur
• 10 dk okuma • #ai

En İyi Kod Bazen Sildiğiniz Koddur

Yazdığımız her satırın yıllarca yaşamaya devam etmesi gerekmiyor. Özellikle yapay zeka destekli geliştirme araçları sayesinde, yalnızca bir problemi anlamak veya tek seferlik bir işi tamamlamak için küçük araçlar üretmek artık çok daha ucuz. Ben bu noktada kodu yalnızca ürünün bir parçası olarak değil, bazen geçici bir mühendislik aracı olarak da düşünmek gerektiğini düşünüyorum. Asıl mesele, hangi parçanın kalıcı olacağını ve hangisinin görevini tamamladıktan sonra silinmesi gerektiğini doğru ayırabilmek.

Rider Log Mesajlarının Sonundaki Noktaya Neden Takılıyor?
• 6 dk okuma • #c#

Rider Log Mesajlarının Sonundaki Noktaya Neden Takılıyor?

Rider'da log yazarken karşıma çıkan küçük bir uyarı, yıllardır pek sorgulamadan yaptığım bir şeyi yeniden düşündürdü. Bir kayıt mesajının sonunda nokta bulunması neden sorun olarak görülüyor ki? Okuyan için bu çok farkeden bir nokta değil sonuçta, değil mi? Bu yazıda uyarının arkasındaki yaklaşımı, yapılandırılmış loglamayla ilişkisini ve günlük geliştirme sürecinde işimize yarayabilecek bazı detayları kod örnekleriyle ele alıyorum.

MediatR’a Gerçekten İhtiyacımız Var mı? .NET’te Kendi Mini CQRS Pipeline’ımızı Yazmasak Mı?
• 10 dk okuma • #.net

MediatR’a Gerçekten İhtiyacımız Var mı? .NET’te Kendi Mini CQRS Pipeline’ımızı Yazmasak Mı?

CQRS kullanırken çoğu .NET projesinde ilk tercih MediatR oluyor. Fakat CQRS ile MediatR aynı şey değil ve özellikle küçük projelerde ihtiyaç duyduğumuz yapı düşündüğümüzden çok daha basit olabilir. Bu yazıda kendi mini command/query dispatcher yapımızı kurarak MediatR’ın hangi problemi çözdüğünü, pipeline yaklaşımının neden önemli olduğunu ve hazır bir kütüphane ile kendi abstraction’ımız arasında nasıl karar verebileceğimizi ele alıyorum.

AI Agent Geliştirmek Kolay ama Production'a Çıkarmak Zor
• 18 dk okuma • #ai

AI Agent Geliştirmek Kolay ama Production'a Çıkarmak Zor

Son dönemde herkes AI Agent geliştiriyor. Planner, Tool Calling, MCP, Multi-Agent... Demo ortamında her şey kusursuz görünüyor. Ama iş production'a geldiğinde işler değişiyor. Gerçek sorun modelin cevap vermemesi değil; aynı soruya farklı kararlar vermesi, tool'ların yarım sonuç döndürmesi, agent'ın sonsuz döngüye girmesi veya tek bir API'nin tüm akışı kilitlemesi. Bu yazıda, production'da en sık karşılaşılan dört AI Agent problemini .NET örnekleriyle ele alacağım. Ayrıca bu problemlerin neden oluştuğunu ve sistemi daha güvenilir hale getirmek için uygulayabileceğimiz basit ama etkili tasarım yaklaşımlarını paylaşacağım.

JWT Token'ın Süresi (Expire) Nasıl Kontrol Ediliyor?
• 2 dk okuma • #ASP.NET Core

JWT Token'ın Süresi (Expire) Nasıl Kontrol Ediliyor?

ASP.NET Core'da JWT Authentication kullanırken en çok karşılaşılan ancak çoğu zaman gözden kaçan iki ayar olan ValidateLifetime ve ClockSkew'i inceliyoruz. JWT'nin yaşam döngüsünü, exp claim'inin nasıl çalıştığını ve Authentication Middleware'in istek Controller'a ulaşmadan önce token doğrulamasını nasıl gerçekleştirdiğini adım adım anlatıyoruz.