2010-03-29 36 views
6

Versiones
Si sus eventos cambian, creará una nueva versión de ese evento y conservará los antiguos. Para mantener su formulario de código de dominio inflado con el manejo de todas las versiones de eventos, básicamente, introduciría un componente que convierta sus eventos de versiones anteriores a nuevas y luego los aplique en el dominio. Recuerde que los eventos son cosas que sucedieron realmente en su dominio, por lo que en la mayoría de los casos, la información en eventos obsoletos es valiosa.Versiones de eventos CQRS

Todavía no he encontrado ningún ejemplo de esto.

¿Algún ayuda?

Respuesta

3

Existen dos formas principales de gestionar las conversiones de eventos. Tanto suceda durante la deserialización evento:

  1. Puede añadir nuevas clases con números de versión (SomethingHappened, SomethingHappened2, SomethingHappened3). El deserializador instanciará y poblará la clase, la pasará a un convertidor para obtener el mismo evento en su versión superior, aquí SomethingHappened3. Uno de los problemas es que tendrá que actualizar también los controladores de eventos para usar la última versión del evento. Para mitigar esto, puede usar una convención de que SomethingHappened es siempre la última versión. Cuando vaya a la v2, cambie el nombre a SomethingHappened como SomethingHappened1 y cree un SomethingHappened que será el v2. Para hacer eso, necesitas tener control sobre las clases creadas a partir del evento serializado ya que el nombre de la clase serializada no contendrá el número de versión, debes guardarlo a un lado.

  2. En lugar de mantener cada versión de las clases en su código, el convertidor recibirá un documento (un árbol, como un documento Xml o un objeto JSon) y lo modificará para proporcionar la información necesaria para compilar la última versión.

Todo esto depende del control que tenga en su canalización de deserialización.

+0

Tiene sentido. Sería genial ver un código de muestra. ¿Hay algo? –

+0

¿Podría mostrar algunos ejemplos de cambios en el modelo de dominio o eventos y cómo manejarlos? – Khaled

Cuestiones relacionadas