209 votes

Qu'est-ce que la sérialisation ?

Je m'initie à la programmation orientée objet (POO) et j'aimerais savoir ce que signifie la sérialisation dans le jargon de la POO.

203voto

Andrew Barnett Points 2324

La sérialisation est le processus qui consiste à transformer un objet en mémoire en un flux d'octets afin de pouvoir le stocker sur un disque ou l'envoyer sur le réseau.

La désérialisation est le processus inverse : transformer un flux d'octets en un objet en mémoire.

123voto

Aniket Thakur Points 10135

En clair Sérialisation est un processus qui consiste à convertir un objet en un flux d'octets afin de pouvoir le transférer sur un réseau ou le stocker dans une mémoire permanente.

La désérialisation est l'exact opposé : récupérer un flux d'octets à partir du réseau ou du stockage de la persistance et le reconvertir en objet. avec le même état .

Ce qu'il faut comprendre, c'est comment ces flux d'octets sont interprétés ou manipulés pour que nous obtenions exactement le même objet/le même état. Il existe plusieurs façons d'y parvenir. En voici quelques-unes

  1. XML : Convertir un objet en XML, le transférer sur un réseau ou le stocker dans un fichier/bd. Récupérez-le et reconvertissez-le en objet avec le même état. En Java, nous utilisons JAXB (Java architecture for XML binding) (à partir de Java 6, elle est fournie avec le JDK).
  2. JSON : Il est possible de faire de même en convertissant l'Objet en JSON (notation JavaScript Object). Là encore, il existe une bibliothèque GSON qui peut être utilisée pour cela.
  3. Ou nous pouvons utiliser la sérialisation qui est fournie par le langage OOP lui-même. Par exemple, en Java, vous pouvez sérialiser un objet en lui faisant implémenter la méthode suivante Serializable interface et écrire dans le flux d'objets.

120voto

BKSpurgeon Points 11129

Qu'est-ce que la sérialisation ?

Explication simple par l'image :

Rex, my dog, is serialised!

Résumé :

La sérialisation consiste à transformer quelque chose (par exemple mon chien Rex) en une série de 1 et de 0 - qui peuvent être transportés sur la ligne téléphonique, stockés en mémoire. Mes amis à l'étranger peuvent ensuite retranscrire ces 1 et 0 en une représentation parfaite d'un chiot (dé-sérialisation) afin de pouvoir profiter de la compagnie de Rex.

Clarification de l'analogie

Mes amis, ceci est une analogie. Je ne pense pas que vous puissiez réellement sérialiser un chiot LOL . Vous sérialisez une structure de données, ou tout autre objet complexe. (J'ai écrit cette réponse pour que vous puissiez comprendre le concept, de manière ludique, en moins de 10 secondes, sans vous casser la tête contre une définition technique encyclopédique. Mais si vous en préférez une, allez voir : ce lien Wikipedia ).

21voto

Andy White Points 36586

Regardez ceci, cela vous donnera une bonne explication :

http://en.wikipedia.org/wiki/Serialization

Je pense que l'utilisation la plus courante du terme sérialisation concerne la conversion d'un objet binaire en une représentation XML (ou autre chaîne de caractères) afin qu'il puisse être stocké dans une base de données/un fichier ou envoyé sur un réseau dans un appel de service Web. La désérialisation est le processus inverse - la reconversion d'une chaîne de caractères XML en un objet.

EDIT : Un autre terme que vous pourriez rencontrer est marshalling/unmarshalling. Marshalling est fondamentalement le même concept que la sérialisation, et unmarshalling est le même que la désérialisation.

16voto

La sérialisation est le processus qui consiste à convertir un objet en un flux d'octets pour stocker l'objet ou le transmettre en mémoire, dans une base de données ou dans un fichier. Son principal objectif est de sauvegarder l'état d'un objet afin de pouvoir le recréer en cas de besoin. Le processus inverse est appelé désérialisation.

...

Cette illustration montre le processus global de la sérialisation

Overall process of serialization

...

Grâce à la sérialisation, un développeur peut effectuer des actions telles que l'envoi d'un objet à une application distante au moyen d'un service Web, le passage d'un objet d'un domaine à un autre, le passage d'un objet à travers un pare-feu sous la forme d'une chaîne XML, ou le maintien de la sécurité ou d'informations spécifiques à l'utilisateur entre les applications.

De https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/serialization/

(c'est moi qui souligne)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X