.Net Core ve MediatR ile CQRS Pattern

CQRS, bir uygulamanın yazma işlemlerini (komutları) ve okuma işlemlerini (sorguları) iki farklı modelde ele almayı öneren bir tasarım prensibidir. Bu, uygulamanın karmaşıklığını azaltabilir ve performansı artırabilir.

Avantajları:

  • Performans Artışı: Yazma ve okuma işlemleri için optimize edilmiş modeller kullanılarak performans artırılabilir.
  • Esneklik: Yazma ve okuma işlemleri için farklı modeller kullanılarak bağımsızlık ve esneklik sağlanabilir.

Ölçeklenebilirlik: Yazma ve okuma işlemleri ayrı modellerde ele alındığı için, her iki tarafı da bağımsız olarak ölçeklendirebilirsiniz.

NET Core Mikroservis Mimarisinde CQRS Yapılanması

Mikroservis mimarisi, karmaşık uygulamaları yönetilebilir parçalara bölen bir yaklaşım sunarken, CQRS (Command Query Responsibility Segregation) ise uygulamanızın yazma (command) ve okuma (query) operasyonlarını ayırmayı öneren bir tasarım prensibidir.

NET Core Mikroservisinde CQRS Nasıl Kurulur?

1: CQRS Paketlerini Ekleyin

Projenize CQRS yapısını eklemek için gerekli olan paketleri yükleyin (dotnet add package MediatR)

2: Komut ve Sorgu Modellerini Oluşturun

Yazma (komut) ve okuma (sorgu) işlemleri için ayrı modeller oluşturun:

// Komut Modeli
public class CreateProductCommand : IRequest<int>
{
    // Komut parametreleri
    public string Name { get; set; }
    public decimal Price { get; set; }
}

// Sorgu Modeli
public class GetProductQuery : IRequest<Product>
{
    // Sorgu parametreleri
    public int ProductId { get; set; }
}

3: Komut ve Sorgu İşleyicilerini Oluşturun

Komut ve sorgu işlemlerini ele alacak işleyiciler oluşturun:

public class CreateProductCommandHandler : IRequestHandler<CreateProductCommand, int>
{
    // Komut işleyici kodları
    public async Task<int> Handle(CreateProductCommand request, CancellationToken cancellationToken)
    {
        // Yeni ürün oluştur ve veritabanına ekle
        // ...
        return newProductId;
    }
}

public class GetProductQueryHandler : IRequestHandler<GetProductQuery, Product>
{
    // Sorgu işleyici kodları
    public async Task<Product> Handle(GetProductQuery request, CancellationToken cancellationToken)
    {
        // Ürünü veritabanından getir
        // ...
        return product;
    }
}

Adım 4: Servis Bağlamalarını Ekleyin

Mikroservisinizde CQRS yapısını kullanabilmek için servis bağlamalarını ekleyin:

public class ProductService
{
    private readonly IMediator _mediator;

    public ProductService(IMediator mediator)
    {
        _mediator = mediator;
    }

    public async Task<int> CreateProduct(string name, decimal price)
    {
        var command = new CreateProductCommand { Name = name, Price = price };
        return await _mediator.Send(command);
    }

    public async Task<Product> GetProduct(int productId)
    {
        var query = new GetProductQuery { ProductId = productId };
        return await _mediator.Send(query);
    }
}

Bu örnekte, ProductService sınıfı, CQRS yapısını kullanarak ürün oluşturma ve ürün getirme işlemlerini gerçekleştiriyor.

Sonuç

Bu makalemde, .NET Core mikroservis mimarisinde CQRS (Command Query Responsibility Segregation) yapısını nasıl kullanabileceğinizi adım adım gördük. CQRS, uygulamanızın yazma ve okuma işlemlerini daha etkili bir şekilde ele almanıza yardımcı olabilir ve mikroservis mimarinizdeki performans ve esneklik ihtiyaçlarını karşılamak için güçlü bir araçtır.

Makaleyi okuduktan sonra, projenizin ihtiyaçlarına göre CQRS yapısını özelleştirebilir ve kullanabilirsiniz. İyi kodlamalar! ??

You may also like...

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir