2010-06-09 40 views
9

我怎么知道,我可以放心地在生产系统升级Boost Serialization Library不中断与现有数据的兼容性?是否有任何测试应该执行,以确保新版本库的二进制格式存储的所有数据都能被新版本成功读取? Boost Serialization库本身是否保证版本之间的某种兼容性?升压串行化库升级

回答

9

Boost.serialization是向后兼容的,但is not guaranteed to be forwards compatible

这意味着:

  • 你可以boost.serialization的旧版本,可以用较新的版本可以读取创建存档。
  • 无法保证使用较新版本的boost.serialization创建的档案可以被旧版本读取。

例如,如果在两个方向上在客户端和服务器之间发送消息,则可能必须以锁步方式升级boost版本。

的“有线格式”不改变每版本提振。因此,在两个特定版本的boost之间,您可能没有任何问题 - 我无法找到在哪个版本的boost中使用哪种版本的存档格式的具体文档。

还要注意保持向后兼容性“保证”,这只是表达一种意图 - 虽然我想你可以拿回自己的钱;-)。 Boost版本1.42和1.43有一个错误,这意味着后来的版本无法读取它们 - see the 1.45 release notes

1

您可以使用当前版本的软件创建测试文件,并将其储存。然后将这些文件加载​​到自动测试中。

不幸的是,即使你的代码将通过这个测试,你不能100%肯定的兼容性,因为还有可能是某种无法加载序列化的内容。那么,它总比没有好。

此测试将自动仅覆盖向后兼容性。测试向前(向上)兼容性会更加复杂。一个需要为每一个新版本创建的测试数据,并尝试通过每一个旧版本加载它...升压

向前延伸兼容性::序列化是answered here