Boost Serialization Library을 기존 데이터와의 호환성을 손상시키지 않고 프로덕션 시스템에서 안전하게 업그레이드 할 수 있다는 것을 어떻게 알 수 있습니까? 라이브러리의 이전 버전에서 바이너리 형식으로 저장된 모든 데이터가 새 라이브러리에 의해 성공적으로 읽히도록하기 위해 수행해야하는 테스트가 있습니까? 부스트 직렬화 라이브러리 자체가 버전간에 호환성을 보장합니까?부스트 직렬 라이브러리 업그레이드
답변
최초 릴리스는 부스트 1.32입니다. 그것은 당신이 여기에 이후 릴리스 기록을 볼 수 있습니다 나타납니다 내가 부스트 메일 링리스트에 요청하는 게 좋을 것보다 http://www.boost.org/doc/libs/1_43_0/libs/serialization/doc/release.html
Boost.serialization은 이전 버전과 호환하지만 is not guaranteed to be forwards compatible입니다.
이 의미
- 당신이 새 버전으로 읽을 수 boost.serialization의 이전 버전과 아카이브를 만들 수 있습니다.
- 새 버전의 boost.serialization으로 만든 아카이브가 이전 버전에서 읽을 수 있다는 보장은 없습니다.
클라이언트와 서버간에 양방향으로 메시지를 보내는 경우 (예 : 두 단계 모두에서 잠금 단계에서 업그레이드 버전을 업그레이드해야 할 수 있음)
마다 '와이어 형식'이 변경되지 않고 각 번의 부스트 버전으로 변경됩니다. 따라서 두 가지 특정 버전의 부스트 사이에는 문제가 없을 수 있습니다. 어떤 버전의 부스트 버전에서 어떤 아카이브 형식의 버전이 사용되는지에 대한 구체적인 문서를 찾을 수 없습니다.
하위 호환성은 '보증'되지만 의도를 표현한 것일뿐입니다.하지만 돈을 돌려받을 수는 있겠지만 .-). Boost 버전 1.42 및 1.43에는 이후 버전에서 다시 읽을 수없는 버그가 있습니다. see the 1.45 release notes.
현재 소프트웨어 버전을 사용하여 테스트 파일을 만들어 저장할 수 있습니다. 그런 다음이 파일을 자동 테스트에로드하십시오.
유감스럽게도 코드가이 테스트를 통과하더라도로드 할 수없는 일종의 직렬화 된 콘텐츠가있을 수 있으므로 호환성에서 100 % 확신 할 수는 없습니다. 글쎄, 그것은 여전히 아무것도 아닌 것보다 낫다.
이 테스트는 자동으로 이전 버전과의 호환성만을 제공합니다. 순방향 (상향) 호환성 테스트는 더욱 복잡해집니다. 하나는 ... 부스트
확장 앞으로의 호환성을 모든 새로운 릴리스에 대한 테스트 데이터를 생성하고 모든 이전 버전을로드하려고해야합니다 : 직렬화 answered here
입니다