Discutendo di un'implementazione CQRS con il mio team non siamo d'accordo su un punto riguardante il lato Query .
Sul lato Commad abbiamo le vere finestre di comando; un CommandDispatcher
che pianifica i comandi, definisce un comando Unità di lavoro e invia comandi ai gestori; gestori che contengono la logica aziendale e eseguono operazioni CRUD utilizzando i repository.
Per il lato Query il team è diviso in due:
- Una parte del team afferma che è presente un semplice livello di servizio di lettura abbastanza, servizi che accedono direttamente all'origine dati (n repository) e possono essere richiamati direttamente dai chiamanti (nessuna query classi né un dispatcher di query).
- L'altra parte del team dice che dovremmo creare la query lato simmetricamente al lato Comando , con classi di query, a query dispatcher e recupera i dati dai repository.
Non è necessario alcun sistema di sincronizzazione o di pianificazione per le query (dispatcher di query) e i gestori di query devono essere principalmente classi che restituiscono i dati recuperati dai repository. Quindi aggiungeremo layer extra potenzialmente inutili solo per motivi di simmetria.
Qualche pensiero?