¿Cómo puedo saber si puedo actualizar de forma segura Boost Serialization Library en un sistema de producción sin romper la compatibilidad con los datos existentes? ¿Hay alguna prueba que deba realizar para estar seguro de que todos los datos almacenados en el formato binario de la versión anterior de la biblioteca serán leídos con éxito por el nuevo? ¿La biblioteca de serialización Boost en sí misma garantiza algún tipo de compatibilidad entre versiones?Actualización de Boost Serialization Library
Respuesta
La versión inicial estaba en Boost 1.32. Parece que puedas ver el historial de versiones desde entonces aquí: http://www.boost.org/doc/libs/1_43_0/libs/serialization/doc/release.html
Aparte de eso me gustaría sugerir que pide en la lista de correo de impulso: http://www.boost.org/community/groups.html#users
Boost.serialization es compatible con versiones anteriores, pero is not guaranteed to be forwards compatible.
Esto significa:
- puede crear un archivo con una versión anterior de boost.serialization que puede ser leído por una nueva versión.
- No hay garantía de que un archivo creado con una versión más reciente de boost.serialization sea legible por uno anterior.
Si envía mensajes entre un cliente y un servidor en ambas direcciones, por ejemplo, puede que tenga que actualizar la versión de boost en ambos pasos.
El 'formato de cable' no cambia con cada versión de impulso. Así que entre 2 versiones específicas de boost, es posible que no tenga ningún problema. No puedo encontrar documentación específica sobre qué versión del formato de archivo se usa dentro de qué versión de boost.
Tenga en cuenta también que, si bien la compatibilidad con versiones anteriores está "garantizada", eso solo expresa un intento, aunque supongo que podría recuperar su dinero ;-). Las versiones 1.42 y 1.43 de Boost tenían un error que significaba que las versiones posteriores no podían leerlas de nuevo: see the 1.45 release notes.
Puede crear archivos de prueba utilizando su versión actual del software y almacenarlos. Luego incluya la carga de estos archivos en sus pruebas automáticas.
Lamentablemente, incluso si su código pasa esta prueba, no puede estar 100% seguro en cuanto a compatibilidad, porque todavía puede haber algún tipo de contenido serializado que no se puede cargar. Bueno, es mejor que nada.
Esta prueba cubrirá automáticamente solo la compatibilidad con versiones anteriores. Probar la compatibilidad hacia adelante (hacia arriba) será más complicado. Uno necesitará para crear datos de prueba para cada nueva versión y tratar de cargarlo por cada versión antigua ...
compatibilidad hacia adelante extendido por impulso :: serialización es answered here
- 1. boost :: serialization of boost :: unordered_map
- 2. Serializar a XML usando boost :: serialization
- 3. Boost C++ library install
- 4. ¿Opiniones sobre Expression Tree Serialization Library de CodePlex?
- 5. ¿Tiene Boost Library a gui?
- 6. java.util.concurrent vs. Boost Threads library
- 7. Boost Graph Library: error potencial
- 8. ¿Cómo puedo serializar un std :: vector con boost :: serialization?
- 9. ¿Cómo uso solo Asio de Boost Library?
- 10. Visualizar gráfico usando Boost Graph Library
- 11. Boost Library Format; conseguir std :: string
- 12. boost :: alternativa opcional en C++ Standard Library
- 13. Java Serialization
- 14. Actualización de boost :: shared_lock al bloqueo exclusivo
- 15. Boost Library, cómo obtener un determinante de lu_factorize()?
- 16. Tiempo de formateo en milisegundos usando boost :: date_time library
- 17. Argumentos necesarios y opcionales usando Boost Library Opciones de programa
- 18. C++ Serialization Performance
- 19. Xml Serialization Dynamic Ignore
- 20. .NET Serialization Ordering
- 21. ASP.NET * .resx serialization
- 22. WCF Serialization Exception - NetDataContractSerializer
- 23. Comparando 2 gráficos creados por Boost Graph Library
- 24. función TimerCallback basada en la plantilla estándar LIbrary sin Boost
- 25. Java Object Serialization Performance tips
- 26. Serialization Performance y Google Android
- 27. Serialization DataMember (name) override issue
- 28. Java JSON serialization: mejor práctica
- 29. Agregar Boost Library a un proyecto de C++ en OS X Eclipse
- 30. Boost C++ serializar un char *