2011-01-12 21 views
5

Şu anda CQRS çalışıyorum ve bazı kaynak kodları görüyorum (Greg Young's SimpleCQRS ve Mark Nihjof's). Hala komut ve etki alanı olayı ile karıştırıyorum. Etki alanı olay işleyicisinde "veritabanını yazmak" için her zaman etki alanına geçmemiz gerekiyor mu? Komut işleyicisinde (genellikle etki alanı deposu aracılığıyla) etki alanı veritabanını kaydetmek için kodu çağıracağım ve daha sonra etki alanı olay işleyicisinin diğer şeyleri işlemesine izin vermem (yaygın: okuma modelini güncelleme ve e-posta bildirimi gibi diğer hizmetleri yapma gibi) yaygın mıdır? . Teşekkürler.CQRS'de Veritabanını Kaydetmek İçin En İyi Yer (Komut İşleyicisi veya Etki Alanı Olay İşleyicisi)

+0

belki de bu yardımcı olacaktır http://www.udidahan.com/2009/12/09/clarified-cqrs/Bu konuda Udi Dahan'dan gerçekten güzel bir yazı. – roundcrisis

cevap

7

Olayları kaydetme: Bir olay işleyici kullanarak olayları devam ettirmem. Bir komut işleyicisinden bir depoya veya iş birimine yetki vermek, muhtemelen kaynak kullanımı kullanırken en yaygın yaklaşımdır. Yani, evet komutun genelindeki devamlılık (iyi, delege et) ve olay işleyicisinin başka şeyler yapması yaygın.

Depolama durumu: Olay kaynakları kullanılmadığı zaman, insanların olayları durumun yanında veya daha kötüsünde depoladıklarını varsayalım (sürekli olarak bir kalıcılık mekanizması olarak). Yine de, kalıcılık mantığı, komut dosyasının bulunduğu alanda bulunur.

Komutlar amacı yakalar ve sisteme ne yapmaları gerektiğini söyler. Her zaman emri kullanın. Olaylar, sistemde neyin yaşandığını anlatır ve niyeti yakalar. Her zaman geçmiş zaman içinde.

Bu konuyla ilgili yeni biri olarak beni vurursun. CQRS kavramlarını kavramak için yapabileceğiniz en iyi şey, http://cqrsinfo.com ve http://skillsmatter.com (mimari/ddd) malzemelerini izlemektir. Bu konuda blog yazan diğer insanlar (kafamın üstünden): Udi Dahan, Gregory Young, Jonathan Oliver, Rinat Abdullin, Jérémie Chassaing, ...

+0

Açıklamalarınız için teşekkürler, CQRS için gerçekten yeniyim. – user522037

İlgili konular