Modèle client-serveur

Documents pareils
RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

Modèle client-serveur Plan. Modèle client-serveur. Modèle client-serveur définition. Modèle client-serveur communication par messages.

Remote Method Invocation (RMI)

Remote Method Invocation en Java (RMI)

RMI le langage Java XII-1 JMF

Programmation répartie RPC & RMI

Intergiciel - concepts de base

Remote Method Invocation Les classes implémentant Serializable

Calcul Parallèle. Cours 5 - JAVA RMI

Java RMI. Arnaud Labourel Courriel: Université de Provence. 8 mars 2011

Conception de serveurs d'applications ouverts

Introduction aux applications réparties

Java - RMI Remote Method Invocation. Java - RMI

[APPLICATON REPARTIE DE VENTE AUX ENCHERES]

Dis papa, c est quoi un bus logiciel réparti?

Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle

Projet gestion d'objets dupliqués

Java Naming and Directory Interface

Programmation Objet Java Correction

Programmation réseau avec Java. 3/7 RMI, un peu de sécurité et CORBA

GEI 465 : Systèmes répartis

Introduction à CORBA

TP1 : Initiation à Java et Eclipse

Gestion distribuée (par sockets) de banque en Java

Etude critique de mécanismes de sécurité pour l architecture Jini

Généralités sur le Langage Java et éléments syntaxiques.

Développement, déploiement et sécurisation d'applications JEE

Systèmes répartis. Fabrice Rossi Université Paris-IX Dauphine. Systèmes répartis p.1/49

CORBA haute performance

Manuel d implémentation des Web Services Sous Axis1 et Axis2/Tomcat/linux. Par Pr Bouabid EL OUAHIDI

OS Réseaux et Programmation Système - C5

Synchro et Threads Java TM

Auto-évaluation Programmation en Java

Java DataBaseConnectivity

Traitement de données

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Étude de l interopérabilité de deux langages de programmation basée sur la machine virtuelle de Java

Plan du cours. Historique du langage Nouveautés de Java 7

TP1. Outils Java Eléments de correction

Héritage presque multiple en Java (1/2)

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Corrigé des exercices sur les références

2 Chapitre 1 Introduction

Cours 1: Java et les objets

Intergiciels pour la répartition CORBA : Common Object Request Broker. Patrice Torguet torguet@irit.fr Université Paul Sabatier

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

La JVM. La machine virtuelle Java. La JVM. La JVM

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

Chapitre 10. Les interfaces Comparable et Comparator 1

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

ACTIVITÉ DE PROGRAMMATION

Le modèle client-serveur

Programmer en JAVA. par Tama

Architecture applicative et Cartographie

Chapitre 2. Classes et objets

Présentation de Java. Olivier de Pertat IT GROUP

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Tp 1 correction. Structures de données (IF2)

Le passage à l échelle de serveur J2EE : le cas des EJB

Premiers Pas en Programmation Objet : les Classes et les Objets

Programmation par composants (1/3) Programmation par composants (2/3)

Initiation à JAVA et à la programmation objet.

Java 1.5 : principales nouveautés

Composants Logiciels. Le modèle de composant de CORBA. Plan

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

Chapitre I Notions de base et outils de travail

Programmation par les Objets en Java

Architectures n-tiers Intergiciels à objets et services web

Implementing a simple RMI Application over the Internet (using and comparing HTTP tunneling, RMI Proxy)

Système de Virtualisation pour une application de gestion commerciale d entreprise

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

.NET remoting. Plan. Principes de.net Remoting

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

Plan du cours. Autres modèles pour les applications réparties Introduction. Mode de travail. Introduction

Java c est quoi? Java pourquoi?

Programmation répartie: Objet distribué. CORBA (Common Object Request Broker Architectur)

Architecture Orientée Service, JSON et API REST

CORBA. (Common Request Broker Architecture)

Création d une application JEE

Software Engineering and Middleware A Roadmap

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

Introduction aux intergiciels

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Objets et Programmation. origine des langages orientés-objet

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

RN2-Programmation Orientée Objet - JAVA CH 1 Introduction à la POO et Java

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Mise en œuvre des serveurs d application

NFP111 Systèmes et Applications Réparties

Services OSI. if G.Beuchot. Services Application Services Présentation - Session Services Transport - Réseaux - Liaison de Données - Physique

Package Java.util Classe générique

Transcription:

Modèle client-serveur Daniel Hagimont IRIT/ENSEEIHT 2 rue Charles Camichel - BP 7122 31071 TOULOUSE CEDEX 7 Daniel.Hagimont@enseeiht.fr http://hagimont.perso.enseeiht.fr 1

Plan Principes généraux Modèle client-serveur Appel de procédure à distance (Remote Procedure Call) Application dans l'environnement Java Java Remote Method Invocation (RMI) 2

Modèle client-serveur Définition Application client/serveur application qui fait appel à des services distants au travers d un échange de messages (les requêtes) plutôt que par un partage de données (mémoire ou fichiers) serveur programme offrant un service sur un réseau (par extension, machine offrant un service) client programme qui émet des requêtes (ou demandes de service). Il est toujours l initiateur du dialogue 3

Modèle client-serveur Communication par messages Deux messages (au moins) échangés Le premier message correspondant à la requête est celui de l'appel de procédure, porteur des paramètres d'appel. Le second message correspondant à la réponse est celui du retour de procédure porteur des paramètres résultats. appel n_proc (p_in, p_out) Appel(p_in) Procédure n_proc (p_in, p_out) begin Retour(p_out) end client serveur 4

Modèle client-serveur Principe Vu du client client Vu du serveur Gestion des requêtes (priorité) Requête Réponse Exécution du service (séquentiel, concurrent) Mémorisation ou non de l'état du client Service distant Requêtes Sélection Traitement Réponses 5

Différents types de service Pas de modification de données rémanentes sur le serveur ex: calcul fonction ou lecture donnée Modification du contexte d exécution sur le site distant ex: serveur de fichiers ou d'objets problèmes de la concurrence et des pannes 6

Modèle client-serveur Exemple Serveur de fichiers (nfsd) Serveur d'impressions (lpd) Serveur de calcul Serveur base de données Serveur de noms (annuaire des services) 7

Remote Procedure Call (RPC) Principes Génération du code d'envoi et réception des messages De détection et réémission des messages perdus Objectif : le programmeur développe son application comme si elle était centralisée 8

RPC [Birrel & Nelson 84] Principe de réalisation Appelant Service RPC (talon) A Protocole de communication Protocole de communication Service RPC (talon) B Appelé Appel réseau appel C E return D return client serveur 9

RPC (A) Principe de fonctionnement Côté de l appelant Le client réalise un appel procédural vers la procédure talon client (stub) transmission de l ensemble des arguments au point A le talon collecte les arguments et les assemble dans un message (empaquetage - parameter marshalling) un identificateur est généré pour le RPC et joint au message Un délai de garde est armé Pb : détermination de l adresse du serveur (annuaire de services) le talon transmet les données au protocole de transport pour émission sur le réseau 10

RPC (B et C) Principe de fonctionnement Coté de l appelé le protocole de transport délivre le message au service de RPC (talon serveur/skeleton) au point B le talon désassemble les arguments (dépaquetage - unmarshalling) l identificateur de RPC est enregistré l appel est ensuite transmis à la procédure distante requise pour être exécuté (point C) Le retour de la procédure redonne la main au service de RPC et lui transmet les paramètres résultats (point D) 11

RPC (D) Principe de fonctionnement Coté de l appelé au point D les arguments de retour sont empaquetés dans un message un autre délai de garde est armé le talon transmet les données au protocole de transport pour émission sur le réseau 12

RPC (E) Principe de fonctionnement Coté de l appelant l appel est transmis au service de RPC (point E) les arguments de retour sont dépaquetés le délai de garde armé au point A est désarmé un message d acquittement avec l identificateur du RPC est envoyé au talon serveur (le délai de garde armé au point D peut être désarmé) les résultats sont transmis à l appelant lors du retour de procédure 13

RPC Rôle des talons Talon client - stub C est la procédure d interface du site client qui reçoit l appel en mode local le transforme en appel distant en envoyant un message reçoit les résultats après l'exécution retourne les paramètres résultats comme dans un retour de procédure Talon serveur - skeleton C est la procédure sur le site serveur qui reçoit l appel sous forme de message fait réaliser l exécution sur le site serveur par la procédure serveur (choix de la procédure) retransmet les résultats par message 14

RPC Perte de message Coté client Si le délai de garde expire Réémission du message (avec le même identificateur) Abandon après N tentatives Coté serveur Si le délai de garde expire Si on reçoit un message avec un identificateur identique Réémission de la réponse Abandon après N tentatives Coté client Si on reçoit une réponse avec un identificateur déjà reçu Réémission du message d'acquittement 15

RPC Problèmes Traitement des défaillances Congestion du réseau ou du serveur la réponse ne parvient pas avant une date fixée par le client (système temps critique) Panne du client pendant le traitement de la requête Panne du serveur avant ou pendant le traitement de la requête Panne du système de communication Quelles garanties? Problèmes de sécurité authentification du client authentification du serveur confidentialité des échanges Performance Désignation Aspects pratiques Adaptation à des conditions multiples (protocoles, langages, matériels) 16

RPC IDL : spécification des interfaces Utilisation d'un langage de description d interface (IDL) Spécification commune au client et au serveur Définition des types et natures des paramètres (IN, OUT, IN- OUT) Utilisation de ces définitions pour générer automatiquement : le talon client (ou proxy, stub) le talon serveur (ou squelette, skeleton) 17

IDL Mode opératoire (général) Procédure du client stub compilateur Programme client Description d interface Générateur de talons Générateur de talons Définitions communes Définitions communes bibliothèque bibliothèque Procédure du serveur skeleton compilateur Programme serveur 18

Java Remote Method Invocation RMI Un RPC objet intégré à Java Interaction d'objets situés dans des espaces d'adressage différents (des Java Virtual Machines - JVM) sur des machines distinctes Simple à mettre en œuvre : un objet distribué se manipule comme tout autre objet Java 19

Java RMI Principe objet client objet serveur référence appel Talon client Système de communication Talon serveur état Methode_1 Methode_n Référence d'objet + méthode + arguments Résultat ou exception désignation envoi de requêtes exécution de requête retour de résultat 20

Java RMI Coté serveur rmiregistry stub 2 Naming 1 Client 3 Serveur stub Skeleton JVM Client JVM Serveur 21

Java RMI Coté serveur 0 - A la création de l objet, un stub et un skeleton (avec un port de communication) sont créés coté serveur 1 - L'objet serveur s'enregistre auprès d'un annuaire (rmiregistry) en utilisant la classe Naming (méthode rebind) 2 L'annuaire (rmiregistry) enregistre le stub de l objet 3 L'annuaire est prêt à donner des références à l objet serveur 22

Java RMI Coté client 5 rmiregistry 4 Naming stub Naming Client 6 Serveur 7 Stub JVM Client Skeleton 7 7 JVM Serveur 23

Java RMI Coté client 4 - L'objet client fait appel à l'annuaire (rmiregistry) en utilisant la classe Naming pour localiser l'objet serveur (méthode lookup) 5 L'annuaire délivre une copie du stub 6 - L objet stub est installé et sa référence est retournée au client 7 - Le client effectue l'appel à l objet serveur par appel à l objet stub 24

Java RMI Utilisation codage description de l interface du service écriture du code du serveur qui implante l interface écriture du client qui appelle le serveur compilation compilation des sources (javac) génération des stub et skeleton (rmic) (plus la peine, génération dynamique) activation lancement du serveur de noms (rmiregistry) lancement du serveur lancement du client 25

Java RMI Manuel d'utilisation Définition de l'interface de l'objet réparti interface publique interface : "extends java.rmi.remote" methodes : "throws java.rmi.remoteexception" paramètres sérializables : "implements Serializable" paramètres références : "implements Remote" Ecrire une implémentation de l'objet réparti classe : "extends java.rmi.server.unicastremoteobject" 26

Java RMI Exemple : Interface fichier Hello.java public interface Hello extends java.rmi.remote { public void sayhello() throws java.rmi.remoteexception; } Description de l interface 27

Java RMI Exemple : Serveur fichier HelloImpl.java import java.rmi.*; import java.rmi.server.unicastremoteobject; public class HelloImpl extends UnicastRemoteObject implements Hello { String message; Réalisation du serveur // Implémentation du constructeur public HelloImpl(String msg) throws java.rmi.remoteexception { message = msg; } // Implémentation de la méthode distante public void sayhello() throws java.rmi.remoteexception { System.out.println(message); } 28

Java RMI Exemple : Serveur fichier HelloImpl.java } public static void main(string args[]) { try { // Crée une instance de l objet serveur. Hello obj = new HelloImpl(); // Enregistre l'objet créer auprès du serveur de noms. Naming.rebind("//ma_machine/mon_serveur", obj); System.out.println("HelloImpl " + " bound in registry"); } catch (Exception exc) { } } Réalisation du serveur (suite) ATTENTION : dans cet exemple le serveur de nom doit être activé avant la création du serveur 29

Java RMI Activation du serveur de nom par le serveur public static void main(string args[]) { int port; String URL; fichier HelloImpl.java try { // transformation d une chaîne de caractères en entier Integer I = new Integer(args[0]); port = I.intValue(); } catch (Exception ex) { System.out.println(" Please enter: java HelloImpl <port>"); return; } try { // Création du serveur de nom - rmiregistry Registry registry = LocateRegistry.createRegistry(port); // Création d une instance de l objet serveur Hello obj = new HelloImpl(); } // Calcul de l URL du serveur URL = "//"+InetAddress.getLocalHost().getHostName()+":"+ port+"/mon_serveur"; Naming.rebind(URL, obj); } catch (Exception exc) {...} 30

Java RMI Exemple : Client import java.rmi.*; fichier HelloClient.java public class HelloClient { public static void main(string args[]) { try { // Récupération d'un stub sur l'objet serveur. Hello obj = (Hello) Naming.lookup("//ma_machine/mon_serveur"); // Appel d'une méthode sur l'objet distant. obj.sayhello(); } catch (Exception exc) { } } } Réalisation du client 31

Java RMI Compilation Compilation de l interface, du serveur et du client javac Hello.java HelloImpl.java HelloClient.java Génération des talons (automatique maintenant) rmic HelloServeur skeleton dans HelloImpl_Skel.class stub dans HelloImpl_Stub.class. 32

Java RMI Déploiement 1) Activation du serveur de nom rmiregistry & 2) Activation du serveur java HelloImpl java -Djava.rmi.server.codebase=http://ma_machine/ path indiquant à quelle endroit la machine virtuelle cliente va pouvoir chercher des classes manquantes Exemple : sérialisation 3) Activation du client java HelloClient 33

Java RMI Principe de l appel de méthode Java VM Client R_objet1.m () Java VM objet1 m () Stub objet1 Skeleton objet1 34

Java RMI Passage en paramètre d un objet sérialisable Java VM Java VM Client R_objet1.m ( R_O2 ) O2 objet1 m ( R_clone_O2 ) clone_o2 Stub objet1 Skeleton objet1 35

Java RMI Passage en paramètre d un objet remote O2 Java VM Java VM Client R_objet1.m ( R_O2 ) Stub O2 objet1 m ( R_O2 ) Stub O2 Stub objet1 Skeleton objet1 36

Java RMI : bilan Très bon exemple de RPC facilité d utilisation intégration au langage Java Passage de référence -> sérialisation ou référence à distance Déploiement du code -> chargement dynamique des classes sérialisables Désignation par des URL 37

Ouverture : RPC asynchrone Le client poursuit son exécution après l émission du message d appel la procédure distante s exécute en parallèle avec la poursuite du client et retourne les paramètres résultats en fin de son exécution le client récupère les résultats quand il en a besoin (primitive spéciale de lecture) la lecture rend un résultat nul si le résultat n est pas disponible la lecture bloque le client si le résultat n est pas disponible avantage : parallélisme plus important critique : le client ne retrouve pas la sémantique de l appel de procédure 38

Ouverture : RPC asynchrone RPC RPC asynchrone Envoi résultat récupération résultat 39

Les limites du modèle clientserveur Services pour la construction d applications réparties le RPC est un mécanisme de bas niveau des services additionnels sont nécessaires pour la construction d applications réparties (désignation, fichiers répartis, sécurité, etc.) CORBA, EJB... Outils de développement limités à la génération automatique des talons peu (ou pas) d outils pour la construction ou le déploiement d'applications réparties (composants) Des tutoriaux de programmation RMI plein de Web... 40