Qu'est-ce que la sérialisation?
En programmation informatique, la sérialisation consiste à transformer une structure de données stockée dans une mémoire locale en un flux d'octets pouvant être transmis sur un réseau ou stocké sur un disque pour être réassemblé et utilisé par un autre programme. La sérialisation peut également être utilisée pour enregistrer l'état d'un objet afin qu'il puisse être rechargé ultérieurement par le même programme. Une utilisation plus complexe de cette fonction consiste à appeler un appel de procédure distante (RPC). , exécutant efficacement une procédure sur un autre ordinateur via un réseau, ce mécanisme permet également la distribution d’objets de données sur un grand système en réseau.
Presque tous les langages informatiques modernes disposent d’un support natif pour la sérialisation ou d’une bibliothèque disponible pour ajouter cette fonctionnalité. Lorsqu'un objet est sérialisé, tous ses champs sont aplatis. Ce processus est également appelé déflation. Les données sont transformées en une ligne d'octets unidimensionnelle pouvant être écrite dans n'importe quel flux de sortie.Le type de flux de sortie n'a pas d'importance et peut être un fichier ou un socket réseau.
Une fois les données sérialisées et envoyées à leur emplacement final, le processus de désérialisation débute. Le programme qui lit le flux d'octets restaure toutes les informations et les place dans une nouvelle instance de l'objet d'origine, créant ainsi une copie exacte: il est important de comprendre que seules les données que l’objet était en possession sont marshalées; L'objet, ses méthodes et les autres données d'implémentation ne le sont pas, ce qui signifie que le programme qui désérialise les données doit pouvoir créer une instance de la classe qui a été sérialisée à l'origine.
La sérialisation de la structure de données peut être utilisée à diverses fins: les informations sur les objets peuvent être stockées sur un support physique, ce qui permet de rétablir l'état exact de chaque objet au point où il se trouvait lorsque l'exécution du programme s'est arrêtée. envoyer des messages à un autre ordinateur qui entraîneront l'exécution d'une procédure à distance.La sérialisation peut même être utilisée pour comparer efficacement les changements d'état dans des applications en temps réel.
Avant d'utiliser la sérialisation d'objet, il est important de comprendre certaines des limitations qu'elle impose, la plus importante étant que, lors du processus de conversion d'un objet en flux d'octets, les champs déclarés comme privés soient exposés. Pendant la transmission du flux, ces données peuvent être capturées et décodées, ce qui constitue une faille de sécurité. La plupart des langues permettent l'externalisation des formats de sérialisation des données, de sorte qu'un codage propriétaire est possible. aider à atténuer ce risque.
Un autre facteur à garder à l'esprit est que la sérialisation ne fonctionnera généralement qu'avec des objets qui sont exactement identiques à l'objet sérialisé. Si de nouveaux champs ou méthodes sont ajoutés à un objet Dans ce cas, la signature de l'objet changera, ce qui signifie que l'objet stocké provoquera une exception et que les données deviendront irrécupérables jusqu'à ce qu'une instance de l'objet non modifié d'origine tente de le restaurer.