. - 1 - Module SI4 Applications réparties Questions Réponses Extraits de Mireille Blay-Fornarino, Audrey Occello et Didier Donsez.

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
Xavier Blanc Web Services Xavier Blanc
Introduction aux environnements répartis
Message Oriented Middleware
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é
Module SI2 Applications réparties
Message Oriented Middleware. Plan Pourquoi un nouveau type de middleware? Quelle lignée logicielle ? Historique JMS : Java Message Server Limplémentation.
Architecture CORBA réseau Objet Corba Application Serveur
ESSI AM Dery Merci à Rémi Vankeisbelck, Michel Riveill etc
Objets Distribués Chronique d ’une invasion annoncée
Module SI4 Applications réparties
Des sockets à RMI. Pourquoi ? Maturation de la technologie orientée objet –ADA, Modula –Smalltalk, C++, Java Maturation des communications Client- Serveur.
© 2006, Occello Audrey, PolytechNice Module SI2 Applications réparties Service de nommage & JNDI Extraits de Mireille Blay-Fornarino, Anne-Marie.
Les numéros
Les identités remarquables
Cours MIAGE « Architectures Orientées Services » Henry Boccon-Gibod 1 Architectures Orientées Services Composants de Service Exemple pratique de développement.
51 Les technologies XML Cours 6 : XML et les architectures N-tiers – Tier Métier Janvier Version 1.0 -
LES TRIANGLES 1. Définitions 2. Constructions 3. Propriétés.

CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV J2EE / JNDI Module Java Expert.
User management pour les entreprises et les organisations Auteur / section: Gestion des accès.
1 7 Langues niveaux débutant à avancé. 2 Allemand.
Mr: Lamloum Med LES NOMBRES PREMIERS ET COMPOSÉS Mr: Lamloum Med.
SERABEC Simulation sauvetage aérien avec un Hercule C130. Départ de St-Honoré le 4 octobre Durée de vol 3 heures. Premier vol en Hercule pour les.
1 5 octobre 2011 / paw Présentation du 7 octobre 2011.
Développement d’applications web
Etude des Technologies du Web services
Le soccer & les turbans Sondage mené par lAssociation détudes canadiennes 14 juin 2013.
Olivier DERUELLE Erwan FOUYER Maxime JOUIN Rodolphe LOUE
Java Remote Method Invocation (RMI)
1 Guide de lenseignant-concepteur Vincent Riff 27 mai 2003.
GRAM 1 CE2 Je sais transformer une phrase affirmative en phrase négative.
Le Concours de Conaissance Francais I novembre 2012.
Virtual Local Area Network
Titre : Implémentation des éléments finis sous Matlab
Interopérabilité JOnAS - CORBA
Projet poker 1/56. Introduction Présentation de léquipe Cadre du projet Enjeux Choix du sujet 2.
LES NOMBRES PREMIERS ET COMPOSÉS
Logiciel gratuit à télécharger à cette adresse :
Behavioral Design Patterns The Observer Pattern Roberto Demontis Sylvain Giroux.
DUMP GAUCHE INTERFERENCES AVEC BOITIERS IFS D.G. – Le – 1/56.
An Introduction to distributed applications and ecommerce 1 1 Les services Web, XML et les places de marchés.
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
MAGIE Réalisé par Mons. RITTER J-P Le 24 octobre 2004.
Séminaire Service Interoperability on Context Level in Ubiquitous Computing Environments Davide Bazzi IIUF Etude de larticle: Service Interoperability.
1 INETOP
J2EE vs .NET Réaliser par : SEIF ENNACER BADRA && CHETOUI RIM.
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.
Mise en place d'une forêt (Aspects pratiques).
JEE 5 F.Pfister 2 institut eerie JEE – Une plateforme serveur  Développement et exécution d'applications réparties.
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
1 Architecture orientée service SOA Architecture orientée service SOA (Service Oriented Architecture)
Enterprise Java Beans 3.0 Cours INF Bases de Données Hiver 2005, groupe 10 Stefan MARTINESCU.
Les sockets.
Behavioral Design Patterns The Observer Pattern. Intention Définir une dépendance de “1” à “n” entre des objets de telle sorte que lorsque l’état d’un.
PaCO++ André Ribes Réunion Hydrogrid Rennes 15/09/03.
Java Remote Method Invocation
Applications distribuées Introduction Jean-Jacques LE COZ.
Transcription de la présentation:

Module SI4 Applications réparties Questions Réponses Extraits de Mireille Blay-Fornarino, Audrey Occello et Didier Donsez

JNDI ?

JNDI en quelques mots Services de nommages connus : rmiregistry, Corba naming Services dannuaires connus : LDAP, DNS Des fonctionnalités communes Principe : Fournir une API (java) uniforme à des services de nommage ou dannuaire Utilisation de pilotes SPI dynamiquement chargeables –LDAP, DNS, NIS, NDS, RMI, CORBA, … et FileSystems

Différences Serveur de Noms et Annuaire ?

Unicité des noms EPU SI ELECBIO MAM pinna arthurestelle clémen t arthur

Association dattributs EPU SI ELECBIO MAM pinna arthurestelle clémen t arthur Password login Password login Password login Password login Password login

Exemples Serveur de Noms et Annuaire ?

Service providers (SPI) SPI est linterface permettant dattaquer différents providers de manière uniforme. Les providers « compatibles » doivent fournir un ensemble de classes implémentant javax.naming.spi.

Configuration JNDI ?

Configuration de JNDI : ContextFactory & Provider Deux façons de configurer ces propriétés : –Paramétrer le contexte initial : Hashtable env = new Hashtable(); env.put("java.naming.factory.initial",...); env.put("java.naming.provider.url",...); javax.naming.Context ct = new InitialContext(env); –Passer en paramètre de ligne de commande de Java : java -Djava.naming.factory.initial=value -Djava.naming.provider.url=value Server

ContextFactory : exemples FileSystem : com.sun.jndi.fscontext.FSContextFactory Lightweight Directory Access Protocol (LDAP) : com.sun.jndi.ldap.LdapCtxFactory CORBA services (COS) naming service : com.sun.jndi.cosnaming.CNCtxFactory Java Remote Method Invocation (RMI) Registry : com.sun.jndi.rmi.registry.RegistryContextFactory NIS : com.sun.jndi.nis.NISCtxFactory NDS : com.novell.naming.service.nds.NdsInitialContextFactory

Providers et formats daccès : exemples FileSystem : file://directory_path Lightweight Directory Access Protocol (LDAP) : ldap://host:port CORBA services (COS) naming service : corbaloc::host:port/NameService Java Remote Method Invocation (RMI) Registry : rmi://host:port/ NIS : nis://servername/domain NDS : nds://ndsTreeName

IIOP ? 2 Corba sont ils toujours interopérables ?

Protocoles : GIOP, IIOP GIOP (General Inter-ORB Protocol) spécifie un standard de communications entre ORBs IIOP (Internet Inter-ORB Protocol) est l'implémentation la + populaire du protocole GIOP au dessus de TCP/IP

(O.R.B.) composant c++ TCP/IP network (O.R.B.) composant java IIOP (O.R.B.) composant cobol BD IIOP Communication inter-ORB IIOP (O.R.B.) composant BD composant (O.R.B.) DCE network DCE-CIOP (O.R.B.) Bridge (O.R.B.) IIOP DCE-CIOP Java-RMI ? ?

RMI et Corba interopérables ? Différences RMI et Corba ?

Protocoles : JRMP JRMP (Java Remote Method Protocol) est le protocole utilisé par Java RMI

Pourquoi JNDI ?

JNDI Enregistrement de lobjet distant via JNDI –InitialContext.rebind("obj_ref", obj); Obtenir un objet distant toujours via JNDI –InitialContext IC = new InitialContext(env); –Object obj = IC.lookup("obj_ref"); –MyObject myobj = (MyObject)PortableRemoteObject.narrow(obj,MyObje ct.class); Lancement du service de nommage choisi : (rmiregistry, CosNaming, …)

RMI IIOP ?

Souches identiques ?

Procédure de compilation : rmic -iiop Implementation File (MyObjectImpl.class) rmic -iiop _MyObject_Stub.class_MyObject_Tie.class Coté clientCoté serveur Interface File (MyObject.class) rmic -iiop _MyObject_Stub.class Coté client

Influence sur la communication RMI Corba? IDL vs interface ?

Quel sous ensemble de JAVA RMI peut être utilise pour faire du CORBA –Passage par valeur : un équivalent à la sérialisation Java –rmic -idl Intégration Java-RMI/CORBA

Implémentation RMI de lobjet Client CORBA + Serveur RMI Client CORBA Stub CORBA ORB Squelette RMI ORB Interface RMI de lobjet 1) rmic -iiop IDL CORBA de lobjet 2) rmic -idl 3) jidl Protocole IIOP

Client RMI + Serveur CORBA Implémentation CORBA de lobjet Client RMI Stub RMI ORB Squelette CORBA ORB Interface RMI de lobjet IDL CORBA de lobjet 1) rmic -idl Protocole IIOP 2) jidl 3) rmic -iiop

Serveur RMI ou Serveur Corba?

Client RMI + Serveur CORBA Implémentation CORBA de lobjet Client RMI Stub RMI ORB Squelette CORBA ORB Interface RMI de lobjet IDL CORBA de lobjet 1) rmic -idl Protocole IIOP Étape 1 pas naturelle ! Ne marche que pour lintégration de nouvelles applications 2) jidl 3) rmic -iiop

Mise en œuvre

Compatibilité IIOP : Différences de développement coté serveur (1/2) 1. Clause dimportation –javax.rmi.PortableRemoteObject au lieu de java.rmi.UnicastRemoteObject –javax.naming.InitialContext au lieu de java.rmi.Naming 2. Définition de lobjet distant –pas de différence au niveau de linterface de lobjet –au niveau de limplémentation : public class MyObjectImpl extends PortableRemoteObject implements MyObject 3. Enregistrement de lobjet distant via JNDI –InitialContext.rebind("obj_ref", obj); 4. Génération des souches compatibles IIOP : rmic -iiop

Compatibilité IIOP : Différences de développement coté serveur (2/2) 5. Lancement du service de nommage choisi : (rmiregistry, CosNaming, …) 6. Dans le cas de linteropérabilité avec CORBA, une étape supplémentaire : génération de lIDL avec rmic -idl Pour générer les bonnes souches CORBA

Compatibilité IIOP : Différences de développement coté client 1. Clause dimportation (idem serveur) –javax.rmi.PortableRemoteObject; –javax.naming.InitialContext; 2. Obtenir un objet distant toujours via JNDI –InitialContext IC = new InitialContext(env); –Object obj = IC.lookup("obj_ref"); –MyObject myobj = (MyObject)PortableRemoteObject.narrow(obj,MyObject.class); 3. Génération des souches compatibles IIOP : rmic -iiop

Conclusion Interopérabilité CORBA/Java RMI peu courante mais –Première approche d'unification : CORBA/Java RMI contre Micro$oft => effort pour faire face aux solutions tout Microsoft –des utilisations plus fréquentes depuis l'apparition des EJB Importance de linteropérabilité face à la prolifération des langages, des middlewares,... Maturation des technologies émergence des middlewares orientés composants : ccm,.net Réalité différente dans les entreprises : solutions tout XML nécessité de traduire de A vers XML puis de XML vers B même mécanismes sous-jacents (langage intermédiaire, conversion des données,...) Pourquoi réinventer la roue ?

Quelques références... Complément de cours : JNDI2.ppt Le site de Sun sur RMI-IIOP : Un article sur linteropérabilité RMI/CORBA : Tutorial JNDI

Message Oriented Middleware Pourquoi ?

Plan Pourquoi un nouveau type de middleware? Quelle lignée logicielle ? Historique JMS : Java Message Server Limplémentation Joram Lavenir pour ce type de middleware

Pourquoi un nouveau type de middleware? Quelles sont les contraintes RPC derrière RMI ?

Intention Quelles sont les contraintes RPC derrière RMI ? communication synchrone Client-Serveur le serveur est prédominant dans la communication On souhaite ne pas être bloqué pendant une communication (asynchrone) ne pas connaître toujours au préalable ceux avec qui on communique

Exemples dapplications non adaptées?

Exemple ladministration de réseaux Gestion à distance de machines, serveurs, hubs, etc Notification des événements en cas de panne –Intégration de modules hétérogènes distribués –Indépendance (asynchronisme) –Fiabilité

Quelle lignée logicielle ? Historique Ce que vous connaissez déjà

Quelle lignée logicielle ? Historique Communication par message au niveau socket : communication udp et multicast Connexions faibles entre objets : le design Pattern Observer Observable Programmation Java : interface graphique et gestion dévénements (listeners) Et en Corba : le service dévénements

Communication par message : Envoi de datagrammes application opération Client Serveur req1 rep1 reqn repn

Communication par diffusion : Multicast application Clientn Serveur application Client1 application Client2 Gr

Observer Observable ?

Motivation Un effet de bord fréquent de la partition dun système en une collection de classes coopérantes est la nécessité de maintenir la consistance entre les objets reliés entre eux. On ne veut pas obtenir la consistance en liant étroitement les classes, parce que cela aurait comme effet de réduire leur réutilisabilité.

Moyen Définir une dépendance de 1 à n entre des objets telle que lorsque létat dun objet change, tous ses dépendants sont informés et mis à jour automatiquement

Quand lappliquer Lorsquune abstraction possède deux aspects dont lun dépend de lautre. –Lencapsulation de ces aspects dans des objets séparés permet de les varier et de les réutiliser indépendemment. –Exemple : Modèle-Vue-Contrôleur Lorsquune modification à un objet exige la modification des autres, et que lon ne sait pas a priori combien dobjets devront être modifiés. Lorsquun objet devrait être capable dinformer les autres objets sans faire dhypothèses sur ce que sont ces objets,

Besoin dévénements Le pattern Observer décrit –comment établir les relations entre les objets dépendants. Les objets-clés sont –la source Peut avoir nimporte quel nombre dobservateurs dépendants Tous les observateurs sont informés lorsque létat de la source change – lobservateur. Chaque observateur demande à la source son état afin de se synchroniser

Structure

Bénéfices Utilisation indépendante des sources et des observateurs. –On peut réutiliser les sources sans réutiliser les observateurs et vice-versa. –On peut ajouter des observateurs sans modifier la source et les autres observateurs. Support pour la communication broadcast –La source ne se préoccupe pas du nombre dobservateurs.

Implémentations Java du pattern Une classe et une interface : class Observable {... } et interface Observer Un objet Observable doit être une instance de la classe qui dérive de la classe Observable Un objet observer doit être instance dune classe qui implémente linterface Observer void update(Observable o, Object arg); Des listeners

Le service dévénement Corba

Emetteur Récepteur Destination message Emetteur et récepteur connaissent seulement la destination Plusieurs émetteurs et récepteurs sur la Même destination Persistance du message (reçu ou non reçu) Format du message libre Acheminement par un bus de message

Le service de notification d'événements Corba La plupart des requêtes CORBA se traduisent par lexécution synchrone dune opération (le client connaît la référence de lobjet auquel la requête sadresse et le client ainsi que lobjet doivent être tous deux actifs) et sinon? Le service d'Evénements ou Event service permet de découpler la communication entre objets. Mode de communication découplé : lorsque le client et lobjet ne se connaissent pas; lorsque le client et lobjet ne sont pas actifs simultanément.

Communication événementielle principes de fonctionnement concepts de base : événements, réactions (traitements associés à loccurrence dun événement) principe dattachement : association dynamique entre un nom dévénement et une réaction communication anonyme : indépendance entre lémetteur et les consommateurs dun événement

Un canal dévènements Producteur Consommateur Canal Flot des évènements

Un canal dévènements : notification Producteur Consommateur Canal Producteur actif / Consommateur réactif Le canal diffuse les évènements Push PushSupplier PushConsumer void push(in any data) raises(Disconnected);

Un canal dévènements : demande Producteur Consommateur Canal Producteur réactif / Consommateur actif Le canal procure les évènements Pull() demande PullSupplier { //demande de production dun événement any pull() raises(Disconnected); // présence dun événement any try_pull(out boolean has_event) raises(Disconnected);

Un canal dévènements : file dévènements Producteur Consommateur Canal Producteur actif / Consommateur actif Le canal gère des files dévènements Push() Pull()

Un canal dévènements : collecte dévènements Producteur Consommateur Canal Producteur réactif / Consommateur réactif Le canal est une entité active voire intelligente Pull() Push()