De la documentación de boost.serialization : Aquí, usamos el término "serialización" para referirnos a la deconstrucción reversible de un conjunto arbitrario de estructuras de datos de C ++ en una secuencia de bytes. Tal sistema puede usarse para reconstituir una estructura equivalente en otro contexto de programa. Dependiendo del contexto, esto podría usarse para implementar la persistencia de objetos, el paso remoto de parámetros u otra facilidad. En este sistema usamos el término "archivo" para referirnos a una representación específica de este flujo de bytes. Esto podría ser un archivo de datos binarios, datos de texto, XML o algún otro creado por el usuario de esta biblioteca.
En otras palabras, la serialización es cualquier proceso que transforma objetos en la memoria en algún tipo de bytestream, y la deserialización hace lo contrario, toma un bytestream y lo transforma de nuevo en objetos en la memoria.
El término "serialización" no implica nada sobre el formato de bytestream. Puede ser un formato binario empaquetado eficientemente, o una descripción XML o YAML suelta. Incluso puede ser el código fuente en el lenguaje original, o en otro lenguaje de programación, como JSON , que es un subconjunto de JavaScript. El formato exacto de la secuencia serializada debe elegirse en función de cómo pretende utilizarlo.
La serialización es una característica incorporada de muchos lenguajes y entornos, por ejemplo, Java y Python . En lenguajes de nivel inferior como C y C ++, uno debe usar (o escribir) bibliotecas de serialización , ya que el mecanismo proporcionado por el lenguaje generalmente no es lo suficientemente bueno: no puede seguir o serializar punteros y referencias, y está sujeto a problemas de endianness, por ejemplo.
Wikipedia tiene un artículo decente sobre serialización.
La serialización se usa ampliamente en los juegos (y en todo el software) para muchos propósitos:
- Cargando la lista de todos los hechizos en el juego desde archivos de recursos.
- Guardando y cargando el juego.
- Grabar el estado de las cosas (por ejemplo, posiciones e inventarios de jugadores) en una base de datos SQL o de objetos.
- Invocar llamadas a funciones remotas a través de una red u otro enlace IPC.