CQRS Yolculuğu bir kılavuz olarak görülmemelidir. Bu sadece bazı ekiplerin CQRS'ye karşı mücadele ettikleri ve yalnızca Microsoft yığınını kullanmanın tüm sınırlamalarına sahip oldukları bir hikayedir. Sizce okuma modelinizi komut işleyicilerinde veya etki alanı mantığında kullanmamalısınız. Ancak, komutunuz için gereken verileri almak ve komutu doğrulamak için okuma modelinizi istemciden sorgulayabilirsiniz.
Bu cevaba ilişkin bazı indirimler aldığımdan, yazdığımın kalıpta yerleşik uygulama olduğunu göstermem gerekiyor. Okunan taraf yazma tarafına ulaşmaz, yazma tarafı okunan taraftan veri almaz. Bununla birlikte, "müşteri" tanımı, bir tartışma konusu olabilirdi. Örneğin, uygun bir "istemci" olmak için halka açık bir JS tarayıcı uygulamasına güvenmem. Bunun yerine, REST API katmanımı CQRS'de "istemci" olmak için kullanacağım ve web uygulaması bu istemci için yalnızca bir UI katmanı olacaktı. Bu durumda, REST API servis çağırma işlemi meşru bir okuyucuyu okuyucusu olacaktır; çünkü bu, sahtekarlığı önlemek ve bazı iş kurallarını doğrulamak için UI katmanının gönderdiği her şeyi doğrulamak zorundadır. Bu iş yapıldığında, komut yazılır ve yazma tarafına gönderilir. Doğrulamalar ve diğer her şey senkronize ve komut kullanımı daha sonra eşzamansızdır.
GÜNCELLEME: Aşağıda bazı anlaşmazlıklar ışığında, genel olarak CQRS hakkında genel olarak komutlar ve onaylama hakkında konuşmak için Udi's article from 2009'a işaret etmek istiyorum.
Katılmıyorum. Komutlarınızın veriyi içermesini gerektiriyorsa, işleyicinin komutunuzu doğrulaması gerekir, çünkü * istemci * 'yi etkilemeden işleyici/etki alanınızdaki doğrulama mantığını hiçbir zaman değiştiremezsiniz. Bu açıkça komut onaylama/alan bilgisinin çok fazlaını müşteriye açıklar ve müşterinin sadece bir niyet ifade etmek istediği ile çelişir. IMHO daha iyi bir çözüm, toplu köklerinize bir "PricingService" arabirimi (her yerde bulunan dilin bir parçası) sağlamak ve sonra ara yüzü gerektiği şekilde uygulamaktır - bu, okuma tarafını sorgulamayı içerebilir. –
Bu ikinciye ihtiyacım var. – JoG
@AlexanderLanger Bu, icat ettiğim bir şey değil, desen bu şekilde tasarlandı. Okunan tarafı komut işleyicinizden sorgulamanız mümkün olabilir, ancak bu söz konusu modelden başka bir şey olacaktır. CQRS'deki herhangi bir şemaya bakarsanız, bu okuma modelinin yazma modu tarafından sorgulandığını asla görmeyeceksiniz. Sadece müşteri tarafından okunur. –