Sto iniziando una nuova architettura DDD e ho un dilemma con gli eventi di dominio e il modo in cui vengono recuperati e archiviati in un database EventStore.
Prima di tutto, l'EventStore dovrebbe vivere nel livello Dominio o nel livello applicazione? Al momento ha più senso per me averlo nel livello applicazione dal momento che il dominio non dovrebbe preoccuparsi di "archiviare" eventi, semplicemente consumandoli.
In secondo luogo, immaginiamo che un evento di dominio abbia una proprietà che è una classe astratta o un'interfaccia, qualcosa che non può essere serializzato o deserializzato senza conoscere l'implementazione concreta. È permesso? O gli eventi del dominio dovrebbero essere serializzabili / deserializable?
Se, come immagino, questo è permesso perché gli eventi di dominio sono significativi all'interno della nostra logica aziendale e non dovrebbero preoccuparsi di essere trasferiti, significa che i nostri eventi di dominio dovrebbero essere mappati a una rappresentazione DTO di eventi che possono essere trasferiti ad altri sistemi (es .: inserito in un bus) o memorizzato (es: persistente in un negozio di eventi). In alcuni posti li chiamano Integration Events. Li chiamo Event DTOs
Questo lascia il livello Applicazione come l'unico posto in cui l'EventStore potrebbe vivere. Pertanto, l'event store si occupa di memorizzare / recuperare i DTO degli eventi (perfettamente serializzabili / deserializzabili).
È corretto? E, cosa più importante, hai un buon link che parla di queste preoccupazioni? Sto davvero lottando per decidere in quale livello lasciare le cose.