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

Slides:



Advertisements
Présentations similaires
Sérialisation des objets
Advertisements

Le mécanisme des exceptions
Flots et Sérialisation des objets
A propos de java Sun, fin 1995 C++ nettoyé semi-interprété
Au programme du jour …. Ce que vous navez pas encore vu Constantes et variables de classe Main et Tests Utilisation de lAPI Existence des packages Existence.
Au programme du jour …. Introduction à lhéritage Un concept important de la programmation objet Livraison de code Organisation des répertoires et packages.
Retour sur RMI.
1 Plan de lenseignement Cours Introduction au réseau via les objets distants (Application à RMI) Ce que cache RMI : programmation socket – mode connecté
Java et la réflexivité.
Java et la réflexivité. Java reflection is useful because it supports dynamic retrieval of information about classes and data structures by name, and.
ESSI AM Dery Merci à Rémi Vankeisbelck, Michel Riveill etc
Java et la réflexivité. Java reflection is useful because it supports dynamic retrieval of information about classes and data structures by name, and.
La classe String Attention ce n’est pas un type de base. Il s'agit d'une classe défini dans l’API Java (Dans le package java.lang) String s="aaa"; // s.
Introduction aux applications réparties
Exposé de Système - Informatique et Réseau
(Classes prédéfinies – API Java)
Plan du cours La sérialisation: – comment stocker et restaurer les Objets? Les interfaces graphiques et la programmation évènementielle. –Comment concevoir.
Cours 6 : XML et les architectures N-tiers – Tier Applicatif
Programmer en JAVA par Tama
LICENCE MIAGE Introduction Programmation Orientée Objet JAVA philippe
Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV1 JAV – TD 5 Lhéritage en Java.
Programmation par Objets et Java
Introduction aux services WEB
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Common Gateway Interface
Outils de tests, logs et documentation Frédéric Moalannée 2010/2011 POO.
Etude des Technologies du Web services
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
Langage Oriente Objet Cours 4.
SERVLETS PRESENTATION
Principes de programmation (suite)
Système d’Exploitation
Communication entre processus - TCP From Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 3, © Addison-Wesley 2001 Chapitre.
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
COURS DE PROGRAMMATION ORIENTEE OBJET :
COURS DE PROGRAMMATION ORIENTEE OBJET :
99 Réutilisation du code grâce à l'héritage. 9-2 Objectifs À la fin de ce cours, vous serez capables de : Définir l'héritage Utiliser l'héritage pour.
1111 Gestion des exceptions Objectifs À la fin de ce cours, vous serez capables de : • Expliquer les concepts de base de la gestion des exceptions.
1212 Entrée et sortie de fichiers Objectifs À la fin de ce cours, vous serez capables de : • Lire à partir de la console • Écrire sur la console.
J201 (JOC) Java Avancé juin 2007 ~ Brigitte Groléas ~
Objectifs À la fin de ce cours, vous serez capables de :
Communication entre processus From Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 3, © Addison-Wesley 2001 Chapitre.
1 Fichers Binaires, Accès Direct et Objets. 2 Données binaires. Il s'agit ici de lire et écrire des données binaires par opposition à du texte. Pour ce.
Mastère MIAGE, Compléments de RMI. Mastère MIAGE, Passage de paramètres Le but de RMI est de masquer la distribution Idéalement, Il faudrait.
LIFI-Java 2004 Séance du Mercredi 22 sept. Cours 3.
Communication entre processus From Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 3, © Addison-Wesley 2001 Chapitre.
Factory Design Patterns. Contents Factory patterns: principesFactory patterns: principes The Factory Method patternThe Factory Method pattern The Abstract.
JavaScript.
Variables et accès en Java. Déclaration des variables final transient static private Printer hp; transient => ne doivent pas être sérialisées volatile.
Cours Les flux ou streams. Cours 162 Flux : objet possédant des méthodes capables de lire ou écrire des flots d’octets sur tout support (mémoire,
Systèmes distribués Plusieurs technologies existent : Les sockets
CEG3585/CEG3555 Tutorat 2 Hi ver 2013.
Services Web From Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 4, © Addison-Wesley 2005.
Entrées / Sorties.
Les sockets.
Schéma de conception Factory Method Exemple Sylvain Giroux.
1 Chapitre III (~70 transparents) Compléments. 2 Au sommaire de ce chapitre 1. Les fichiers Les classes utilitaires
Ingénierie des réseaux - Chapitre 2 bis Les sockets en Java
Héritage Conception par Objet et programmation Java
Java RMI: Remote Method Invocation
Communication entre processus - Threads
Les Servlets Présentation Cycle de vie Principe de fonctionnement
Architecture Client/Serveur
Fabrice Huet Systèmes Distribués Fabrice Huet
Modèle à objets et sérialisation Olivier ChamlaFrançois Chastanet.
Java Remote Method Invocation
BlueJ_VII 1 Java, les objets : tout de suite ! Conception de classes (1) Notes de cours associées au chapitre 7 tutorial BlueJ
BlueJ_III 1 Java, les objets : tout de suite ! Interaction entre objets Notes de cours associées au chapitre 3 tutorial BlueJ
Transcription de la présentation:

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

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

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

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 ?

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

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

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)

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

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 »

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

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

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

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

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

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

Exemple The true serialized form contains additional type markers; h0 and h1 are handles Serialized values Person 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

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

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

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