2010-06-09 13 views
9

Skąd wiadomo, że mogę bezpiecznie zaktualizować Boost Serialization Library w systemie produkcyjnym, nie łamiąc kompatybilności z istniejącymi danymi? Czy jest jakiś test, który powinienem wykonać, aby mieć pewność, że wszystkie dane zapisane w formacie binarnym przez poprzednią wersję biblioteki zostaną pomyślnie odczytane przez nową? Czy sama biblioteka Boost Serialization gwarantuje kompatybilność pomiędzy wersjami?Aktualizacja biblioteki aktualizacji szeregowej

Odpowiedz

9

Boost.serialization jest wstecznie kompatybilne ale is not guaranteed to be forwards compatible.

To znaczy:

  • można utworzyć archiwum ze starszą wersją boost.serialization który może być odczytany z nowszej wersji.
  • Nie ma gwarancji, że archiwum utworzone za pomocą nowszej wersji boost.serialization będzie można odczytać przez starsze.

Jeśli na przykład wysyłasz wiadomości między klientem a serwerem w obu kierunkach, być może trzeba będzie uaktualnić wersję boost na obu w lockstep.

"Forma drutu" nie zmienia się z każdą wersją boostu w wersji. Pomiędzy dwiema konkretnymi wersjami boosta możesz nie mieć problemu - nie mogę znaleźć konkretnej dokumentacji, która wersja formatu archiwum jest używana w której wersji boost.

Należy również pamiętać, że podczas gdy kompatybilność wsteczna jest "gwarantowana", to tylko wyrażanie intencji - choć wydaje mi się, że można odzyskać swoje pieniądze ;-). Wersje boost 1.42 i 1.43 miały błąd, który oznaczał, że nowsze wersje nie mogą ich odczytać - see the 1.45 release notes.

1

Można tworzyć pliki testowe przy użyciu bieżącej wersji oprogramowania i zapisywać je. Następnie dołącz te pliki do automatycznych testów.

Niestety, nawet jeśli twój kod zda ten test, nie możesz być w 100% pewien zgodności, ponieważ nadal może istnieć jakaś serializowana treść, której nie można załadować. Cóż, to wciąż lepsze niż nic.

Ten test automatycznie obejmuje tylko kompatybilność wsteczną. Testowanie zgodności w przód (w górę) będzie bardziej skomplikowane. Jeden będzie trzeba utworzyć dane testowe dla każdej nowej wersji i spróbować załadować go za każdym starej wersji ...

Rozszerzone kompatybilność w przód dla boost :: serializacji jest answered here

Powiązane problemy