2012-06-24 22 views
6

Okuduklarımdan, CQRS tasarımları, komutların bir sıraya yerleştirildiği zaman uyumsuz komutları içerir. Kullanıcı tümünün tamam olduğunu varsayar ve UI oylamaları ya da bir zamanlayıcı üzerinden tüm çalışanlar işe yarayıp yaramadıklarına dair geri besleme alır.Komutların CQRS'de asenkron olması gerekiyor mu?

Ağacın içinde klasörleri sürüklediğim bir kullanıcı arabirimim varsa bu nasıl çalışır? Bir dosyayı bir klasörü silerken başka bir klasöre sürükleyebilirim (bir alt klasörü yapmak için).

Kullanıcı arabiriminden bu yana, sürüklemenin gerçekleştiğini ve daha sonra bazı zamanlayıcıda okunan modelimin güncellenip güncellenmediğini kontrol edebilirim (örneğin, sürüklenen klasörün üst klasörünün olup olmadığını ve doğru ayarlanmışsa). çalıştığını biliyorum). Kullanıcı sürükleme alan bir dizi operasyon yaptığı takdirde

, ben arayüzünde bu operasyonların bir listesini tutmak ve (listeden herhangi bir başarılı komutları kaldırma) okuma mağaza kontrol etmesi gerekir.

Bunu yapmak için daha iyi yollar vardır.

Sadece bir UI üzerindeki çalışmaların çok yanılma daha yatkın görünüyor Ben sadece bir senkron komutunu çalıştırın ve tüm iyi olup olmadığını, sonra ben sonraki operasyonda üzerine taşırsanız oysa.

cevap

5

zaman uyumlu komutları kullanabilirsiniz, o zaman bir sorun olmadığınıgöstermez tarif ettiğiniz problem yapmaz; kullanıcıyı bilgilendirirken sadece biraz farklı davranış anlamına gelir.

Komutlarla ilgili gerçekleştirilecek şey, etki alanı nesneleri tarafından reddedilebilmesidir. Bu durumun anlamı, ilk kullanıcının değişiklik yapmasıdır ve sonra ikinci kullanıcının yaptığı değişiklikler, geçersiz bir duruma başvurdukları için reddedilebilir.

tüm kullanıcılara sistemin mevcut durumunu sunmak istiyorsanız

, senin ui zaten ilgili endişeleriniz iş yapmak zorunda olacak; Bu kesinlikle CQRS'ye özgü değil.

+0

Cevabınız için teşekkür ederiz. –

+0

Bunu, kullanıcıların işlemlerinin başarılı olup olmadığını bildirmelerini sağlamak için daha fazla çaba gösterdiğimi düşünüyorum. Ve benim görüşüme göre, kullanıcıların birkaç saniye sonra "sunucuyu çağırmak" için klasörleri nezaketle sürüklemelerine ve tüm bu eylemlerin reddedilmesine izin vermek için UI kullanılabilirlik bakış açısından kötüyse - kullanıcının bilgilendirilmesi gerektiğini düşünüyorum hemen. Verilerin kaydedilmesiyle ilgili problemler için aynı durum (validasyonu doğrulama!) Ve çoğu diğer hata koşullarında değilse. – Dav

+0

"Kullanıcılara eylemlerinin başarılı olup olmadığını bildirme çabası" her sistemin yerine getirmesi gereken evrensel bir gereklilik değildir. Uygulamanın mevcut durumu, kullanıcının kullanabileceği eylemleri belirlemede kritik öneme sahipse, eşzamansız komutlar muhtemelen en iyi tasarım kararı değildir, ancak bu durum eşzamanlı komutların kullanılmasının, durumun değişmesini engelleyen sihirli bir mermi olduğu anlamına gelmez. * Tek bir kullanıcı tarafından verilen komutlar arasında *. – arootbeer

3

Senkronize komutları çok iyi kullanabilirsiniz. CQRS için asenkron komutlar gerekli değildir.

İlgili konular