• Buradasın

    CQRS ve Mediator Pattern Eğitim Videosu

    youtube.com/watch?v=GDKy2xZsZhs

    Yapay zekadan makale özeti

    • Bu video, bir eğitmen tarafından sunulan yazılım geliştirme eğitim içeriğidir. Eğitmen, CQRS (Command Query Responsibility Segregation) ve Mediator pattern konularını detaylı şekilde anlatmaktadır.
    • Video, CQRS'in temel kavramlarını açıklayarak başlıyor ve command ile query arasındaki farkları açıklıyor. Ardından Mediator pattern tanıtılarak, bu paternin nasıl kullanılacağı adım adım gösteriliyor. Eğitmen, Net Core web uygulaması üzerinde "GetProductById", "GetAllProducts" ve "CreateProduct" işlemlerini örnek olarak kullanarak, model oluşturma, query ve handler sınıfları yazma, controller'da API istekleri işleme ve dependency injection yapılandırması gibi konuları kod örnekleriyle anlatıyor.
    • Videoda ayrıca Postman aracılığıyla istek gönderme ve breakpoint kullanarak test etme gibi pratik uygulamalar da gösterilmektedir. Eğitmen, bir sonraki videoda Onion Architecture ile bu pattern'in nasıl kullanılacağını anlatacağını belirtmektedir.
    00:01CQRS ve Mediator Pattern Tanıtımı
    • Önceki videoda On in Architecture'ın bir demosu yapılmış ve CQRS'de mediator pattern kullanarak bir örnek yapılması gerektiği belirtilmişti.
    • Bu videoda CQRS'in giriş seviyesinde anlatılacağı ve MediatR adlı bir araç kullanılarak mediator pattern'in nasıl uygulanacağı gösterilecektir.
    00:44CQRS Nedir?
    • CQRS'in temel amacı sistem üzerindeki isteklerin durumlarının kontrolüdür.
    • Sistem üzerinde oluşan istekler ikiye ayrılır: veri üzerinde değişiklik yapan "command" ve veri üzerinde değişiklik yapmadan sadece veriyi okuyan "query" olarak.
    • Command'ler veri üzerinde değişiklik yaparken, query'ler sadece veriyi okuyarak dış dünyaya servis eder.
    01:43CQRS'in Çalışma Prensibi
    • Query'ler presentation katmanından restore (read) storage'a gider ve veri okunup presentation katmanına servis edilir.
    • Command'ler ise veri üzerinde değişiklik yapar ve write storage'ı besler.
    • İki farklı storage kullanmak zorunlu değildir, aynı veritabanı kullanılabilir, ancak CQRS'in amacı write ve read işlemlerini birbirinden ayırmaktır.
    03:07CQRS'in Avantajları
    • CQRS, write ve read işlemlerini birbirinden ayırmak ve veritabanlarının yükünü birbirinden ayırmak için kullanılır.
    • Örneğin, bir ürün satışı sitesinde ana sayfada çok fazla listeleme yapılırsa (read) ve sadece az sayıda sipariş alınırsa (write), yük dengelenir.
    • İki veritabanı kullanıldığında senkronizasyon işlemleri için projection pattern kullanılır.
    07:17Mediator Pattern
    • Mediator pattern, modellerin birbirleriyle doğrudan konuşamamasını ve hepsinin mediator aracılığıyla iletişim kurmasını sağlar.
    • Mediator, havalimanındaki kulelere benzer şekilde, uçakların birbirleriyle değil, kule aracılığıyla iletişim kurması gibi çalışır.
    • MediatR kütüphanesi kullanılarak mediator pattern uygulanabilir.
    08:21Mediator Örneği Oluşturma
    • MediatR örneği için yeni bir .NET Core Web API projesi oluşturulur.
    • MediatR ve dependency injection kütüphanesi projeye eklenir.
    • Query ve Command için ayrı klasörler oluşturulur ve GetProductByQuery gibi query örnekleri yazılır.
    11:05Veritabanı Entiti ve Model Oluşturma
    • Veritabanından alınan bir product entity düşünülüyor, bu entity'de build id, name ve integer bir quantity bulunmaktadır.
    • Temiz bir veritabanı örneği olarak düşünülen bu entity'den get product by id query oluşturularak veritabanından veri alınacaktır.
    • Model için bir klasör oluşturulup, get product by id view model adında sadece guild id ve name bilgisini tutan bir model oluşturulmuştur.
    12:10Query ve Handler Oluşturma
    • Query için bir interface oluşturulmuş ve bu interface'in response olarak ne döneceğini belirtmesi gerekmektedir.
    • Get product by id query handler adında bir class oluşturulmuş ve bu class mediator altında IQueryHandler interface'den türemek zorundadır.
    • Query handler içerisinde handle isminde bir metod bulunmakta ve bu metod çalıştığında query tetiklenmiş demektir.
    15:59Controller ve Mediator Kullanımı
    • Test etmek için bir product API controller eklenmiştir ve burada mediator dependency injection ile alınıyor.
    • Controller'da GET isteği için bir metot oluşturulmuş ve burada mediator.send metodu kullanılarak query gönderilmiştir.
    • Mediator, gönderilen query'nin ilgili handler'ını bulup handle metodunu çağırır ve handler'dan gelen veriyi dışarıya döndürür.
    18:28Tüm Ürünleri Alma İşlemi
    • Tüm ürünleri alma işlemi için get all product query oluşturulmuş ve bu query liste halinde product view model dönecektir.
    • Get all product query handler'ı oluşturulmuş ve bu handler'da liste halinde veri döndürmektedir.
    • Controller'da get all product için ayrı bir metot oluşturulmuş ve burada get all product query gönderilerek tüm ürünler alınmaktadır.
    22:03Mediator Pattern Kullanımı
    • Mediator pattern ile "type of start-up" komutu kullanılarak start-up ile başlayan projelerin içindeki tüm SMD'ler yüklenir.
    • Query, Aquos klasından ve Irique Handler'dan çağrılır, Mediator farklı class'ların altındaki class'ları tarayarak ayrı sender ve response türemiş komutları bulabilir.
    • Create product command adında bir komut oluşturulur ve dışarıdan name, quantity ve value parametreleri istenir.
    23:19Komut ve İstek İşlemleri
    • Create product command sınıfı ayrıdan türetilir ve response istenir, request olarak belirtilir.
    • Repository aracılığıyla veri veritabanına gönderilir veya event bass kullanılıyorsa direkt event basa gönderilir.
    • Create isteği gönderildiğinde geriye bir GUID döndürülür, veritabanına gönderilen verinin ID'si gibi.
    24:39Controller ve Debug İşlemleri
    • Controller altında post metodu oluşturulur ve HTTP post parametre olarak create product command alır.
    • Dışarıdan alınan komut mediator'a gönderilir ve handle metodu çalışarak GUID generate eder.
    • Uygulama debug edilir ve get all product çağrıldığında query ve handler otomatik olarak çalışarak ilgili veriler döndürülür.
    27:33Postman ile Test İşlemleri
    • Postman aracılığıyla post isteği gönderilir ve JSON formatında name, quantity ve value değerleri gönderilir.
    • Command isteği gönderildiğinde dışarıdan data alınmamalıdır, GUID istisna durumudur.
    • Post işleminde rastgele bir ID döndürülür ve her seferinde yeni bir ID gelir.
    28:56Video Kapanışı
    • Mediator patterni bu şekilde kullanılır, commandler ve queryler birbirinden ayrılmış durumdadır.
    • Bir sonraki videoda onion architecture'da kaldığı yerden devam edilecek ve bu patern onion architecture ile test edilecektir.
    • İzleyicilerden kanala abone olmaları, videoyu beğenmeleri ve soruları yorum yapmaları isteniyor.

    Yanıtı değerlendir

  • Yazeka sinir ağı makaleleri veya videoları özetliyor