2010-11-19 19 views
5

Dahili mantığı işledikten sonra, verilerini güncelleştirmek için diğer sistemlere olayları yayınlayan bir web CRUD uygulaması oluşturuyorum.CQRS intent komut olayı

CQRS'yi uygulamanın ilk adımıdeyim ve kullanıcının yalnızca bir 'kaydet' düğmesine sahip olduğum bir Formdaki olası tüm niyetleri için belirli komutlar oluşturmam gerektiği garip geliyor. Bu, gereksinimlerim gereği gerek duyulmayan ancak buna abone olacak olan projelerde ihtiyaç duyulan bir niyeti yakalamak için çok fazla komut (her özellik veya değer nesnesi için) anlamına gelir. SADECE sınırlanmış bağlamın gerektirdiği şeyi yapmanın hayranıyım.

dikkate almak başka şey: Veri değişti belirtmemesine karşılaştırmak için oturumu kullanmak zorunda. Verileri kaydettikten sonra kaydetmek, kullanıcı arayüzünde yanlış verileri gösteren eşzamanlılık durumlarını gizler.

DÜZENLEME: Greg Young bazı ekranlar sadece CRUD vardır ve varsayılan davranış olarak güncelleme yapıyor kötü bir şey yok düşündürmektedir Sadece nerede this thread buldum.

cevap

6

Neden CQRS kullanmak istiyorsunuz? Tüm durumlar için iyi çalışmıyor. Eğer CRUD kullanıyorsanız

Özellikle, daha sonra hiç CQRS çalışırken hiçbir sebep olabilir. Sadece iyi uymuyor. CQRS kullanıcının niyeti UI tarafında açıkça yakalanan ve anlamlı komuta sunucuya aşağı geçirilir tasarım, çok şey (yani daha doğrusu CustomerRelocatedToNewAddress veya CustomerAddressCorrected FieldNameUpdated değil oluyor) yararlanır. Bu, tasarımda Domain-Driven Design metodolojilerinin kullanımını gerektirir).

+1

Ben bu şekilde yapıyorum. CRUD projesi, yüksek trafikli bir web sitesinde doğru verileri göstermek için dahili bir 'yapılandırma aracı' olduğundan olayları yayınlamam gerekiyor. Benim mükemmel çözümüm bu projeyi sadece DDD ile değil, CQRS ile gerçekleştirmek ve kapsamımdaki her gerçek niyet için bir etkinlik yayınlamak olacaktır. Web sitesi binlerce kullanıcıya sahip olacağından CQRS kullanılarak sağlanmalıdır. Gereksinimlerimin "kaydetme düğmesiyle bir form oluştur" yazdığında neden pek çok komut oluşturmam gerektiğini anlamıyorum. – Cesar

+1

CQRS'nin tek nedeni, ölçeklenebilirlik ise, daha basit bir şey deneyebilirsiniz. I.e: web sayfalarındaki yükü azaltmak için bir çeşit bellek önbelleği kullanmak (veya DB'yi vurgulayamayacak şekilde web görünümlerini yayınlamak - örneğin: JSN'de JSON) veya yalnızca varsayılan sunucu önbelleğini çimdik. CQRS genellikle projenin bunlardan birkaçıyla ilgilenmesi gerektiğinde devreye girer: karmaşık iş senaryosunu, ölçeği, zengin BI yeteneklerine sahip olmak, hızla değişen gereksinimlere uyum sağlamak. –

+0

senaryo karmaşıktır ve sistemler zaten memcache ile çalışıyor. CQRS uygulamalarından pek çok fayda elde edebiliriz, bu karar hakkında şüphe yok, web sitesi CQRS ile yeniden oluşturulacak. Şüphe esas olarak, web sitesini çevreleyen küçük projelere ve bunun yerine büyük bir komut veya küçük komutlar göndermeleri gerektiğine işaret eder (olaylar hakkında aynıdır). Tüm bu düşünceler DDD'nin güçlü arka planını, sınırlı bağlamları ve başarıyı sağlayan bir geliştiriciden geliyor. Şimdi tüm amaçları kodlamalıyım ve verilerin versiyonunu korumak için oturumla uğraşmalıyım. (BTW Blogunuzu okumayı seviyorum) – Cesar

İlgili konular