.NET Core (C#) İleri Seviye Mimari & Tasarım

CQRS Pattern & MediatR Pipeline Behaviors

Okuma (Query) ve Yazma (Command) operasyonlarını iki ayrı dünyaya ayırma mimarisidir.

5 Yaşındaki Çocuğa Anlatır Gibi (Analoji)

Bir restoranda siparişi mutfağa ileten garson (Command) ile menü panosundaki yemek listesini okuyan ekranın (Query) tamamen ayrılmasıdır.

Teknik & Mimari Tanım

Command Query Responsibility Segregation (CQRS), veri değiştiren işlemleri (Create, Update, Delete) veri okuyan işlemlerden (Get, List) ayırır. MediatR kütüphanesi In-Process haberleşmeyi sağlar. Pipeline Behaviors ile cross-cutting (Validation, Logging, Performance) kurallar AOP mantığında araya girer.

Mülakatta Ne Demelisin? (Kurtarıcı Altın Cevap)

“CQRS, veri okuma ve yazma modellerini ayırarak her birini bağımsız optimize etmeyi sağlar (örneğin yazma için Entity Framework, okuma için Dapper). MediatR Pipeline Behavior'lar ise her isteğin öncesinde FluentValidation veya Transaction yönetimini merkezi bir hatta (pipe) koşturur.”

.NET Core (C#) Örnek Uygulaması
public record CreateProductCommand(string Name, decimal Price) : IRequest<int>;

public class CreateProductHandler : IRequestHandler<CreateProductCommand, int>
{
    public async Task<int> Handle(CreateProductCommand request, CancellationToken ct)
    {
        // Sadece yazma işi
        return await _repo.SaveAsync(request);
    }
}
Mülakat Tuzağı & Adayların En Sık Yaptığı Hata:

Basit bir CRUD projesinde aşırı mühendislik (over-engineering) yaparak onlarca boş handler ve command dosyası üretmek.