Temel Kavramlar¶
MediatR Nedir?¶
MediatR, in-process mesajlaşma için basit bir mediator pattern implementasyonudur. Temel özellikleri:
- Request/Response pattern’ı
- Notification pattern’ı
- Pipeline behavior’lar
- Basit ve hafif yapı
MediatR’ın Avantajları¶
- Loose Coupling: Sınıflar arası bağımlılıkları azaltır
- Single Responsibility: Her handler tek bir iş yapar
- Testability: Test edilebilirliği artırır
- Cross-Cutting Concerns: Logging, validation gibi işlemleri merkezi olarak yönetir
CQRS Nedir?¶
CQRS (Command Query Responsibility Segregation), veri okuma (Query) ve yazma (Command) işlemlerini birbirinden ayıran bir pattern’dır.
CQRS’in Avantajları¶
- Ölçeklenebilirlik: Okuma ve yazma işlemleri ayrı ayrı ölçeklendirilebilir
- Optimizasyon: Her işlem için özel optimizasyonlar yapılabilir
- Bakım Kolaylığı: Kod daha organize ve bakımı daha kolay
- Performans: Okuma ve yazma işlemleri için farklı veri modelleri kullanılabilir
MediatR ve CQRS Birlikte Kullanımı¶
MediatR ve CQRS birlikte kullanıldığında:
- Command’lar: Veri değiştirme işlemleri için
- Query’ler: Veri okuma işlemleri için
- Event’ler: Domain event’leri için
- Behavior’lar: Cross-cutting concern’ler için
kullanılır.
Örnek Kullanım¶
// Command örneği
public class CreateProductCommand : IRequest<int>
{
public string Name { get; set; }
public decimal Price { get; set; }
}
// Query örneği
public class GetProductByIdQuery : IRequest<ProductDto>
{
public int Id { get; set; }
}
// Event örneği
public class ProductCreatedEvent : INotification
{
public int ProductId { get; set; }
}
Temel Bileşenler¶
- IRequest
: Command ve Query’ler için temel interface - IRequestHandler
: Command ve Query handler’ları için interface - INotification: Event’ler için interface
- INotificationHandler
: Event handler’ları için interface - IPipelineBehavior
: Pipeline behavior’lar için interface