2010-11-12 18 views
2

Je suis à la recherche d'un bref aperçu des choses qui sont importantes lors de la sérialisation des données dans des fichiers. Quelles techniques existent pour gérer les changements ultérieurs dans les structures de données? Existe-t-il certaines structures d'en-tête couramment utilisées?Matériel d'introduction pour la création de formats de fichiers et la sérialisation avec C++

Spécifiquement pour C++: Quelle bibliothèque est appropriée pour de telles tâches? Boost.Serialization?

EDIT: Si possible, veuillez fournir un lien qui contient des réponses!

Merci pour tout conseils,

Philipp

Répondre

2

La première partie est le choix du format:

  • est-il un fichier interne/externe?
  • est-il simplement utilisé comme stockage temporaire, ou doit-il être édité/traité?
  • Y a-t-il des problèmes de vitesse ou d'espace de stockage?

Une fois que vous avez le format, vous devez penser à des choses comme versioning:

  • est rétrocompatibilité seulement OK, ou avez besoin d'une compatibilité avant vous?
  • Avez-vous besoin de cela du tout?

Et vous pouvez penser à des bibliothèques:

  • diverses bibliothèques XML
  • de Boost.Serialization
  • s11n
+0

Wooh! C'est une très bonne liste de questions en effet. Je suggérerais cependant d'autres bibliothèques: les bibliothèques Json pour remplacer Xml (beaucoup plus facile à éditer manuellement, les entités XML sucent) et Google Protocol Buffers (parce que c'est tellement bon de voir le contenu avec un script Python). En particulier pour le stockage à long terme, je préfère nettement les tampons de protocole Google: si vous changez soudainement votre Business Model, vous perdez l'objet de mappage d'objet one-one, protobuf le souligne de toutes pièces puisque vous devez passer une couche d'adaptateurs. –

+0

J'ai lu la description très intéressante de s11n (http://s11n.net) et cela semble très bien. Je souhaite seulement qu'il y ait un sérialiseur json livré avec lui pour l'exhaustivité. Il semble léger mais a une liste de fonctionnalités de rêve. Mes deux seules préoccupations seraient le chargement paresseux, mais cela ne concerne que les gros fichiers, et bien sûr le mapping object-serializedblob qui sévit dans tous les frameworks de sérialisation (mais c'est à ça que sert la sérialisation). Très intéressé en effet, merci! –

+0

Une note particulière à propos de s11n: sérialisation profonde et gestion de cycle. C'est vraiment génial. –