Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
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 registration, 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.
ASP.NET Core'da Model Binding: FromRoute, FromQuery, FromBody ve FromHeader
İstekteki verinin route, query string, body, header, form ve service kaynaklarından action parametrelerine nasıl bind edildiğini, [ApiController]'ın tahmin kurallarını, 415 ve 400 hatalarının sebeplerini gerçek yanıtlarla anlatıyoruz.
ASP.NET Core'da Status Code ve Response: Ok, CreatedAtAction ve ProblemDetails
ControllerBase yardımcılarıyla doğru status code'u dönmeyi, null dönünce gelen sürpriz 204'ü, CreatedAtAction ve Location header'ını, 400/404/409 ayrımını, ProblemDetails'i ve content negotiation'ı gerçek yanıtlarla anlatıyoruz.
ASP.NET Core'da Controller ve Action: [ApiController] ile CRUD İskeleti
ControllerBase ve Controller farkını, [ApiController] attribute'unun getirdiği dört davranışı, IActionResult ile ActionResult<T> arasındaki seçimi ve bellekte duran bir listeyle çalışan CRUD iskeletini gerçek curl çıktılarıyla anlatıyoruz.