La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Communication entre processus From Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 3, © Addison-Wesley 2001 Chapitre.

Présentations similaires


Présentation au sujet: "Communication entre processus From Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 3, © Addison-Wesley 2001 Chapitre."— Transcription de la présentation:

1 Communication entre processus From Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 3, © Addison-Wesley 2001 Chapitre 4

2 Plan zCaractéristiques des protocoles de communication entre processus dans un système réparti yPrincipes généraux ycommunication xpar datagrammes Client-serveur Communication de groupe xpar flots (streams) Client-serveur yconstruction de protocoles pour les patterns de communication xclient-serveur : requête-réponse xgroupe : même message est envoyé à plusieurs processus ydonnées xreprésentation des objets dans les messages xréférences à des objets distants

3 Des objets aux bits zComment les objets et les structures de données doivent-ils être traduits pour ensuite être transmis dans les messages sur le réseau ? ySérialisation yXML

4 Représentation externe des données zinformation dans les programmes ystructures de données et objets zinformation dans les messages ysuite d ’octets ztous les ordinateurs ne représentent pas les valeurs primitives de la même manière zComment les ordinateurs peuvent-ils s ’échanger des données ?

5 Echange de données zProtocole 1 yles valeurs sont converties en un format externe convenu avant la transmission yà la réception, conversion du format commun dans le format de la machine ypour supporter RMI ou RPC, il faut un format commun (appelé représentation externe des données) zProtocole 2 yles valeurs sont transmises dans le format de l ’émetteur avec une indication du format utilisé yle destinataire convertit les valeurs si nécessaire

6 Marshalling et unmarshalling zMarshalling yTraduction des structures de données et des valeurs primitives en une représentation externe de données zUnmarshalling ygénération de valeurs primitives à partir de leur représentation externe yreconstruction des structures de données zUsages ytransmission dans des messages yentreposage dans des fichiers zActivités réalisées au niveau du middleware

7 Approches zAlternatives yCorba common data representation (CDR) xutilisable dans plusieurs langages ySérialisation xpour usage en Java seulement zReprésentations alternatives ytransformation des données primitives en forme binaire (e.g. Corba CDR et sérialisation) ytransformation des objets en texte (e.g. protocole http)

8 Sérialisation en Java zLe processus qui effectue la désérialisation ne possède pas de connaissance a priori sur les classes des objets à désérialiser ybesoin d ’information sur la classe des objets à désérialiser xnom de la classe xnuméro de version fixé par le programmeur calculé automatiquement ycharger cette classe sur la machine destination

9 Sérialisation zLorsqu ’un objet est sérialisé, tous les objets qu ’il référence sont sérialisés yHandles : référence à un objet dans la forme sérialisée zDésérialisation ys ’assurer qu ’un objet n ’est écrit qu ’une fois ys ’assurer que les références pointent bien vers leur « handle »

10 Algorithme zEncoder le nom de la classe et son numéro de version zEncoder le nombre, les types et noms des variables d ’instance ysi les variables d ’instance appartiennent à de nouvelles classes, réitérer le processus jusqu ’à ce que tous les types et descriptions des variables d ’instance aient été encodés zEcrire les valeurs  les types primitifs sont transcrits dans un format binaire portable à l ’aide des méthodes de java.io.ObjectOutputStream  les chaînes et les caractères sont transcrits via la méthode writeUTF de java.io.ObjectOutputStream xUTF = Universal Transfer Format zLa sérialisation en Java est un procédé générique qui utilise la réflexivité pour trouver le nom de la classe de l ’objet, etc. ypas besoin de créer des fonctions spéciales de marshallisation comme en Corba

11 Rendre les classes sérialisables  La classe doit implémenter java.io.Serializable zLa sérialisation est réalisée par la méthode defaultWriteObject de la classe ObjectOutputStream yclasse de l ’objet ysignature  valeurs de toutes les variables non- transient et non- static zLa désérialisation est réalisée par la méthode defaultReadObject de la classe ObjectInputStream

12 Ajuster la sérialisation private void writeObject(ObjectOutputStream s) throws IOException { s.defaultWriteObject(); // customized serialization code } private void readObject(ObjectInputStream s) throws IOException { s.defaultReadObject(); // customized deserialization code... // followed by code to update the object, if necessary } zgère seulement la sérialisation immédiate de la classe zla sérialisation des superclasses est gérée automatiquement

13 Contrôle explicite de la sérialisation package java.io; public interface Externalizable extends Serializable { public void writeExternal(ObjectOutput out) throws IOException; public void readExternal(ObjectInput in) throws IOException, java.lang.ClassNotFoundException; }  L ’externalisation des superclasses n ’est pas appelée automatiquement

14 Sérialisation : exemple //serializing the object to a file named theTime FileOutputStream out = new FileOutputStream("theTime"); ObjectOutputStream s = new ObjectOutputStream(out); s.writeObject("Today"); // throws a NotSerializableException if it's given an object that is not serializable s.writeObject(new Date()); s.flush(); zhttp://java.sun.com/docs/books/tutorial/essential/io/serializing.html

15 Désérialisation : exemple FileInputStream in = new FileInputStream("theTime"); ObjectInputStream s = new ObjectInputStream(in); String today = (String)s.readObject(); Date date = (Date)s.readObject();

16 Exemple The true serialized form contains additional type markers; h0 and h1 are handles Serialized values Person 3 1934 8-byte version number int year 5 Smith java.lang.String name: 6 London h0 java.lang.String place: h1 Explanation class name, version number number, type and name of instance variables values of instance variables

17 Référence à un objet remote zIdentificateur pour un objet remote valide pour tout le système réparti yinvocation de méthode yparamètre yrésultat de l ’invocation d ’une méthode ztout objet remote ne possède qu ’une seule référence unique à travers le temps et l ’espace zles références remote peuvent être comparées entre elles pour déterminer si elles réfèrent au même objet remote

18 Représentation d ’une référence remote Internet addressport numbertimeobject number interface of remote object 32 bits

19 Adresse vs référence zDurée de vie des objets remote yRMI simple xaussi longtemps que le processus qui les a créés existe xla référence remote peut être utilisée comme adresse de l ’objet remote yrelocalisation des objets dans un processus différent sur un autre ordinateur xla référence remote ne peut pas être utilisée comme adresse de l ’objet remote voir Chapitre 17.2.4


Télécharger ppt "Communication entre processus From Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 3, © Addison-Wesley 2001 Chapitre."

Présentations similaires


Annonces Google