Una strana corrente di pensiero dice che CQRS porta con se la necessità di andare d’accordo con la consistenza eventuale perché il modello in lettura è asincrono, con l’ovvia conseguenza che ci vediamo costretti a portarci a casa un bus di qualche tipo per far si che modello in scrittura e modello in lettura siano allineati.

Concedetemi il francesismo: balle :-)

CQRS si limita a postulare che il canale di scrittura e il canale di lettura devono essere diversi. Fine, punto e capo.

Cosa ci vieta quindi di avere un repository che usa un contesto di EntityFramework per maneggiare gli aggregati e un contesto di EF, o una ISession di NHibernate, completamente diverso che legge delle viste, o le tabelle stesse, su SQL Server?

Avete tutti i benefici di CQRS, potete costruire tanti modelli in lettura che mappano 1:1 gli scenari utente, potete giovare di un modello di scrittura che sia incapsulato e pensato per l’esecuzione di comandi e la consistenza, etc…etc…

Con Nazareno abbiamo lavorato sodo per dimostrare che si può fare ed è pure facile.