Veri

Event Sourcing'de AggregateRoot yerine Decider deseni tercih edilmeli

Jeremy D. Miller, Event Sourcing yazan .NET geliştiricilerine AggregateRoot yerine Decider desenini öneriyor. Yazıda, Marten ve Wolverine ile saf fonksiyonlara dayanan komut işleyicilerinin neden daha kolay anlaşıldığı, test edildiği ve hata ayıklandığı anlatılıyor.

Yayın tarihi
Okuma süresi
4 dk okuma
agent çalıştırması #16
agent çalıştırması #16
Orijinale git jeremydmiller.com

Bu haberi bildir

Özette bir hata mı var, ya da bu içeriğin sahibi misin? Mesajın doğrudan bana e-posta olarak gelir.

Mesaj türü

Kilit noktalar

  • Karar mantığını saf bir fonksiyonda tut: mevcut durum ve komuta göre yeni olayları döndürsün, altyapıya dokunmasın.
  • Marten ile birlikte Wolverine kullanıldığında altyapı, komut işleyicisi ile domain fonksiyonu arasında aracılık eder.
  • Decider fonksiyonları birim testi için doğrudan çağrılabilir, veritabanı veya mock gerekmez.
  • Projeksiyonlardan gelen durum nesnelerini uygulama kodunda değiştirme; Marten'in optimizasyonları buna dayanır.
  • Evolve (durum oluşturma) mantığını decide mantığından ayırmak, projeksiyon değişikliklerini kolaylaştırır.
  • Yeni Event Sourcing işlerinde AggregateRoot yerine Decider'ı varsayılan seçenek olarak düşün.

Yazar, yakında çıkacak bir CQRS ve Event Sourcing kitabının örnek kodlarını incelerken, örneklerin eski AggregateRoot desenine dayandığını fark etmiş. Miller, Event Sourcing kullanan ekiplere domain mantığını Decider deseniyle yazmalarını ve AggregateRoot'tan kaçınmalarını öneriyor. Decider'da bir saf fonksiyon, mevcut durum ve gelen komuta göre hangi olayların ekleneceğine karar verir ve altyapı kodu bu fonksiyonun dışında kalır.

Miller'a göre Decider; komut ile üretilen olaylar arasındaki ilişkiyi açıkça gösterdiği, birim testini kolaylaştırdığı ve sorun giderme sürecini sadeleştirdiği için tercih edilmeli. Marten'in projeksiyonlarının uygulama kodu tarafından değiştirilmemesi varsayımıyla performans iyileştirmeleri yaptığını da ekliyor. Yazı, ayrıntılı kod örnekleri için orijinal makaleye bakılmasını öneriyor.

Gerçek dünyada kullanımı

  • Siparişlerin durum geçişlerini olaylarla kaydeden bir e-ticaret sisteminde, sipariş komutlarını saf fonksiyonlarla doğrulamak.
  • Marten üzerinde Event Sourcing kullanan bir olay yönetimi veya olay raporlama uygulamasında komut işleyicilerini Wolverine ile bağlamak.
  • Eski AggregateRoot tabanlı bir Event Sourcing kodunu kademeli olarak Decider desenine taşımak.

Neden önemli

Event Sourcing kodunu Decider ile yazmak, komutlarla olaylar arasındaki ilişkiyi görünür kılar ve birim testlerini basitleştirir. Mevcut AggregateRoot kullanan projeler için bu yazı, yeni işlerde hangi desenin tercih edilmesi gerektiğini net biçimde gösteriyor.

Bu özet, Jeremy D. Miller (The Shade Tree Developer) üzerindeki orijinal yazıdan agent tarafından üretildi. Yazının tamamı ve tüm hakları ilgili yazara/yayıncıya aittir. Orijinal yazıya git

Benzer haberler

Geri bildirim

Bir hata mı buldun, bir fikrin mi var? Yazdığın mesaj doğrudan bana e-posta olarak gelir.

Mesaj türü