web-dev-qa-db-fra.com

Qu'est ce que la sérialisation?

Je commence à utiliser OOP - et souhaite savoir quel est le sens de la sérialisation dans OOP langage

104
edward

La sérialisation consiste à transformer un objet en mémoire en un flux d'octets afin que vous puissiez effectuer des tâches telles que 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.

107
Andrew Barnett

En termes simples Sérialisation est un processus de conversion d'un objet en flux d'octets afin qu'il puisse être transferred over a network or stored in a persistent storage

La désérialisation est exactement opposée - Extrayez un flux d'octets du stockage réseau ou de la persistance et reconvertissez-le en objet avec le même état .

La seule chose à comprendre maintenant est de savoir comment ces flux d'octets sont interprétés ou manipulés de manière à obtenir exactement le même objet/le même état. Il y a différentes façons d'y parvenir. Certains d'entre eux sont - 

  1. XML: Convertit un objet en XML, le transfère sur un réseau ou le stocke dans un fichier/db. Récupérez-le et reconvertissez-le en objet ayant le même état. En Java, nous utilisons la bibliothèqueJAXB(architecture Java pour la liaison XML) (à partir de Java 6, elle est fournie avec JDK).
  2. JSON: La même chose peut être obtenue en convertissant l'objet enJSON(notation d'objet Javascript). Là encore, il existe une bibliothèque GSON qui peut être utilisée pour cela.
  3. Ou nous pouvons utiliser la sérialisation fournie par le langage OOP lui-même. Pour par exemple. en Java, vous pouvez sérialiser un objet en le faisant implémenter Serializable interface et en écrivant dans Object Stream.
63
Aniket Thakur

Explication via l'image:

 Rex, my dog, is serialised!

Explication par analogie:

Supposons que je parle au téléphone avec mon copain et que je lui parle de mon nouveau chiot.

Voici mon problème: le chiot est un mammifère vivant et respirant. Comment suis-je censé transmettre un chiot par la ligne téléphonique? Je ne peux pas physiquement mettre mon chiot dans le récepteur de mon téléphone.

Donc, au lieu de cela, je vais devoir transmettre une représentation du chiot au téléphone. En d'autres termes, je sérialise ensuite mon chien Rex et lui envoie la version sérialisée de Rex par la ligne téléphonique: 

{ "name":"Rex", "age":5, "favourite_food": pedigree_choice_cuts, "favourite_game": fetch_ball, "favourite_hobby": wagging_tail }

C'est une représentation parfaite - une sérialisation de mon chien.

Résumé:

La sérialisation signifie essentiellement transformer mon chien Rex en quelque chose d'autre - un objet JSON - qui peut ensuite être transporté sur la ligne téléphonique sous forme d'une série de 1 et de 0. Mon ami à New York peut ensuite traduire ces 1 et ces 0 en un objet JSON - afin qu’il ait une représentation parfaite de mon chien Rex. Simple!

26
BKSpurgeon

Regarde ça, ça te 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) afin qu'il puisse être stocké dans une base de données/fichier ou envoyé sur un réseau lors d'un appel de service Web. La désérialisation est le processus inverse - reconvertir un XML/une chaîne en objet.

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

14
Andy White

Sérialisation est le processus de conversion de données non ordonnées (telles qu'un objet) en une série série de jetons pouvant être utilisés ultérieurement pour reconstruire les données d'origine. La forme sérialisée est le plus souvent une chaîne de texte, mais ne doit pas nécessairement l'être.

5
Dave Sherohman

La sérialisation est le processus de conversion d'un objet en un flux d'octets pour le stocker ou le transmettre} en mémoire, une base de données ou un fichier. Son but principal est de sauvegarder l'état d'un objet afin de pouvoir le recréer à tout moment. Le processus inverse s'appelle la désérialisation.

...

Cette illustration montre l’ensemble du processus de sérialisation

 Overall process of serialization

...

Grâce à la sérialisation, un développeur peut effectuer des actions telles qu'envoyer l'objet à une application distante au moyen d'un service Web, en passant d'un objet à un autre, en passant un objet à travers un pare-feu sous forme de chaîne XML ou en maintenant une sécurité ou des paramètres spécifiques à l'utilisateur. informations sur les applications

(c'est moi qui souligne)

Pour plus d'informations, cochez cette case

4

la sérialisation convertit un objet en séquence de bits stockable.

afin que vous puissiez enregistrer cette séquence dans un fichier, db ou envoyer sur le réseau.

plus tard, vous pourrez le désérialiser sur l’objet réel et le réutiliser à tout moment.

Services Web etAJAXest l'exemple le plus courant de la sérialisation. Les objets sont sérialisés avant d’envoyer la réponse au client.

2
Canavar

la sérialisation n'est rien d'autre que le transfert de l'objet pris en charge par Java dans un formulaire pris en charge par un fichier

                         (OR)

conversion de la forme supportée par Java en forme supportée par le réseau .. le principal objectif de la sérialisation n’est que de transférer les données d’un calque à un autre ... uniquement des objets sérialisés que nous pouvons envoyer sur le réseau.

2
sriiii

La sérialisation est le processus de conversion d'un objet pris en charge par Java, C # ou tout autre objet pris en charge (langages POO) en une forme transportable. De cette façon, il peut être transporté sur le réseau ou stocké sur un disque. Pour qu'une classe soit sérialisable, elle doit implémenter une interface sérialisable.

1
Nesan Mano

La sérialisation a lieu lorsqu'un objet (un bloc de mémoire) est traduit sous une forme lorsque son état peut être enregistré dans un fichier (à titre d'exemple).

Traitez-le simplement comme si vous faisiez des biscuits - un objet est une pâte, un biscuit - est une pâte sérialisée.

Donc, en "sérialisant", vous pouvez envoyer un cookie à votre ami.

Quelque chose comme ca :-)

1
Mr.ElectroNick

La sérialisation est le processus de conversion d'un objet en flux de données binaires afin qu'il puisse être stocké dans un fichier ou envoyé sur un réseau où il peut être ressuscité sur le même objet.

Ce document devrait vous aider à comprendre la sérialisation Java en détail.

0
Nikhil Katre

Lors de l'instanciation (construction) de l'objet réel (la chose) à partir d'une classe (plan directeur), il est nécessaire de sauvegarder l'objet (chose) en le sérialisant (en le décomposant en sa structure atomique de base) dans un espace en mémoire. (Un peu comme Star Treks Transporter). Vous divisez la chose en flux d'informations pouvant être transportées et stockées quelque part. Ensuite, lorsque vous souhaitez reconstruire l'élément, vous devez simplement extraire l'instance stockée de manière atomique dans l'objet. Différent de l'instanciation. 

0
David K Hill

la sérialisation consiste à convertir un objet binaire en une représentation XML (ou une autre chaîne) 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 - reconvertir un XML/une chaîne en objet.

0
viswanathan

La sérialisation transforme les données en une "chaîne" d'octets linéaire.

D'autres ont dit plus ou moins la même chose, mais j'insiste sur le fait que les modèles informatiques exigent que les données tiennent dans le stockage à une dimension RAM ou persistant.

La plupart des choses qui sont des "données" sont intrinsèquement sérialisables (même si vous devez réduire le modèle abstrait à un modèle linéaire); Par exemple, une connexion réseau ou une machine à états compliquée comme un analyseur syntaxique ne sont pas sérialisables.

0
Overflown