Modèles à Objet et Sérialisation Olivier Chamla & François Chastanet
Chamla, Chastanet
6 Novembre 2000 page 4/10
Les mécanismes de sérialisation donnent un aperçu de la structure d’un objet inconnu
dont une base de donnée pourrait faire usage.
La sérialisation est souvent utilisée pour sauvegarder l’état d’une application.
Malheureusement les objets sérialisés sont fragiles, et sont sensibles aux changements que
l’on peut apporter à la structure d’une classe(par exemple si on rajoute un attribut). Donc
XML, apporte une alternative : c’est un fichier ASCII, humainement lisible et éditable,
qui est capable de contenir les données d’un objet. Donc si le logiciel « plante », cela
peut-être un moyen de récupérer ses données facilement, plutôt que d’avoir à utiliser des
méthodes sur les objets pour récupérer ces données. (cf. http://casbah.org/Scarab/xml-
serialization.html)
2. CORBA et le passage par valeur
2.1. Introduction
Jusqu'à la sortie de la norme 3.0, CORBA n'autorisait qu'un passage par référence,
pour l'appel de méthodes sur des objets distants. Le passage par valeur (spécifiée depuis
fin 98) est utile lorsque la première vocation de l'objet est l'encapsulation de données, ou
qu'une application veuille explicitement faire une copie de l'objet. Le passage par valeur
n'était pas possible avec CORBA mais avec RMI car RMI est un solution entièrement
Java alors que CORBA est indépendant du langage.
En effet , le problème est que des langages cibles de CORBA (comme C++) n'autorise
pas le chargement dynamique des classes à l'exécution . La solution CORBA consiste à ne
passer que l'état de l'objet et pas l'implémentation, qui doit exister en local.
2.2. Mécanisme
Si on veut invoquer une méthode sur un objet distant, le code d'implémentation de cet
objet est sérialisé et transporté par le réseau jusqu'au client qui crée l'objet en recopiant
l'état de l'objet distant, puis la méthode est exécutée localement.
Une fois le passage(sérialisation+transport) fini et que l'objet a été instancié chez le
client, il n'y a plus de relation entre l'objet distant et l'objet local.
Si l'implémentation locale n'est pas valide par rapport à l'implémentation distante,
celle-ci est téléchargée.
Il y a deux sortes de "Value Type":
- Concret (stateful): Les informations qui sont contenues par le serveur sont sérialisées
- Abstrait (stateless): équivalent aux classes abstraites, l'avantage est que le code est
exécuté sur le client.
2.3. Prospectives
Les spécifications du passage par valeur ajoute à CORBA la possibilité de définir des
objets qui peuvent être passés par valeur plutôt que par référence. L'approche