Domanda

nel CQRS, l'evento-sourcing è la nostra unica vera fonte di informazioni, non fidatevi del vostro DataModel lettura, quindi se ho bisogno di visualizzare un messagebox conferma che visualizza per esempio "ultimi 10 azioni dell'utente di X", allora che cosa approch dovrei uso?

1 -? Invia un comando per interrogare ultimi 10 azioni ai miei aggregati, quindi l'aggregato pubblicare 10 eventi che ho Manipolare la mia interfaccia utente che contiene le azioni dell'utente

2 -? O semplicemente, interrogare il mio modello Leggi

quello che fa CQRS dicono nel mio caso?

Grazie ragazzi.

John Smith

È stato utile?

Soluzione

Non fidarti mai il vostro modello di lettura non significa che è necessario leggere i dati dal database di scrittura. Ciò significa che i dati nel modello di lettura possono diventare non validi. In questo caso si dovrebbe fare alcune correzioni ai vostri eventi gestori ed a causa di cui ti fidi solo database di scrittura ricostruire database letta dal vostri eventi (database scrittura).

Regole semplici (almeno lo sono seguire queste regole):

  1. Sempre leggere i dati dal database di lettura.
  2. È possibile accedere radice aggregato solo se avete bisogno di verificare qualcosa prima di applicare evento per AR e quando hai bisogno di riprodurre gli eventi (all'interno del dominio dovrebbe essere solo un metodo per l'accesso AR - GetById).

Nel tuo esempio tutto è semplice: i messaggi AR utente maniglia ed eventi memorizzare in formato (si dovrebbe mappare i dati di evento, non solo conservare evento) è necessario entro utente (collezione nidificato in caso di banca dati NoSQL) o in tabella separata in caso di database SQL.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top