Qu'est-ce qu'un objet "sérialisé" en programmation?

J'ai vu le terme "sérialisé" partout, mais jamais expliqué. Veuillez expliquer ce que cela signifie.

32
demandé sur sth 2010-01-31 08:39:42

6 réponses

La sérialisation fait généralement référence au processus de conversion d'un type de données abstrait en un flux d'octets (vous sérialisez parfois en texte, XML ou CSV ou d'autres formats. L'important est que c'est un format simple qui peut être lu/écrit sans comprendre les objets abstraits que les données représentent). Lors de l'enregistrement de données dans un fichier ou de la transmission sur un réseau, vous ne pouvez pas simplement stocker un objet MyClass, Vous ne pouvez stocker que des octets. Vous devez donc prendre toutes les données nécessaires pour reconstruisez votre objet et transformez-le en une séquence d'octets qui peuvent être écrits sur le périphérique de destination, puis lus et désérialisés, reconstruisant votre objet.

42
répondu jalf 2010-01-31 05:47:47

La sérialisation est le processus consistant à prendre une instance d'objet et à la convertir en un format dans lequel elle peut être transportée sur un réseau ou conservée dans un stockage (tel qu'un fichier ou une base de données). Le format sérialisé contient les informations d'état de l'objet.

La désérialisation est le processus d'utilisation de l'état sérialisé pour reconstruire l'objet de l'état sérialisé à son état d'origine.

10
répondu Mitch Wheat 2010-01-31 05:45:11

Véritable explication simple, la sérialisation est l'acte de prendre quelque chose qui est en mémoire comme une instance d'une classe (objet) et de se transformer en une structure adaptée au transport ou au stockage.

Un exemple commun est la sérialisation XML pour une utilisation dans les services web - j'ai une instance d'une classe sur le serveur et je dois l'envoyer sur le web, Je la sérialise d'abord en xml ce qui signifie créer une version xml de ces données dans la classe, une fois en xml je peux utiliser un transport pour envoyer facilement.

Il existe plusieurs formes de sérialisation comme XML ou JSON.

5
répondu keithwarren7 2010-01-31 05:45:40

Il y a (au moins) deux significations complètement différentes à la sérialisation. On transforme une structure de données en mémoire en un flux de bits, de sorte qu'il peut être écrit sur le disque et reconstitué plus tard, ou transmis sur une connexion réseau et utilisé sur une autre machine, etc.

L'autre signification concerne l'exécution série VS parallèle - c'est-à-dire s'assurer qu'un seul thread d'exécution fait quelque chose à la fois. Par exemple, si vous voulez lire, modifier et écrire une variable, vous devez assurez - vous qu'un thread complète une séquence de lecture, de modification et d'écriture avant qu'un autre ne puisse la démarrer.

4
répondu Jerry Coffin 2010-01-31 05:50:00

Ce qu'ils ont dit. Le mot "série" fait référence au fait que les octets de données doivent être placés dans un ordre normalisé pour être écrits sur un périphérique de stockage série, comme un flux de sortie de fichier ou un bus série. En pratique, les octets bruts suffisent rarement. Par exemple, une adresse mémoire du programme qui sérialise la structure de données peut être invalide dans le programme qui reconstruit l'objet à partir des données stockées. Ainsi, un protocole est nécessaire. Il y a eu beaucoup, beaucoup de normes et de mises en œuvre au fil des ans. Je me souviens d'un du milieu des années 80 appelé XDR, mais ce n'était pas le premier.

2
répondu Jive Dadson 2010-01-31 05:58:06
  • vous avez des données dans un certain format (par exemple Liste, carte,objet, etc.)
  • vous voulez transporter ces données (par exemple via une API ou un appel de fonction)
  • le moyen de transport ne prend en charge que certains types de données (par exemple JSON, XML, etc.)
  • sérialisation : vous convertissez vos données existantes en un type de données pris en charge afin qu'elles puissent être transportées.

La clé est que vous avez besoin de transporter des données et les moyens par lesquels vous transportez ne permet que certains formats. Votre le format de données actuel n'est pas autorisé, vous devez donc le "sérialiser". D'où comme Mitch a répondu:

La sérialisation est le processus consistant à prendre une instance d'objet et à la convertir en un format dans lequel elle peut être transportée.

0
répondu Brady Dowling 2017-08-13 21:01:43