In che modo gli eventi nel contesto di Event Sourcing sono diversi dai comandi?

2

Nel contesto di design basato sul dominio , gli eventi di solito descrivono qualcosa che è già accaduto (eventi di dominio, eventi di integrazione). I comandi d'altra parte sono direttive che possono o non possono essere eseguite in futuro. Questa distinzione viene anche fornita in un'altra risposta SO .

Tuttavia, in gestione degli eventi , abbiamo eventi che descrivono il delta di una modifica: questi eventi esistono anche prima degli oggetti apply() li e sono persistenti in un archivio eventi. In un certo senso, hanno caratteristiche sia di un dominio / evento di integrazione e un comando.

Come dovrei nominare e distinguere questo tipo di eventi dagli eventi di dominio real ? In che modo i comandi si traducono in eventi "event-sourcing"?

    
posta Double M 21.10.2018 - 19:32
fonte

1 risposta

3

Attenzione: la letteratura non è particolarmente valida, per una serie di motivi. Non è colpa tua.

Al suo interno, l'event sourcing riguarda la rappresentazione dello stato corrente di un modello come una cronologia delle modifiche con la semantica del dominio. L'unica differenza tra questi cambiamenti e ciò che Martin Fowler ha definito come Eventi di dominio , è che non sono input per il modello , ma piuttosto uscite dal modello.

Sono descrizioni delle modifiche che il modello di dominio ha apportato al proprio stato, descritte come messaggi con semantica di dominio.

L'unica vera distinzione da fare è l' autorità per l'evento; per gli eventi del dominio di input, l'autorità è là fuori nel mondo reale da qualche parte. CashWithdrawn ; Bob ha davvero preso i soldi dal bancomat. CashDeposited ; Bob ha davvero messo i soldi nel bancomat. Quando il modello di dominio è l'autorità, ottieni qualcosa come OverdraftLimitExceeded - abbiamo esaminato tutte le transazioni di ATM di Bob e ci deve dei soldi. È ancora un evento: descrive il risultato di un calcolo effettuato dal modello di dominio nel passato.

How am I supposed to name and distinguish these kinds of events from real domain events?

Onestamente? Non dovresti distinguerli; sono ancora rappresentazioni di cose accadute in passato, quindi dovrebbero avere semantica di dominio con i tempi verbali "passati" appropriati.

Può essere utile ricordare che, quando in seguito immettiamo questi eventi in un sottoscrittore, non sono distinguibili da "eventi di dominio".

    
risposta data 22.10.2018 - 03:57
fonte

Leggi altre domande sui tag