Da documentação do boost.serialization : Aqui, usamos o termo "serialização" para significar a desconstrução reversível de um conjunto arbitrário de estruturas de dados C ++ em uma sequência de bytes. Esse sistema pode ser usado para reconstituir uma estrutura equivalente em outro contexto de programa. Dependendo do contexto, isso pode ser usado para implementar persistência de objetos, passagem remota de parâmetros ou outro recurso. Neste sistema, usamos o termo "archive" para nos referirmos a uma renderização específica desse fluxo de bytes. Pode ser um arquivo de dados binários, dados de texto, XML ou algum outro criado pelo usuário desta biblioteca.
Em outras palavras, serialização é qualquer processo que transforma objetos na memória em algum tipo de bytestream, e a desserialização faz o inverso, pegando um bytestream e transformando-o novamente em objetos na memória.
O termo "serialização" não implica nada no formato do bytestream. Pode ser um formato binário empacotado com eficiência ou uma descrição XML ou YAML solta. Pode até ser o código-fonte na própria linguagem original ou em outra linguagem de programação, como JSON , que é um subconjunto de JavaScript. O formato exato do fluxo serializado deve ser escolhido com base em como você pretende usá-lo.
A serialização é um recurso interno de muitas linguagens e ambientes - por exemplo, Java e Python . Em linguagens de nível inferior, como C e C ++, é necessário usar (ou escrever) bibliotecas de serialização , pois o mecanismo fornecido pela linguagem geralmente não é bom o suficiente - ele não pode seguir ou serializar ponteiros e referências e está sujeito a problemas de endianness, por exemplo.
A Wikipedia tem um artigo decente sobre serialização.
A serialização é usada extensivamente em jogos (e todos os softwares) para muitos propósitos:
- Carregando a lista de todos os feitiços no jogo a partir de arquivos de recursos.
- Salvando e carregando o jogo.
- Gravando o estado das coisas (por exemplo, posições e inventários de jogadores) em um banco de dados SQL ou de objeto.
- Chamada de funções remotas através de uma rede ou outro link IPC.