EPU SI4 - 2008 1 Mireille Blay-Fornarino

Slides:



Advertisements
Présentations similaires
Mais vous comprenez qu’il s’agit d’une « tromperie ».
Advertisements

Le Nom L’adjectif Le verbe Objectif: Orthogram
ORTHOGRAM PM 3 ou 4 Ecrire: « a » ou « à » Référentiel page 6
Licence pro MPCQ : Cours
Distance inter-locuteur
1 Plus loin dans lutilisation de Windows Vista ©Yves Roger Cornil - 2 août
Invocation de Méthode à des Objets distants RMI et Corba
Plan de l’enseignement
ESSI AM Dery Merci à Rémi Vankeisbelck, Michel Riveill etc
Harmonisation AM Dery Merci à Rémi Vankeisbelck, Michel Riveill etc
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é
3- Le langage IDL Le contrat IDL Un « esperanto » pour les objets
1 8. Notion dadaptateur dobjet. 2 c Raphaël Marvie Principe Rendre plusieurs objets (Servant) disponibles dans un serveur Chaque objet est associé
1 I. Bus logiciel ? Mireille Blay-Fornarino Daprès et Sacha Et (cf. références en bas.
ESSI AM Dery Merci à Rémi Vankeisbelck, Michel Riveill etc
Architecture CORBA réseau Objet Corba Application Serveur
ESSI AM Dery Merci à Rémi Vankeisbelck, Michel Riveill etc
Module SI4 Applications réparties
Les numéros
Introduction aux applications réparties
Les identités remarquables
Le, la, les words Possessive Adjectives MINE!!. 2 My in french is mon, ma,mes... Le word/ begins with a vowel: Mon La word: Ma Les word: Mes.
Cours MIAGE « Architectures Orientées Services » Henry Boccon-Gibod 1 Architectures Orientées Services Composants de Service Exemple pratique de développement.
Sirop de Liège « industriel »
LICENCE MIAGE Introduction Programmation Orientée Objet JAVA philippe
LES TRIANGLES 1. Définitions 2. Constructions 3. Propriétés.

2 1. Vos droits en tant quusagers 3 1. Vos droits en tant quusagers (suite) 4.
Remote Method Invocation
Nom du module Date Lieu de la formation. 2 Genèse du projet Historique, partenaires, publics Pour qui ? Pourquoi ? Qui ? Comment ? Quand ?
Live Meeting Technique N°3 Thomas LEBRUN – MVP WPF/Silverlight Florent SANTIN – MVP Team System Julien CORIOLAND - MSP.
1 7 Langues niveaux débutant à avancé. 2 Allemand.
Connexion base de données
Injection de dépendances
BlueJ_XI 1 Java, les objets : tout de suite ! Gestion des erreurs : les exceptions Notes de cours associées au chapitre 11 tutorial BlueJ
Faculté I&C, Claude Petitpierre, André Maurer 1 Java.
Le soccer & les turbans Sondage mené par lAssociation détudes canadiennes 14 juin 2013.
Présentation générale
1 Guide de lenseignant-concepteur Vincent Riff 27 mai 2003.
Le Concours de Conaissance Francais I novembre 2012.
Titre : Implémentation des éléments finis sous Matlab
Quelques notes sur CORBA F. Boyer, Oct Principes Programmation distribuée Multi-plateformes Notion de client et de serveur Notion de stub et de.
Projet poker 1/56. Introduction Présentation de léquipe Cadre du projet Enjeux Choix du sujet 2.
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
LES NOMBRES PREMIERS ET COMPOSÉS
RACINES CARREES Définition Développer avec la distributivité Produit 1
Représentation des systèmes dynamiques dans l’espace d’état
DUMP GAUCHE INTERFERENCES AVEC BOITIERS IFS D.G. – Le – 1/56.
1 1 Corba avec Java et C Jean-Marc Vanel Transiciel - Sogeti.
Année universitaire Réalisé par: Dr. Aymen Ayari Cours Réseaux étendus LATRI 3 1.
Titre : Implémentation des éléments finis en Matlab
COURS DE PROGRAMMATION ORIENTEE OBJET :
MAGIE Réalisé par Mons. RITTER J-P Le 24 octobre 2004.
1 INETOP
Les Objets CORBA parallèles Travaux pratiques Lundi 22 mai 2000 ARC « Couplage » Christophe René (IRISA/IFSIC) Eric Lemoine (INSA Lyon)
Aire d’une figure par encadrement
P.A. MARQUES S.A.S Z.I. de la Moussière F DROUE Tél.: + 33 (0) Fax + 33 (0)
MAGIE Réalisé par Mons. RITTER J-P Le 24 octobre 2004.
Traitement de différentes préoccupations Le 28 octobre et 4 novembre 2010.
1/65 微距摄影 美丽的微距摄影 Encore une belle leçon de Macrophotographies venant du Soleil Levant Louis.
Nom:____________ Prénom: ___________
Présentation de CORBA et de IIOP
Systèmes distribués Plusieurs technologies existent : Les sockets
CEG3585/CEG3555 Tutorat 2 Hi ver 2013.
Les sockets.
France Télécom R&D Le présent document contient des informations qui sont la propriété de France Télécom. L'acceptation de ce document par son destinataire.
Ingénierie des réseaux - Chapitre 2 bis Les sockets en Java
Java Remote Method Invocation
Transcription de la présentation:

EPU SI Mireille Blay-Fornarino Voir les cours qui ont servi de référence dans la bibliographie Introduction : Applications réparties par objets

2 EPU SI Objectifs Sensibilisation au besoin dintégration des applications logicielles réparties en contexte industriel Conception dArchitectures logicielles Acquisition de connaissances sur les modèles existants pour les applications réparties RMI, CORBA, JNDI, JMS, Puis dans le domaine de linternet : SOAP & Services web, Ajax, Bases de lapproche Intergiciel Principes directeurs, organisation, usage Fonctionnement interne ( au coeur de …)

3 EPU SI Entreprise virtuelle : illustration c u t divKgraduF () Mireille Blay-Fornarino Assemblage de ressources de Stockage, Calculs, réseaux => B2B

4 EPU SI Pourquoi utiliser des applications réparties ?

5 EPU SI Les 8 erreurs conceptuelles 1. Le réseau est fiable. 2. La latence est nulle. 3. La bande passante du réseau est infinie. 4. Le réseau est sécurisé. 5. La topologie de lapplication est « éternelle » 6. Il y a un seul administrateur du réseau 7. Le coût du transport est nul. 8. Le réseau est homogène. Annick Fron

6 EPU SI Propriétés à prendre en compte Hétérogénéité Hardware Langages Ressources Contexte dusage Désignation/localisation Migration Mobilité Ubiquité Evolution Mireille Blay-Fornarino Distribution Equilibrage de charge Parallélisation Décentralisation Couplage Prise de décision Contrôle de laccès concurrent Serveurs parallèles Données réparties synchronisation de l'accès aux ressources, Gestion des transactions

7 EPU SI Propriétés à prendre en compte Sécurité authentification (certificats) sécurisation des communications (cryptage) contrôle daccès (autorisation) Dimensionnement croissance du nombre de clients « duplication des serveurs », « gestion de caches » gigantesque quantité de données Grain des informations : plans de vol journalier ou pistes radar à la seconde ? Tolérance aux fautes site en panne ou inaccessible « redondance des serveurs » « fonctionnement en mode dégradé » Mireille Blay-Fornarino

EPU SI Bus logiciel ? Principes de base de larchitecture des intergiciels Via RMI et CORBA …

EPU SI Au début était la socket Service 1 : Hello world Une méthode hello avec un paramètre de type chaîne et retourne une chaîne : hello, + paramètre Daprès et Sacha Et (cf. références en bas des pages)

10 EPU SI Principe Deux programmes écrits en deux classes Java Une pour le serveur Server.java Une pour le client Client.java Dans chaque classe est implémenté Le code fonctionnel : manipulation des chaînes Le code technique : construction / analyse des messages réseau

11 EPU SI Architecture version « socket » Client Réseau Serveur

12 EPU SI Modélisation des Interactions

13 EPU SI Côté serveur Initialisation du réseau Instanciation dune socket serveur Gestion des requêtes Attente de connexion (accept) Initialisation des flux dentrée et de sortie Evaluation des requêtes Lecture de la requête sur le flux dentrée Création de la chaîne à retourner Ecriture de la réponse sur le flux de sortie

14 EPU SI Code serveur (i) package step1 ; import java.io.* ; import java.net.* ; public class Server { private ServerSocket asock ; public Server () throws Exception { this.asock = new ServerSocket (12345) ; } public static void main (String args[]) { Server s = new Server () ; s.run () ; }

15 EPU SI Code serveur (ii) public void run () throws Exception { while (true) { Socket sock = this.asock.accept () ; BufferedReader in = new BufferedReader (new InputStreamReader(sock.getInputStream ())); DataOutputStream out = new DataOutputStream (sock.getOutputStream ()); String msg = in.readLine () ; String res = "Hello, " + msg + "\n" ; // fonctionnel out.writeBytes (res) ; }

16 EPU SI Côté client Initialisation du réseau Instanciation dune socket de communication (connexion implicite) Gestion de léchange réseau Initialisation des flux dentrée et de sortie Demande de service Ecriture de la requête sur le flux de sortie Lecture de la réponse sur le flux entrée Affichage de la chaîne retournée Fermeture de la connexion

17 EPU SI Code client (i) package step1 ; import java.io.* ; import java.net.* ; public class Client { private Socket sock ; public Client () throws Exception { this.sock = new Socket ("localhost", 12345) ; } public static void main (String args[]) throws Exception { Client c = new Client () ; c.run (args[0]) ; }

18 EPU SI Code client (ii) public void run (String msg) throws Exception { BufferedReader in = new BufferedReader (new InputStreamReader(this.sock.getInputStream ())); DataOutputStream out = new DataOutputStream (this.sock.getOutputStream ()); out.writeBytes (msg + "\n") ; String res = in.readLine () ; System.out.println ("Server replied: " + res) ; this.sock.close(); }

19 EPU SI Bénéfices et limitations Bénéfices Invocation dun service distant (hello world) Permet de réaliser des applications client / serveur Parmi les limitations Une seule connexion cliente à la fois Un seul service ciblé Beaucoup de code très technique / peu de code métier (40 lignes de code technique pour une ligne de code métier) Un beau plat de spaghettis, difficilement évolutif

EPU SI … et il y eut les Applications à base dobjets répartis Comparaison RMI et CORBA Applications Réparties AM Dery & M. Blay-Fornarino Merci à Rémi Vankeisbelck, Michel Riveill, Annick Fron, etc

21 EPU SI Objectifs des objets répartis : RAPPELS 1) « utiliser » un objet distant (OD), sans savoir où il se trouve: ObjetDistant = ServiceDeNoms.recherche("monObjet"); 2) invoquer des méthodes comme en local : objetDistant.nomMethode(Parametres); 3) « passer » un OD en paramètre dappel à une méthode resultat = objetLocal.nomMethode(objetDistant); resultat = objetDistant.nomMethode(autreObjetDistant); 4) récupérer le « résultat » dun appel distant sous forme dun nouvel objet qui aurait été créé sur la machine distante : ObjetDistant1 = ObjetDistant2.methode() ;

22 EPU SI Des technologies RMI (Remote Method Invocation) Système dobjets distribués performant destiné au développement dapplications distribuées entièrement en Java CORBA (Common Object Request Broker Architecture) Plate-forme client/serveur orientée objets qui permet de faire communiquer des applications écrites dans des langages différents (C++, Lisp, Smalltalk, Python…) et sur des plateformes (Interopérabilité Langage et Plateformes)

EPU SI Bus mono-langage : RMI Remote Method Invocation Oui oui… vous savez déjà. Mais un petit rappel… ! Remote/serialisable

24 EPU SI Principe Deux programmes écrits en deux classes Java Une pour le serveur Server.java Une pour le client Client.java Mais cette fois-ci : Des objets « Hello » Un contrat

25 EPU SI Squelette Service Servant Architecture version « RMI » Stub Réseau Client Contrat/ Interface Service Servant Squelette Nommage Servant Squelette RMI System Stub=Proxy/Talon Squelette = Proxy/Talon Serveur

26 EPU SI Architecture RMI Client Stub Remote reference layer Serveur Skeleton Remote reference layer TCP/IP, Unicast Java Remote Method Protocol ( JRMP) Pinna -2007

27 EPU SI Contrat : Interface Java import java.rmi.Remote; public interface HelloService extends Remote { public String hello (String msg) throws Exception ; public HelloService getClone(String InitialMessage) throws Exception ; } MBF -2007

28 EPU SI Côté Serveur : Implémentations : Objets Remote public class HelloServiceRemote extends UnicastRemoteObject implements HelloService { int counter = 0; String initialMessage = ""; … private HelloServiceRemote(int count, String message) throws RemoteException initialMessage = message; counter = count; } public String hello(String msg) throws Exception { counter++; return initialMessage + "Hello " + msg + " : tu es le " + counter; } public HelloService getClone(String initialMessage) throws Exception { return new HelloServiceRemote(this.counter,initialMessage); } MBF -2007

29 EPU SI Côté Serveur : Implémentations : Objets Sérialisable import java.io.Serializable; public class HelloServiceSerializable implements HelloService, Serializable { int counter = 0; private String initialMessage = ""; private HelloServiceSerializable(int count, String message) throws RemoteException { … } protected HelloServiceSerializable() throws RemoteException { … } public String hello(String msg) throws Exception { … } public HelloService getClone(String initialMessage) throws Exception { … } MBF -2007

30 EPU SI Code du serveur public class HelloServer { public static void main(String[] args) throws RemoteException, MalformedURLException { HelloService serializedObject = new HelloServiceSerializable(); HelloService remoteObject = new HelloServiceRemote(); Naming.rebind("aSerializedHello", serializedObject); Naming.rebind("aremoteHello", remoteObject); System.out.println("Hellos bound in registry"); } Démarrage du serveur On lance le rmiregistry On lance le serveur

31 EPU SI Côté client public class HelloClient { public static void main(String[] args) { HelloService objLocal = null; HelloService objRemote = null; try { objLocal = (HelloService) Naming.lookup("aSerializedHello"); System.out.println(objLocal.hello("Premier ")); System.out.println(objLocal.hello("deuxieme ")); objLocal = (HelloService) Naming.lookup("aSerializedHello"); System.out.println(objLocal.hello("troisieme ")); MBF -2007

32 EPU SI Côté client public class HelloClient { public static void main(String[] args) { HelloService objLocal = null; HelloService objRemote = null; try { objRemote = (HelloService) Naming.lookup("aremoteHello"); System.out.println(objRemote.hello("Premier ")); System.out.println(objRemote.hello("deuxieme ")); objRemote = (HelloService) Naming.lookup("aremoteHello"); System.out.println(objRemote.hello("troisieme "));

33 EPU SI Côté client Suite du précédent HelloService copieObjRemote = objRemote.getClone("Remote copy : "); System.out.println( copieObjRemote.hello("Premiere copie")); System.out.println(objRemote.hello("l'original")); } MBF -2007

34 EPU SI Bénéfices et limitations Bénéfices Invocation de plusieurs services distants Quasiment pas de code technique Création à distance des objets accessibles Limitations Un seul langage Pas de persistance des références Gestion des Pool dobjets Pas dAssemblage dynamique

EPU SI "Bus" multi-langages : CORBA Common Object Request Broker Architecture Juste un premier exemple… Introduction à CORBA par comparaison

36 EPU SI Spécificité Corba => ORB la localisation dobjet la désignation des objets lempaquetage des paramètres (marshalling) le dépaquetage des paramètres (unmarshalling) linvocation des méthodes De plus, il fournit des caractéristiques telles que : la gestion des exceptions l activation automatique et transparente des objets la liaison avec « tous » les langages de programmation un système auto-descriptif l interopérabilité entre les bus I.5. OMA ORB

37 EPU SI Squelette Service Servant Architecture version « CORBA» Stub orb Nommage Servant Client Contrat/ Interface IDL Service Servant Squelette CORBA System Stub=Proxy/Talon Squelette = Proxy/Talon Serveur POA Réseau

38 EPU SI CORBA par comparaison Client Stub Object request broker Serveur Skeleton Object request broker TCP/IP, Unicast GIOP/IIOP Interface IDL

39 EPU SI Points communs et interopérabilité Utilisent les sockets Des Protocoles Un propriétaire : JRMP (Remote Method Protocol) Un protocole normalisé par lOMG: GIOP/IIOP Il existe des implémentations RMI basées sur le protocole RMI-IIOP

40 EPU SI CORBA Modèle de référence OMA Bus dobjets répartis (O.R.B.) Licences TransactionsPersistancePropriétésChangementsEvents NommageVendeurSécuritéRelationsCollectionsTempsExternalisation Interrogations Cycle de vie Concurrence Services objet communs (CORBA Services) Workflow DataWareIHM Administration Utilitaires communs Finance Télécom Santé Interfaces de domaine Objets applicatifs Spécifiques

41 EPU SI Rappel processus RMI Interface HelloWorld Interface HelloWorld Classe dimplémentation HelloWorldImpl Utilisation du registry Code du client Code du serveur

42 EPU SI Étapes de mise en œuvre Corba Spécification interface IDL Compilation interface IDL Implantation des objets Corba Implantation du serveur Enregistrement du serveur Implantation du client Côté client Côté serveur Utilisation du service Nommage

43 EPU SI Contrat : IDL CORBA interface HelloService { string hello (in string msg); HelloService getClone(in string InitialMessage); };

44 EPU SI Contrat IDL Bus CORBA Squelette IDL Stub IDL Fournisseur d objets Client dobjets Corba : Interface décrite avec IDL Des projections multi-langages Objets Corba

45 EPU SI Compilation interface IDL vers Java HelloService.java _HelloServiceStub.java HelloServicePOA.java HelloService_Impl.java Client.java Serveur.java Hello.idl HelloServiceHelper.java HelloServiceHolder.java HelloServiceOperations.java jidl À implémenter Généré ServeurClient Utile seulement si utilisation des modes in/inout dans lidl

46 EPU SI Côté Serveur : Implémentation public class HelloServiceImpl extends HelloServicePOA {private org.omg.CORBA.ORB orb_; int counter = 0; String initialMessage = ""; publicHelloServiceImpl(org.omg.CORBA.ORB orb) { orb_=orb; } publicHelloServiceImpl(org.omg.CORBA.ORB orb, int count, String message) { this(orb); initialMessage = message; counter = count; } public String hello(String msg) { counter++; return initialMessage + "Hello " + msg + " : tu es le " + counter; } public HelloService getClone(String InitialMessage) { return (new HelloServiceImpl(orb_,this.counter,initialMessage))._this(orb_); }

47 EPU SI Code serveur public class Server { static int run(org.omg.CORBA.ORB orb, String[] args) throws org.omg.CORBA.UserException { org.omg.PortableServer.POA rootPOA = org.omg.PortableServer.POAHelper.narrow( orb.resolve_initial_references("RootPOA")); org.omg.PortableServer.POAManager manager = rootPOA.the_POAManager(); HelloServiceImpl helloRemoteImp = new HelloServiceImpl(orb); HelloService helloRemote = helloRemoteImp._this(orb); try { String ref = orb.object_to_string(helloRemote); String refFile = "helloRemote.ref"; FileOutputStream file = new FileOutputStream(refFile); PrintWriter out = new PrintWriter(file); out.println(ref); out.flush(); file.close(); …

48 EPU SI Côté client public class Client { static int run(org.omg.CORBA.ORB orb, String[] args) throws org.omg.CORBA.UserException { String ref = null; try { String refFile = "helloRemote.ref"; FileInputStream file = new FileInputStream(refFile); BufferedReader in = new BufferedReader(new InputStreamReader(file)); ref = in.readLine(); file.close(); org.omg.CORBA.Object obj = orb.string_to_object(ref); … HelloService hello = HelloServiceHelper.narrow(obj); System.out.println(hello.hello("premier")); System.out.println(hello.hello("deuxieme")); HelloService helloBis = hello.getClone("copie "); System.out.println(helloBis.hello("copie 1")); return 0; }

49 EPU SI Compilation interface IDL vers C++ Hello.idl Compilateur idl ClientHello_Impl Compilateur C++ Fichiers Souche Fichiers Squelette Client (.exe) Serveur (.exe) Server

50 EPU SI Côté Serveur : Implémentation(1) char* Hello_impl::hello(const char* msg) throw(::CORBA::SystemException) { CORBA::String_var message = ::CORBA::string_dup("Hello"); message += msg; count++; message += count; return message._retn (); }

51 EPU SI Côté Serveur : Implémentation(2) ::Hello_ptr Hello_impl::getClone(const char* InitialMessage) throw(::CORBA::SystemException) { Hello_impl* helloImpl = new Hello_impl(orb_, poa_); helloImpl->count = this->count; … Hello_var hello = helloImpl -> _this(); return hello._retn(); … }

52 EPU SI Le programme Server #include using namespace std; int run(CORBA::ORB_ptr); int main(int argc, char* argv[]) {int status = EXIT_SUCCESS; CORBA::ORB_var orb; try{ orb = CORBA::ORB_init(argc, argv); status = run(orb, argc, argv); }

53 EPU SI Le programme Server … PortableServer::POA_var rootPOA = PortableServer::POA::_narrow( CORBA::Object_var(orb -> resolve_initial_references("RootPOA"))); … Hello_impl* helloImpl = new Hello_impl(orb, rootPOA); Hello_var hello = helloImpl -> _this(); CORBA::String_var s = orb -> object_to_string(hello); const char* refFile = "Hello.ref"; FILE* f = fopen(refFile, "w"); fputs(s.in(), f); fclose(f); …….

54 EPU SI Le programme Client #include using namespace std; int run(CORBA::ORB_ptr); int main(int argc, char* argv[]) {int status = EXIT_SUCCESS; CORBA::ORB_var orb; try {orb = CORBA::ORB_init(argc, argv); status = run(orb); }

55 EPU SI Le programme Client (suite) run(CORBA::ORB_ptr orb, int /* argc */, char* argv[]) { CORBA::Object_var obj = orb -> string_to_object("relfile:/Hello.ref"); Hello_var hello = Hello::_narrow(obj); CORBA::String_var reply = CORBA::string_dup(""); reply = hello -> say_hello("Premier"); std::cout << reply << std::endl; Hello_var helloCopy=hello -> getClone("copie"); reply = helloCopy -> say_hello("copie"); std::cout << reply << std::endl; }

EPU SI Bus logiciel : …. Communications … MOM (Message Oriented Middleware) ou RPC (Remote Procedure Call)

57 EPU SI Echanges de messages JMS Principe : Production de messages Consommation des messages Tous clients du « bus »!

58 EPU SI Appel de procédure à distance RMI,CORBA,.NET remoting, SOAP, … Principe : Invocation dun service (contexte dappel) Attente bloquante* des résultats

EPU SI Bus logiciel en résumé Un bus logiciel repose essentiellement sur deux concepts La désignation dun service (les références) La liaison avec un service distant (établir une connexion) Un intergiciel (middleware) est un « programme » qui permet de faire communiquer des machines entre-elles, indépendamment de la nature du processeur, du SE, voire du langage.

60 EPU SI Classes dintergiciels Objets répartis Java RMI, CORBA, DCOM,.NET Composants répartis Java Beans, Enterprise Java Beans, CCM Message-Oriented Middleware (MOM) Message Queues, Publish-Subscribe Intégration dapplications Web Services Coordination Accès aux données, persistance Support dapplications mobiles

61 EPU SI Architecture générale dun bus logiciel

62 EPU SI Définitions dinterfaces Partie opérationnelle Interface Definition Language (IDL) Pas de standard indépendant IDL CORBA Java et C# définissent leur propre IDL WSDL … Partie contractuelle Plusieurs niveaux de contrats Sur la forme : spécification de types -> conformité syntaxique Sur le comportement (1 méthode) : assertions -> conformité sémantique Sur les interactions entre méthodes : synchronisation Sur les aspects non fonctionnels (performances, etc.) : contrats de QoS C Sacha Krakowiak

63 EPU SI L amorce client (stub) Représentant local de l OD qui implémente ses méthodes « exportées » Transmet l invocation distante à la couche inférieure Remote Reference Layer / ORB Il réalise le pliage (« marshalling ») des arguments des méthodes distantes Dans l autre sens, il réalise le dépliage (« demarshalling ») des valeurs de retour

64 EPU SI L amorce serveur (Skeleton) Réalise le dépliage des arguments reçus par le flux de pliage Fait un appel à la méthode de l objet distant Réalise le pliage de la valeur de retour

65 EPU SI La couche des références distantes Permet l obtention d une référence d objet distant à partir de la référence locale au Stub : un service dannuaire Rmiregistry en RMI Service de nommage Naming en Corba JNDI Interface dannuaire

66 EPU SI La couche de transport Connecte les 2 espaces d adressage (JVM pour Java) Suit les connexions en cours Ecoute et répond aux invocations Construit une table des OD disponibles Réalise l aiguillage des invocations Sécurité ?

67 EPU SI Diagramme d interaction StubSkeletonImplementation invoke Marshal param Send req. Unmarshal param Invoke impl. Return result Return return or exc. Marshal return or exc. Send reply Unmarshal reply Return value or exc

68 EPU SI Bibliographie École dété sur les Intergiciels et sur la Construction dApplications Réparties : Patrons et Canevas pour lIntergiciel Sacha Krakowiak, ICAR 2003 Dis papa, cest quoi un bus logiciel réparti ? LIFL – IRCICA Equipe GOAL Décembre 2003

69 EPU SI Quelques livres... Core Java Volume 2 Par Cay S. Horstmann & Gary Cornell Editions CampusPress Une référence pour les développeurs Java Bonne section sur RMI, servi de base pour ce cours Java Distributed Computing Par Jim Farley Editions O'Reilly Tout sur les applications reparties avec Java Plus technique... Architectures réparties en Java Par Annick Fron (2007) Edition Dunod RMI, CORBA, JMS, Sockets, SOAP, services web