2010-06-09 20 views
9

Come faccio a sapere che posso aggiornare in modo sicuro Boost Serialization Library su un sistema di produzione senza compromettere la compatibilità con i dati esistenti? C'è qualche test che dovrei eseguire per essere sicuro che tutti i dati memorizzati nel formato binario dalla versione precedente della libreria saranno letti correttamente dal nuovo? La libreria Boost Serialization garantisce una sorta di compatibilità tra le versioni?Upgrade della libreria di serializzazione

risposta

9

Boost.serialization è compatibile ma is not guaranteed to be forwards compatible.

Ciò significa:

  • è possibile creare un archivio con una versione precedente di boost.serialization che può essere letto con una versione più recente.
  • Non è possibile garantire che un archivio creato con una versione più recente di boost.serialization sia leggibile da uno più vecchio.

Se si inviano messaggi tra un client e un server in entrambe le direzioni, ad esempio, potrebbe essere necessario aggiornare la versione di boost su entrambi in Lockstep.

Il 'formato filo' non cambia con ogni versione di boost. Quindi, tra 2 versioni specifiche di boost, potresti non avere alcun problema - Non riesco a trovare una documentazione specifica su quale versione del formato di archivio viene utilizzata all'interno della quale versione di boost.

Nota anche se la retrocompatibilità è "garantita", è solo un'espressione di intenti, anche se immagino che potresti riavere i tuoi soldi ;-). Le versioni boost 1.42 e 1.43 avevano un bug che significava che le versioni successive non potevano leggerle indietro - see the 1.45 release notes.

1

È possibile creare file di test utilizzando la versione corrente del software e memorizzarli. Quindi includi il caricamento di questi file nei tuoi test automatici.

Sfortunatamente, anche se il tuo codice supererà questo test, non puoi essere sicuro al 100% di compatibilità, perché ci può ancora essere una sorta di contenuto serializzato che non può essere caricato. Bene, è ancora meglio di niente.

Questo test coprirà automaticamente solo la retrocompatibilità. La verifica della compatibilità diretta (verso l'alto) sarà più complicata. Uno sarà necessario creare dati di test per ogni nuova release e provare a caricarlo da ogni vecchia versione ...

esteso la compatibilità in avanti per boost :: serializzazione è answered here