APPLICATIONS RÉPARTIES
CHAPITRE 3 : OBJETS RÉPARTIS
RMI/CORBA
Mariem ZAOUALI
Les principes de base
TP 1: Design Patterns appliqués
aux systèmes distribués
01
Architectures réparties: du
client/serveur au Cloud
Computing
02
Objets répartis :
RMI/CORBA
TP 2: RMI
03
Intergiciels orientés
messages : JMS
TP 3: JMS
04
05
06
Plan du module
2
07
Frameworks Labs :
Spring et ASP
TP 4 : Architecture micro-
services
Architecture micro-
services : Spring et ASP
(Exposés)
Architecture
microservices: Spring
et ASP (Exposés)
Plan du cours
Motivation01
RMI02
03
3
Au-delà de RMI
MOTIVATION
Your Date Here Your Footer Here
1
4
MOTIVATION
•Dire une application -> ensemble d’objets conçus
pour travailler en collaboration.
•Dans une application objet répartie, les objets
résident :
• Sur différents ordinateurs connectés via un réseau.
• Dans différents processus sur la même machine.
Your Date Here Your Footer Here 5
MOTIVATION
•L’intérêt principal d’objet réparti?
• Un objet distant reste accessible de la même
manière qu’un objet local du système par invocation
de méthodes
• On ne sait pas où se trouve l’objet qu’on travaille avec
!
Your Date Here Your Footer Here 6
MOTIVATION
•En POO, on travaille
avec les variables.
•La variable ne stocke
pas l’objet lui-même,
elle contient une
référence mémoire qui
pointe vers l’objet
(faites un sysout d’un
objet)
Your Date Here Your Footer Here 7
MOTIVATION
•Et si on veut
travailler avec un
objet distant
depuis notre
machine locale?
• Penser à résoudre
le problèmes des
espaces
d’adressage
distncts
Your Date Here Your Footer Here 8
Objet distant
Objet distant non
reconnu en local
Motivation
•Les solutions possibles
• Passage par valeur de l’objet lui-même (comme le
constructeur de recopie en C++)
• Bonne solution?
• La copie crée un objet complètement indépendant
• Mêmes attributs et valeurs : OUI, mais les deux objets
(original et copie) sont disjoints
• Changement au niveau du l’objet original, la copie ne
change pas
• Parfois, cette procédure de copie est souhaitable
Your Date Here Your Footer Here 9
Motivation
•L’objet réparti est manipulable simultanément
par plusieurs clients (en local) bien que situé à
distance
•On utilise le « proxy »
•Le client croit posséder l’objet en local
•Le proxy utilise un protocole pour se synchroniser
avec l’objet distant
Your Date Here Your Footer Here 10
Motivation
Your Date Here Your Footer Here 11
Motivation
Your Date Here Your Footer Here 12
RMI
Your Date Here Your Footer Here
1
13
Définition de RMI
•RMI est une implémentation de RPC par SUN
pour le langage Java
•Grâce à RMI, on a intégré la notion objet dans les
communications inter-processus
•RMI = Remote Method Invocation
Your Date Here Your Footer Here 14
Objets répartis en RMI
• RMI permet la création d’objets répartis: un objet
RMI est interrogeable à distance par plusieurs
clients simultanément.
•Les clients d’un même objet RMI distant ont
l’impression de disposer de l’objet en local
• Un stub est un objet coté client qui gère l’encodage et
le désencodage des données.
• Un skeleton est un objet coté serveur qui gère
l’encodage et le désencodage des données lors de la
réception d’un appel à un objet RMI.
Your Date Here Your Footer Here 15
Objets répartis en RMI
Your Date Here Your Footer Here 16
Objets répartis en RMI
Transmission des données
Your Date Here Your Footer Here 17
•Les objets ne sont pas transmises de la même
façons entre le client serveur
Type Méthode de transmission
Types simples (int, float…) la transmission est effectuée par valeur
Les objets locaux (non RMI) implémentants
java.io.Serializable
la
transmission est effectue par valeur (sérialisation
java).
Les objets RMI implémentant java.rmi.Remote
la transmission est
effectuée par référence (via les stubs et
skeletons).
Dans les autres cas, une exception
java.rmi.MarshalException est levée.
Modèle de programmation
Ecriture d’une application RMI
• On procède par étapes:
• 1. Déclaration des services accessibles à distance
→ Ecriture d’une interface distante
• 2. Définition du code des services
→ Ecriture d’une classe d’objet serveur implantant l’interface
• 3. Instanciation et enregistrement de l’objet serveur
→ Ecriture du programme serveur
4. Interaction avec l’objet serveur
• → Ecriture du programme client
Your Date Here Your Footer Here 18
Modèle de programmation
Ecriture d’une interface distante
Your Date Here Your Footer Here 19
Modèle de programmation
Ecriture d’une classe implémentant l’interface
distante
Your Date Here Your Footer Here 20
Les constructeurs doivent lever une
exception java.rmi.RemoteException
la classe doit étendre
java.rmi.server.UnicastRemoteObject,
ce qui facilitera le déploiement de l’objet serveur dans le
runtime RMI
Modèle de programmation
Génération des stubs
•Manipulation non nécessaire si les JVM de
l’architecture répartie sont >= v1.5.0
•Sinon, lancer rmic
Your Date Here Your Footer Here 21
Modèle de programmation
Ecriture du programme serveur
Your Date Here Your Footer Here 22
Modèle de programmation
Ecriture du programme client
Your Date Here Your Footer Here 23
Live demo RMI
•Code disponible sur mon github!
MariemZaouali/java-rmi-example
Your Date Here Your Footer Here 24
AU DELÀ DE RMI
Your Date Here Your Footer Here
2
25
Services offerts par RMI
Your Date Here Your Footer Here 26
•RMI est considéré comme un intergiciel (middleware)
relativement basique
•Les services qu’il fournit aux objets répartis sont
assez primitifs, mais néanmoins nécessaires.
•3 services complémentaires de RMI:
•Service de nommage (rmiregistry)
• Service d’activation d’objets à la demande
• Service de Garbage Collector (gestion de la mémoire)
Limites de RMI
Your Date Here Your Footer Here 27
•Le protocole de transport utilisé par défaut par
RMI est JRMP (Java Remote Method Protocol)
construit au dessus de TCP.
• Mais ce protocole ne permet la communication
qu’entre objets répartis RMI implémentés en Java.
• Il existe un autre protocole de transport nommé
RMI/IIOP
CORBA
Your Date Here Your Footer Here 28
•CORBA correspond à un autre type de middleware à
objets répartis qui n’est pas spécifiquement lié au
monde Java.
•RMI/IIOP correspond à la fusion du modèle simple de
programmation RMI avec le protocole robuste IIOP
(protocole pour communiquer avec des objets
CORBA).
•L’utilisation de l’implémentation d’IIOP avec RMI en
lieu et place de JRMP permet d’obtenir un certain
niveau d’intéropérabilité entre RMI et CORBA
Le protocole RMI/IIOP
Your Date Here Your Footer Here 29
• Pour accéder à tous types
d’objets répartis compatibles
IIOP on n’utilise plus directement
le service de nommage de RMI
mais on passe par JNDI (Java
Naming and Directory Interface):
• Ce n’est pas un service mais un
ensemble d’interfaces (une API
Java).
• Cette API permet d’unifier l’accès
à différents serveurs de noms
(dont le RMI registry et le
registry CORBA).
THANK YOU!
Do you have any questions?
30

Cours 3 les objets distants rmi corba

  • 1.
    APPLICATIONS RÉPARTIES CHAPITRE 3: OBJETS RÉPARTIS RMI/CORBA Mariem ZAOUALI
  • 2.
    Les principes debase TP 1: Design Patterns appliqués aux systèmes distribués 01 Architectures réparties: du client/serveur au Cloud Computing 02 Objets répartis : RMI/CORBA TP 2: RMI 03 Intergiciels orientés messages : JMS TP 3: JMS 04 05 06 Plan du module 2 07 Frameworks Labs : Spring et ASP TP 4 : Architecture micro- services Architecture micro- services : Spring et ASP (Exposés) Architecture microservices: Spring et ASP (Exposés)
  • 3.
  • 4.
    MOTIVATION Your Date HereYour Footer Here 1 4
  • 5.
    MOTIVATION •Dire une application-> ensemble d’objets conçus pour travailler en collaboration. •Dans une application objet répartie, les objets résident : • Sur différents ordinateurs connectés via un réseau. • Dans différents processus sur la même machine. Your Date Here Your Footer Here 5
  • 6.
    MOTIVATION •L’intérêt principal d’objetréparti? • Un objet distant reste accessible de la même manière qu’un objet local du système par invocation de méthodes • On ne sait pas où se trouve l’objet qu’on travaille avec ! Your Date Here Your Footer Here 6
  • 7.
    MOTIVATION •En POO, ontravaille avec les variables. •La variable ne stocke pas l’objet lui-même, elle contient une référence mémoire qui pointe vers l’objet (faites un sysout d’un objet) Your Date Here Your Footer Here 7
  • 8.
    MOTIVATION •Et si onveut travailler avec un objet distant depuis notre machine locale? • Penser à résoudre le problèmes des espaces d’adressage distncts Your Date Here Your Footer Here 8 Objet distant Objet distant non reconnu en local
  • 9.
    Motivation •Les solutions possibles •Passage par valeur de l’objet lui-même (comme le constructeur de recopie en C++) • Bonne solution? • La copie crée un objet complètement indépendant • Mêmes attributs et valeurs : OUI, mais les deux objets (original et copie) sont disjoints • Changement au niveau du l’objet original, la copie ne change pas • Parfois, cette procédure de copie est souhaitable Your Date Here Your Footer Here 9
  • 10.
    Motivation •L’objet réparti estmanipulable simultanément par plusieurs clients (en local) bien que situé à distance •On utilise le « proxy » •Le client croit posséder l’objet en local •Le proxy utilise un protocole pour se synchroniser avec l’objet distant Your Date Here Your Footer Here 10
  • 11.
    Motivation Your Date HereYour Footer Here 11
  • 12.
    Motivation Your Date HereYour Footer Here 12
  • 13.
    RMI Your Date HereYour Footer Here 1 13
  • 14.
    Définition de RMI •RMIest une implémentation de RPC par SUN pour le langage Java •Grâce à RMI, on a intégré la notion objet dans les communications inter-processus •RMI = Remote Method Invocation Your Date Here Your Footer Here 14
  • 15.
    Objets répartis enRMI • RMI permet la création d’objets répartis: un objet RMI est interrogeable à distance par plusieurs clients simultanément. •Les clients d’un même objet RMI distant ont l’impression de disposer de l’objet en local • Un stub est un objet coté client qui gère l’encodage et le désencodage des données. • Un skeleton est un objet coté serveur qui gère l’encodage et le désencodage des données lors de la réception d’un appel à un objet RMI. Your Date Here Your Footer Here 15
  • 16.
    Objets répartis enRMI Your Date Here Your Footer Here 16
  • 17.
    Objets répartis enRMI Transmission des données Your Date Here Your Footer Here 17 •Les objets ne sont pas transmises de la même façons entre le client serveur Type Méthode de transmission Types simples (int, float…) la transmission est effectuée par valeur Les objets locaux (non RMI) implémentants java.io.Serializable la transmission est effectue par valeur (sérialisation java). Les objets RMI implémentant java.rmi.Remote la transmission est effectuée par référence (via les stubs et skeletons). Dans les autres cas, une exception java.rmi.MarshalException est levée.
  • 18.
    Modèle de programmation Ecritured’une application RMI • On procède par étapes: • 1. Déclaration des services accessibles à distance → Ecriture d’une interface distante • 2. Définition du code des services → Ecriture d’une classe d’objet serveur implantant l’interface • 3. Instanciation et enregistrement de l’objet serveur → Ecriture du programme serveur 4. Interaction avec l’objet serveur • → Ecriture du programme client Your Date Here Your Footer Here 18
  • 19.
    Modèle de programmation Ecritured’une interface distante Your Date Here Your Footer Here 19
  • 20.
    Modèle de programmation Ecritured’une classe implémentant l’interface distante Your Date Here Your Footer Here 20 Les constructeurs doivent lever une exception java.rmi.RemoteException la classe doit étendre java.rmi.server.UnicastRemoteObject, ce qui facilitera le déploiement de l’objet serveur dans le runtime RMI
  • 21.
    Modèle de programmation Générationdes stubs •Manipulation non nécessaire si les JVM de l’architecture répartie sont >= v1.5.0 •Sinon, lancer rmic Your Date Here Your Footer Here 21
  • 22.
    Modèle de programmation Ecrituredu programme serveur Your Date Here Your Footer Here 22
  • 23.
    Modèle de programmation Ecrituredu programme client Your Date Here Your Footer Here 23
  • 24.
    Live demo RMI •Codedisponible sur mon github! MariemZaouali/java-rmi-example Your Date Here Your Footer Here 24
  • 25.
    AU DELÀ DERMI Your Date Here Your Footer Here 2 25
  • 26.
    Services offerts parRMI Your Date Here Your Footer Here 26 •RMI est considéré comme un intergiciel (middleware) relativement basique •Les services qu’il fournit aux objets répartis sont assez primitifs, mais néanmoins nécessaires. •3 services complémentaires de RMI: •Service de nommage (rmiregistry) • Service d’activation d’objets à la demande • Service de Garbage Collector (gestion de la mémoire)
  • 27.
    Limites de RMI YourDate Here Your Footer Here 27 •Le protocole de transport utilisé par défaut par RMI est JRMP (Java Remote Method Protocol) construit au dessus de TCP. • Mais ce protocole ne permet la communication qu’entre objets répartis RMI implémentés en Java. • Il existe un autre protocole de transport nommé RMI/IIOP
  • 28.
    CORBA Your Date HereYour Footer Here 28 •CORBA correspond à un autre type de middleware à objets répartis qui n’est pas spécifiquement lié au monde Java. •RMI/IIOP correspond à la fusion du modèle simple de programmation RMI avec le protocole robuste IIOP (protocole pour communiquer avec des objets CORBA). •L’utilisation de l’implémentation d’IIOP avec RMI en lieu et place de JRMP permet d’obtenir un certain niveau d’intéropérabilité entre RMI et CORBA
  • 29.
    Le protocole RMI/IIOP YourDate Here Your Footer Here 29 • Pour accéder à tous types d’objets répartis compatibles IIOP on n’utilise plus directement le service de nommage de RMI mais on passe par JNDI (Java Naming and Directory Interface): • Ce n’est pas un service mais un ensemble d’interfaces (une API Java). • Cette API permet d’unifier l’accès à différents serveurs de noms (dont le RMI registry et le registry CORBA).
  • 30.
    THANK YOU! Do youhave any questions? 30