C++ Boost

Serialization序列化

簡介


要求
其它實現

這裡,我們用術語 "serialization序列化" 來表示將任意一組C++數據結構解構為一串字節的、可逆的過程。這樣的系統可用於在另一個程序上下文中重新構建一個等價的結構。根據不同的上下文,它可以用來實現對像持久化、遠程參數傳遞或其它功能。在本系統中,我們使用術語 "archive存檔" 來指代這個字節流的特定表現。它可以是一個二進制數據文件、文本文件、XML或其它由本庫的用戶所創建的東西。

我們對於這個系統的目標是:

  1. 代碼的可移植性 - 只依賴於 ANSI C++ 所提供的功能。
  2. 代碼的經濟性 - 使用C++的一些特性,如 RTTI, 模板, 和多重繼承等等,以使得代碼更短也更易於使用。
  3. 各個類定義版本的無關性。即當一個類的定義更改時,舊文件仍可導入到新版本的類中。
  4. 深的指針保存和恢復。即指針的保存與恢復分別保存和恢復所指的數據。
  5. 對共享數據指針的正確恢復。
  6. STL容器及其它常用模板的序列化。
  7. 數據的可移植性 - 在一個平台上創建的字節流可以在另一平台上讀出。
  8. 類的序列化與存檔格式的正交性。即任何文件格式都可用於保存任意一組C++數據結構的序列化信息而無需調整。
  9. 非介入性。可以對不作更改的類進行序列化。即不要求進行序列化的類派生自某個特定基類或者實現特定的成員函數。這一點對於要將序列化應用於某些我們不能或不願修改的類庫中的類來說是十分必要的。
  10. archive 的接口必須足夠簡單,以易於創建一種新的存檔類型。
  11. archive 的接口又必須足夠豐富,才可以創建出象XML這樣風格的存檔。

其它實現

在開始之前我查找了一下已有的一些實現。找到以下幾個:

Revised 1 November, 2004

© Copyright Robert Ramey 2002-2004. Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)