De la documentation boost.serialization : Ici, nous utilisons le terme "sérialisation" pour désigner la déconstruction réversible d'un ensemble arbitraire de structures de données C ++ en une séquence d'octets. Un tel système peut être utilisé pour reconstituer une structure équivalente dans un autre contexte de programme. Selon le contexte, cela peut être utilisé pour implémenter la persistance des objets, le passage de paramètres à distance ou une autre fonctionnalité. Dans ce système, nous utilisons le terme «archive» pour faire référence à un rendu spécifique de ce flux d'octets. Il peut s'agir d'un fichier de données binaires, de données texte, XML ou autre créé par l'utilisateur de cette bibliothèque.
En d'autres termes, la sérialisation est tout processus qui transforme des objets en mémoire en une sorte de flux secondaire et la désérialisation fait l'inverse, en prenant un flux secondaire et en le transformant en objets en mémoire.
Le terme "sérialisation" n'implique rien sur le format du bytestream. Il peut s'agir d'un format binaire efficacement compressé ou d'une description XML ou YAML lâche. Il peut même s'agir de code source dans le langage d'origine lui-même, ou dans un autre langage de programmation, tel que JSON , qui est un sous-ensemble de JavaScript. Le format exact du flux sérialisé doit être choisi en fonction de la façon dont vous comptez l'utiliser.
La sérialisation est une fonction intégrée de nombreux langages et environnements - par exemple Java et Python . Dans les langages de niveau inférieur comme C et C ++, il faut utiliser (ou écrire) des bibliothèques de sérialisation , car le mécanisme fourni par le langage n'est généralement pas assez bon - il ne peut pas suivre ou sérialiser des pointeurs et des références, et est sujet à des problèmes d'endianité, pour exemple.
Wikipedia a un article décent sur la sérialisation.
La sérialisation est largement utilisée dans les jeux (et tous les logiciels) à de nombreuses fins:
- Chargement de la liste de tous les sorts du jeu à partir des fichiers de ressources.
- Sauvegarde et chargement du jeu.
- Enregistrement de l'état des choses (par exemple, positions des joueurs et inventaires) dans une base de données SQL ou objet.
- Appel d'appels de fonction à distance sur un réseau ou une autre liaison IPC.