Qual è la differenza tra Event Driven e Event sourcing?


13

Sto studiando la progettazione guidata dal dominio (DDD) e ho trovato termini: Event Driven e Event sourcing. So che riguarda la pubblicazione di eventi dal produttore al consumatore e l'archiviazione del registro, quindi la mia domanda è:

Qual è la differenza tra Event Driven e Event sourcing?

Risposte:


16

Il termine architettura guidata dagli eventi viene utilizzato per qualsiasi tipo di sistema software basato su componenti che comunicano principalmente o esclusivamente attraverso eventi. Ad esempio, quasi tutti i principali framework della GUI su qualsiasi piattaforma popolare utilizzano meccanismi basati sugli eventi. Il termine "evento" di solito significa "notifica" in questo contesto.

Il sourcing di eventi è un termine molto più speciale, riferito a sistemi in cui l'intero stato dell'applicazione è memorizzato come una sequenza di eventi. Una ben nota classe di esempi noti sono i sistemi di database transazionali, che memorizzano eventuali cambiamenti di stato in un registro delle transazioni. Qui, il termine "evento" si riferisce più a "cambio di stato", non solo a "notifica".

Quindi, qualsiasi sistema che utilizza "sourcing di eventi" come sua meccanica di base può essere visto anche come un sistema basato su pari, ma il contrario non è vero in generale.


Hai valutato la tua risposta. Lo sto cercando ora io stesso, e ho trovato prima la tua risposta. Guardando la frase "l'intero stato dell'applicazione è memorizzato come eventi sequenza", sembra che tu stia dicendo questo: "Lo stato dell'applicazione non è persistente direttamente nella sua forma corrente. Invece, ogni operazione di creazione, aggiornamento o eliminazione eseguita su un oggetto o modello è considerato un "evento", ed è quegli "eventi" che persistono direttamente. Quindi, per ottenere lo stato corrente di un oggetto, è necessario riprodurre quegli eventi per ricostruirne una copia. " Questo suona corretto?
Panzercrisis,

1
@Panzercrisis: avrei dovuto scrivere "Event Sourcing memorizza tutte le modifiche allo stato dell'applicazione come una sequenza di eventi". (come Fowler). Tutti gli oggetti di solito hanno uno stato "corrente", questo stato può anche essere persistente (forse differito), così come la sequenza di eventi stessa. Consiglio di leggere l'articolo di Fowler per una spiegazione completa.
Doc Brown,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.