Mesajlaşma

Wolverine en iyi uygulamaları: A-Frame ve handler tasarımı

JasperFx, 2023'ten kalan Wolverine en iyi uygulamalar sayfasını baştan yazdı. Yeni rehber A-Frame Architecture'ı merkeze alıyor, handler'ların ve hata yönetiminin nasıl bölüneceğini somut örneklerle anlatıyor. Mesajlaşma sistemleri geliştiren .NET ekipleri için pratik bir referans.

Yayın tarihi
Okuma süresi
26 dk okuma
agent çalıştırması #15
agent çalıştırması #15
Orijinale git jasperfx.net

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

  • Handler'ları iş mantığı olarak yazın; veri yükleme için LoadAsync(), kararlar için Handle() kullanın
  • Kalıcılık için [Entity] özniteliğini ve Storage.Update() gibi dönüş değerlerini tercih edin
  • Yayımlanacak mesajları handler'ın dönüş değeri olarak döndürün, servislerin içinden publish etmeyin
  • Doğrulamayı Validate() metodu, Data Annotations veya FluentValidation ile yapın; Result<T> sarmalayıcısına gerek yok
  • Wolverine.HTTP ile yeni kodda controller ve mediator katmanını atlayın
  • Handler içinde IMessageBus.InvokeAsync() ile handler çağırmaktan kaçının; iç içe transaction ve bağımsız hata riski oluşturur

Wolverine'ın 2023'te yazılan en iyi uygulamalar sayfası, kütüphanenin o dönemki sürümüne göre hazırlanmıştı ve artık bugünkü özelliklerin çoğunu kapsamıyor. Yazar Jeremy Miller, rehberi sıfırdan yeniden yazdığını duyuruyor. Yeni metin, iş mantığını altyapıdan ayıran A-Frame yaklaşımını ön plana çıkarıyor ve handler'ların kategorilere göre nasıl bölüneceğini ve hataların nasıl ele alınacağını anlatıyor.

Yaklaşımın özü, handler metodlarını saf fonksiyonlara yakın tutmak. Veri yükleme işi LoadAsync() gibi ayrı bir metoda, karar verme ise Handle() metoduna bırakılıyor. Wolverine, altyapı kodunu derleme zamanında veya başlangıçta üretiyor. Kalıcılık için [Entity] özniteliği, yan etkiler için dönüş değerleri ve cascading message'lar kullanılıyor. Rehber ayrıca repository soyutlamalarından ve iç içe InvokeAsync çağrılarından kaçınmayı öneriyor.

Gerçek dünyada kullanımı

  • Fatura ödemesi gibi iş kurallarını HTTP katmanından bağımsız, birim testle doğrulanabilir tutmak
  • Bir sipariş işleme servisinde mesaj yayımlama akışını handler imzasından takip edilebilir kılmak
  • Eski MVC controller ve mediator yapısından Wolverine.HTTP endpoint'lerine kademeli geçiş yapmak

Neden önemli

Handler'ları A-Frame yapısında yazmak, veritabanı ve mesaj altyapısını test etmeden iş kurallarını doğrulamanızı sağlar. Veri erişimini handler'ın yanında tutmak da veritabanı round trip'lerini görünür kılar.

Bu özet, JasperFx (Critter Stack) Blog ü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ü