O que é serialização?
Na programação de computadores, serialização é o processo de pegar uma estrutura de dados armazenada na memória local e transformá-la em um fluxo de bytes que pode ser transmitido por uma rede ou armazenado em um disco para ser remontado e usado por outro programa. A serialização também pode ser usada para salvar o estado de um objeto, para que possa ser recarregado posteriormente pelo mesmo programa.Um uso mais complexo dessa função é invocar uma chamada de procedimento remoto (RPC) , executando efetivamente um procedimento em outro computador através de uma rede.Este mecanismo também permite a distribuição de objetos de dados em um grande sistema em rede.
Quase todas as linguagens de computador modernas têm suporte nativo para serialização ou uma biblioteca disponível para adicionar essa funcionalidade.Quando um objeto é serializado, todos os campos dele são achatados.Este processo também é conhecido como deflação Os dados são transformados em uma linha unidimensional de bytes que pode ser gravada em qualquer fluxo de saída. O tipo de fluxo de saída não importa e pode ser um arquivo ou um soquete de rede.
Depois que os dados são serializados e enviados para seu local final, o processo de desserialização começa.O programa que lê o fluxo de bytes restaura todas as informações e as coloca em uma nova instância do objeto original, criando um cópia exata.É importante entender que apenas os dados que o objeto estava segurando são empacotados; o objeto e seus métodos e outros dados de implementação não. Isso significa que o programa que desserializa os dados deve poder criar uma instância da classe que foi originalmente serializada.
A serialização da estrutura de dados pode ser usada para vários propósitos: as informações do objeto podem ser armazenadas na mídia física, para que o estado exato de cada objeto possa ser restaurado no ponto em que estava quando a execução do programa foi interrompida. envie mensagens para outro computador que fará com que um procedimento remoto seja executado.A serialização pode até ser usada para comparar com eficiência alterações de estado em aplicativos em tempo real.
Antes de usar a serialização de objetos, é importante entender algumas das limitações que impõe.O mais importante é que, através do processo de conversão de um objeto em um fluxo de bytes, os campos declarados como privados serão expostos Durante a transmissão do fluxo, esses dados podem ser capturados e decodificados, apresentando uma brecha na segurança.A maioria das linguagens permite a externalização dos formatos de serialização de dados, possibilitando a codificação proprietária. ajudar a mitigar esse risco.
Outro fator a ter em mente é que a serialização, em geral, funcionará apenas com objetos exatamente iguais ao objeto serializado.Se novos campos ou métodos forem adicionados a um objeto , a assinatura do objeto será alterada, o que significa que o objeto armazenado causará uma exceção e os dados ficarão irrecuperáveis até que uma instância do objeto original não modificado tente restaurá-lo.