Domanda

Uno dei principi fondamentali della CQRS, se ho capito bene, è che i comandi devono essere un comportamento-centrica, e hanno un valore nel business o UL, e non data-centric, vale a dire., CRUD. Invece di concentrarsi su aggiornamento di un cliente, abbiamo comandi come CustomerHasMoved. Che cosa succede se si dispone di schermi CRUD cui ci sono da correggere alcuni dati. Per esempio, abbiamo bisogno di cambiare il nome di un cliente che è errato. Questo in realtà non hanno molto valore nel business. Se questo dovesse essere solo sotto l'ombrello di un comando UpdateCustomer?

È stato utile?

Soluzione

In realtà, ci potrebbero essere varie ragioni per aggiornare il nome di un cliente. Come dicevi, potrebbe essere scritto male o ... si poteva sposarsi e cambiare il tuo nome al tuo marito.

Se solo si avesse un comando UpdateCustomer, si potrebbe perdere l'intento originale e non si sarebbe in grado di avere comportamenti diversi per ciascuno di essi. Se il nome è stato misselled potrebbe essere semplice come l'aggiornamento del database, mentre se il cliente si è sposato potrebbe essere necessario notificare al dipartimento di marketing in modo tthat possono offrire uno sconto.

Nel caso in cui il vostro soggetto è puramente CRUD, cioè non v'è alcun intento che è possibile associare con modifica delle proprietà, allora è OK per avere un UpdateEntityCommand. È quindi possibile passare lentamente in qualcosa di più attività in base

Altri suggerimenti

Voglio solo mettere un commento su questo rapidità con cui era spuntato.

E 'importante notare che alcuni oggetti sono in realtà CRUD e questo è ok. Posso realtà non importa il motivo per cui un nome sta cambiando nel mio dominio in cui Spedisco prodotti alle persone e solo bisogno che i dati da stampare etichette postali. Il trucco sta nel fare il comportamento di default e ritorno ad un'interfaccia CRUD poi una volta si è certi che realmente non si preoccupano le ragioni invece di viceversa.

Greg

CustomerHasMoved è l'evento che viene licenziato dopo aver aggiornato la posizione clienti. Questo evento aggiorna i database di lettura / database di cache. Il comando dalla GUI dovrebbe essere MoveCustomer o qualcosa di simile. Penso che vorrei mettere l'aggiornamento del nome del cliente in un comando come UpdateCustomer.

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