// Writing
Long-form notes on .NET, architecture, and side projects.
[Authorize(Roles = "Admin")] yeterli mi? Karmaşık yetkilendirme senaryolarında role-based mi, policy-based mi kullanmalısınız? Custom requirement'lar, handler'lar, resource-based authorization ve production pratikleri — kapsamlı rehber.
JWT tek başına yeterli değildir. Access token kısa ömürlü olmalı, refresh token ile yenilenmelidir. .NET 8'de güvenli JWT üretimi, refresh token rotasyonu, token iptal mekanizması ve production pratikleri — kapsamlı rehber.
Console'a düz metin yazmak log değildir. Structured logging nedir, neden önemlidir? Serilog ile .NET 8 entegrasyonu, Seq ile merkezi log yönetimi, enricher'lar, sink'ler ve production pratikleri — kapsamlı rehber.
.NET 8 ile artık harici paket olmadan rate limiting uygulanabiliyor. Fixed window, sliding window, token bucket ve concurrency limiter — algoritmalar, kullanım senaryoları ve production pratikleri ile kapsamlı rehber.
Email gönderme, rapor oluşturma, veri senkronizasyonu — bu işler HTTP isteğini bloklamaz. Hangfire ile fire-and-forget, delayed, recurring ve batch job'ları .NET 8'de nasıl yönetirsiniz? Retry, monitoring ve production pratikleri.
.NET 8 request pipeline'ı nasıl çalışır? Özel middleware nasıl yazılır, hangi sırayla eklenir, ne zaman kullanılır? Loglama, hata yönetimi, rate limiting ve tenant tespiti — gerçek senaryolarla middleware geliştirme rehberi.
Production veritabanında şema değişikliği yapmak riskli bir operasyondur. EF Core migration'larını güvenli uygulamanın yolları, zero-downtime deployment, büyük tablolarda kolon ekleme, veri migrasyonu ve geri alma stratejileri — gerçek deneyimlere dayanan rehber.
Event-driven architecture nedir, neden gereklidir? RabbitMQ'yu .NET 8 projesine nasıl entegre edersiniz? Exchange, queue, binding, consumer ve hata yönetimi — production deneyimlerine dayanan kapsamlı rehber.
Direkt mikroservise atlamadan önce neden modüler monolith mantıklı? Büyüyen bir .NET uygulamasını nasıl modüllere ayırırsınız, sınırları nasıl çizersiniz ve geçişi nasıl yönetirsiniz — adım adım pratik rehber.
Veriyi silmek göründüğü kadar basit değildir. Soft delete mi, hard delete mi — veri arşivleme, audit log, performans etkileri ve .NET'te doğru implementasyon. Production deneyimlerine dayanan pratik rehber.
GitHub Actions ile .NET 8 projenizi otomatik olarak IIS'e nasıl deploy edersiniz? Build, test, publish ve deployment adımlarını — gerçek bir pipeline kurulumu üzerinden adım adım anlatan pratik rehber.
Redis ve in-memory cache ile veritabanı yükünü nasıl azaltırsınız? Hangi veriler cache'lenir, cache invalidation nasıl yönetilir, .NET 8'de IDistributedCache nasıl kullanılır — production deneyimlerine dayanan pratik rehber.
MediatR ile basit ve sürdürülebilir CQRS uygulaması. Ne zaman işe yarar, ne zaman overkill olur — karmaşıklığı artırmadan komut ve sorgu sorumluluklarını ayırmanın pratik rehberi.
appsettings.json'a connection string yazmak en yaygın güvenlik hatasıdır. Environment variables, Azure Key Vault, Secret Manager ve şifreli konfigürasyon — .NET projelerinde hassas verileri doğru yönetmenin pratik rehberi.
Salt performans karşılaştırması değil, gerçek karar kriterleri: proje büyüklüğü, takım yapısı, sorgu karmaşıklığı. EF Core mu, Dapper mi — hangisini ne zaman seçmelisiniz?
Gerçek güvenlik denetimi bulgularına dayanan pratik bir IIS sertleştirme rehberi. HTTP header'ları, TLS yapılandırması, istek filtreleme ve sunucu güvenliği — production .NET uygulama sunucunuzu kilitlemek için ihtiyacınız olan her şey.
Yavaş sorgular, eksik indexler ve execution plan sürprizleri — gerçek production deneyimlerine dayanan pratik bir MSSQL index rehberi. Clustered, non-clustered, composite ve covering index örnekleriyle.
.NET 8 Web API projesinde Clean Architecture nasıl uygulanır? Katman ayrımı, bağımlılık yönü ve gerçek proje yapısını — sadece teori değil, elle tutulur örneklerle — bu yazıda bulacaksınız.