2010-06-09 4 views
9

Boost Serialization Library을 기존 데이터와의 호환성을 손상시키지 않고 프로덕션 시스템에서 안전하게 업그레이드 할 수 있다는 것을 어떻게 알 수 있습니까? 라이브러리의 이전 버전에서 바이너리 형식으로 저장된 모든 데이터가 새 라이브러리에 의해 성공적으로 읽히도록하기 위해 수행해야하는 테스트가 있습니까? 부스트 직렬화 라이브러리 자체가 버전간에 호환성을 보장합니까?부스트 직렬 라이브러리 업그레이드

답변

9

Boost.serialization은 이전 버전과 호환하지만 is not guaranteed to be forwards compatible입니다.

이 의미

  • 당신이 새 버전으로 읽을 수 boost.serialization의 이전 버전과 아카이브를 만들 수 있습니다.
  • 새 버전의 boost.serialization으로 만든 아카이브가 이전 버전에서 읽을 수 있다는 보장은 없습니다.

클라이언트와 서버간에 양방향으로 메시지를 보내는 경우 (예 : 두 단계 모두에서 잠금 단계에서 업그레이드 버전을 업그레이드해야 할 수 있음)

마다 '와이어 형식'이 변경되지 않고 각 번의 부스트 버전으로 변경됩니다. 따라서 두 가지 특정 버전의 부스트 사이에는 문제가 없을 수 있습니다. 어떤 버전의 부스트 버전에서 어떤 아카이브 형식의 버전이 사용되는지에 대한 구체적인 문서를 찾을 수 없습니다.

하위 호환성은 '보증'되지만 의도를 표현한 것일뿐입니다.하지만 돈을 돌려받을 수는 있겠지만 .-). Boost 버전 1.42 및 1.43에는 이후 버전에서 다시 읽을 수없는 버그가 있습니다. see the 1.45 release notes.

1

현재 소프트웨어 버전을 사용하여 테스트 파일을 만들어 저장할 수 있습니다. 그런 다음이 파일을 자동 테스트에로드하십시오.

유감스럽게도 코드가이 테스트를 통과하더라도로드 할 수없는 일종의 직렬화 된 콘텐츠가있을 수 있으므로 호환성에서 100 % 확신 할 수는 없습니다. 글쎄, 그것은 여전히 ​​아무것도 아닌 것보다 낫다.

이 테스트는 자동으로 이전 버전과의 호환성만을 제공합니다. 순방향 (상향) 호환성 테스트는 더욱 복잡해집니다. 하나는 ... 부스트

확장 앞으로의 호환성을 모든 새로운 릴리스에 대한 테스트 데이터를 생성하고 모든 이전 버전을로드하려고해야합니다 : 직렬화 answered here

입니다
관련 문제