Pergunta

Versionamento
Se seus eventos mudarem, você criará uma nova versão desse evento e manterá as antigas.Para manter o formato do seu código de domínio inchado com o tratamento de todas as versões de eventos, você basicamente introduziria um componente que converte seus eventos de versões anteriores para versões mais recentes e, em seguida, aplicá-los no domínio.Lembre-se de que eventos são coisas que realmente aconteceram em seu domínio, portanto, na maioria dos casos, as informações em eventos obsoletos são valiosas.

Ainda não encontrei nenhum exemplo disso.

Qualquer ajuda?

Foi útil?

Solução

Existem duas maneiras principais de lidar com conversões de eventos.Ambos acontecem durante a desserialização do evento:

  1. Você pode adicionar novas classes com números de versão (SomethingHappened, SomethingHappened2, SomethingHappened3).O desserializador irá instanciar e preencher a classe, e depois passá-la para um conversor para obter o mesmo evento em sua versão superior, aqui SomethingHappened3.Um dos problemas é que você também terá que atualizar os manipuladores de eventos para usar a última versão do evento.Para atenuar isso, você pode usar a convenção de que SomethingHappened é sempre a última versão.Ao ir para a v2, renomeie SomethingHappened como SomethingHappened1 e crie um SomethingHappened que será a v2.Para fazer isso você precisa ter controle sobre as classes criadas a partir do evento serializado, pois o nome da classe serializada não conterá o número da versão, você deve armazená-lo de lado.

  2. Em vez de manter todas as versões das classes em seu código, o conversor receberá um Documento (uma árvore, como um documento Xml ou objeto JSon) e o modificará para fornecer as informações necessárias para construir a última versão.

Tudo isso depende do controle que você tem no pipeline de desserialização.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top