Domanda

  

Versioning
  Se i vostri eventi cambia è necessario creare una nuova versione di tale evento, e mantenere quelli vecchi. Per mantenere la forma del codice del dominio di essere gonfio con la gestione di tutte le versioni di eventi che si fondamentalmente introdurre un componente che converte i tuoi eventi dal precedente alle versioni più recenti, e poi applicare sul dominio. Ricordate che gli eventi sono cose realmente accaduti nel dominio così nella maggior parte dei casi, l'informazione eventi deprecate sono preziosi.

Non ho ancora trovato alcun esempio di questo.

Qualsiasi aiuto?

È stato utile?

Soluzione

Ci sono due modi principali per gestire le conversioni di eventi. Entrambi accadere durante la deserializzazione evento:

  1. È possibile aggiungere nuove classi con numeri di versione (SomethingHappened, SomethingHappened2, SomethingHappened3). Il deserializzatore sarà instanciate e popolare la classe, il passaggio ad un convertitore per ottenere lo stesso evento nella sua versione più alto, qui SomethingHappened3. Uno dei problemi è che dovrete aggiornare anche i gestori di eventi per utilizzare l'ultima versione dell'evento. Per mitigare questo, è possibile utilizzare una convenzione che SomethingHappened è sempre l'ultima versione. Quando si va a v2, rinominare SomethingHappened come SomethingHappened1 e creare una SomethingHappened che sarà il v2. Per fare questo è necessario avere il controllo sulle classi create dall'evento serializzato dal momento che il nome della classe serializzato non conterrà il numero di versione, è necessario memorizzare da parte.

  2. mantenendo invece tutte le versioni delle classi nel codice, il convertitore riceverà un documento (un albero, come un documento XML o un oggetto JSON) e modificherà di fornire le informazioni necessarie per costruire l'ultima versione.

Tutto questo dipende dal controllo che hai sul tuo pipeline di deserializzazione.

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