Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
ASP.NET Core Web API'de Pagination, Filtering ve Sorting: Büyük Listeleri Güvenle Döndürmek
Query parametrelerini tek class'ta topluyor, IQueryable ile filtre, toplam sayı, Skip/Take ve beyaz listeli dinamik sıralamayı veritabanında çalıştırıyoruz. Metadata body mi header mı, offset mi keyset mi, SQLite decimal tuzağı.
ASP.NET Core Web API'de Filter'lar: Action Filter, Result Filter ve ServiceFilter
MVC'nin filter pipeline'ını gerçek loglarla söküyoruz: global, controller ve action filter'ların sırası, DI kullanan async filter için ServiceFilter, TypeFilter ile kısa devre, result filter ve middleware ile filter arasındaki seçim.
ASP.NET Core'da Global Hata Yönetimi: Exception Middleware ve ProblemDetails
.NET 6'da yakalanmayan exception'ın gerçek yanıtından başlayıp UseExceptionHandler ve error controller'a, oradan domain exception'larını 404/409/500 ProblemDetails yanıtlarına çeviren kendi middleware'imize geçiyoruz.
ASP.NET Core'da Async/Await ve CancellationToken: İptali Veritabanına Kadar Taşımak
await sırasında thread'in havuza döndüğünü loglarla görüyor, bloke eden kodun thread pool starvation'a etkisini ölçüyoruz. CancellationToken'ı action'dan EF Core'a taşıyor, .Result ve async void tuzaklarını konuşuyoruz.
ASP.NET Core Web API'de Katmanlı Yapı: Service Katmanı ve Repository Tartışması
Şişman controller'ı inceltip işi IProductService'e devrediyoruz. Expression ile tekrar kullanılan projection, scoped kayıt, generic repository'nin EF Core üstündeki sorunları ve interface'lerin test edilebilirliğe katkısı.
ASP.NET Core Web API'de DTO ve Mapping: Elle Mapping, AutoMapper Lisansı ve Mapperly
Entity'yi doğrudan dönmenin bedelini gerçek hatalarla görüyoruz: overposting ve döngüsel referans. Request/response DTO'ları, elle mapping ve projection, AutoMapper'ın 2025 lisans değişikliği ve CVE'si, Mapperly'ye kısa bakış.
ASP.NET Core Web API'de EF Core ve SQLite: DbContext, İlk Migration ve CRUD
ASP.NET Core Web API'ye EF Core ve SQLite ile veri katmanı ekliyoruz: EF Core 6 ve 10 paket sürümleri, AppDbContext, connection string, DbContext'in neden scoped olduğu, ilk migration, async CRUD ve konsoldaki SQL.
ASP.NET Core'da Logging: ILogger, Log Seviyeleri, Structured Logging ve Serilog
ASP.NET Core'da ILogger<T> ile log yazıyoruz: category, log seviyeleri, appsettings ve environment variable ile filtreler, message template ile structured logging, scope'lar, LoggerMessage source generator ve net6.0 destekleyen Serilog sürümü.
ASP.NET Core'da Configuration ve Options Pattern: Provider Sırası, User Secrets ve Validation
ASP.NET Core configuration provider'larının sırasını gerçek çıktıyla görüyoruz: appsettings, environment variable, command line, user secrets. Options pattern, IOptions/IOptionsSnapshot/IOptionsMonitor farkı ve ValidateOnStart ile doğrulama.
ASP.NET Core'da Dependency Injection: Lifetime'lar ve Captive Dependency Tuzağı
ASP.NET Core'da dependency injection'ı gerçek çıktılarla inceliyoruz: constructor injection, singleton/scoped/transient lifetime'ları, captive dependency, scope validation, IServiceProvider ve .NET 6'da [FromServices] detayı.
.NET 6 ile ASP.NET Core Minimal API: MapGet, MapPost ve Controller Karşılaştırması
.NET 6 minimal API'leriyle MapGet, MapPost, MapPut ve MapDelete, parametre binding kuralları, Results yardımcıları, eksik validation'ı elle tamamlamak, endpoint'leri gruplamak ve controller ile ne zaman hangisinin seçileceği.
ASP.NET Core'da Model Validation: Data Annotations ve FluentValidation
Data Annotations, ModelState ve otomatik 400, ValidationProblemDetails'i özelleştirmek, custom attribute, IValidatableObject ve FluentValidation 11.x ile model validation; Türkçe sunucularda Range ve mesaj dili tuzakları dahil.