Sérialisation - Définition

Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

Désérialisation

La désérialisation pose également un certain nombre de problèmes comme la réanimation d'objet non mutable. Les objets ne peuvent pas être utilisés pendant la désérialisation

La désérialisation pose aussi des problèmes de sûreté du typage.

Sécurité

La désérialisation nécessite l'interprétation de données qui peuvent venir d'une source qui est hors de contrôle. La sérialisation peut aussi entraîner l'exposition de données privées.

Parcours d'un graphe d'objets

C'est une problématique qui est assez commune et que l'on retrouve par exemple quand on cherche à mettre en œuvre un clonage ou un ramasse-miettes.

Des algorithmes plus ou moins performants peuvent être choisis suivant les a priori que l'on peut faire sur la topologie du graphe :

  • arbre
  • graphe uniquement connecté aux feuilles
  • graphe quelconque

Parcours manuel

Dans le cas général il est nécessaire de mémoriser les objets parcourus pour détecter les cycles.

Ce n'est pas une bonne idée d'utiliser les objets eux-mêmes pour pointer leur statut visité:

  • la méthode de sérialisation se met à muter les objets, ce qui perturbe les optimisations de type Copy-On-Write utilisé par exemple lors d'un fork sous UNIX.
  • cela pose des problèmes de réentrance

Il est préférable d'utiliser une table de hashage (adresse de l'objet, compteur) qui sera par ailleurs utilisée pour mettre en œuvre la mutation de pointeur. Il faut alors veiller à retenir chaque objet pour éviter les collisions d'adresses avec de nouveaux objets.

Parcours par introspection

Les langages qui supportent l'introspection peuvent fournir un mécanisme de sérialisation par défaut.

Alternatives

La sérialisation est un mécanisme de codage atomique : il n'est pas destiné à permettre d'accéder à un fragment des données sans avoir tout décodé.

Il existe des mécanismes comme NSKeyedArchiver de la bibliothèque Cocoa qui permet une réanimation partielle des objets. Il se rapprochent des systèmes de base de données.

Gestion des versions

Il est souvent nécessaire de garantir une compatibilité ascendante ou descendante, c’est-à-dire la possibilité de relire ses données avec une nouvelle version du logiciel ou de permettre à une ancienne version du logiciel de lire des données créées à partir d'une version plus récente. Cela nécessite d'une part un mode de versionnage qui permet de connaître les versions compatibles et un moyen pour les versions les plus anciennes d'ignorer les données qu'elle ne savent pas interpréter.

Page générée en 0.065 seconde(s) - site hébergé chez Contabo
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
A propos - Informations légales
Version anglaise | Version allemande | Version espagnole | Version portugaise