Vous êtes sur la page 1sur 9

08/03/2013

Université Tunis Elmanar


Qu’est ce qu’une
Institut Supérieur d’Informatique
application répartie ?

Cours : SOA et services Web • Il s’agit d’une application découpée en plusieurs


unités
Chapitre
p 1: Evolution des systèmes
y – Chaque unité peut être placée sur une machine
d’information différente
– Chaque unité peut s’exécuter sur un système
différent
Présenté par : Sahbi BAHROUN
– Chaque unité peut être programmée dans un
langage différent

Année Universitaire 2012/2013 1


SOA et services web: 3éme SIL 2

Construction d’une
Evolution des applications réparties
application répartie
• Identifier les éléments fonctionnels de
l’application pour les regrouper au sein d’unités
• Estimer les interactions entre unités
g
• Définir le schéma d’organisation de l’application
pp

Application monolithique Application répartie


SOA et services web: 3éme SIL 3 SOA et services web: 3éme SIL 4

Inconvénients du réparti
Avantages du réparti
• Une mise en œuvre plus délicate
• Organisationnel – Gestion des erreurs
– Suivi des exécutions
– Décentraliser les responsabilités
• Pas de vision globale instantanée
– Découpage en unité – Délais des transmissions
• Fiabilité et disponibilité • Administration
Ad i i t ti plus l llourde
d
– Individualisation des défaillances – Installation
– Duplication des constituants de l’application – Configuration
– Surveillance
• Performance • Coût
– Partage de la charge – Formation
• Maintenance et évolution – Achat des environnements

SOA et services web: 3éme SIL 5 SOA et services web: 3éme SIL 6

1
08/03/2013

Les SI: de la distribution à Internet Conception d’un SI

Pair à pair ou Égal à égal


(Peer to peer)

Une seule machine

Client-Serveur Pair à pair


Client-Serveur 8
7 SOA et services web: 3éme SIL 8

Conception d’un SI Architecture d’un SI: 1-tier

9 10
SOA et services web: 3éme SIL 9 SOA et services web: 3éme SIL 10

Architecture d’un SI: 2-tiers Architecture d’un SI: 3-tiers

11 12
SOA et services web: 3éme SIL 11 SOA et services web: 3éme SIL 12

2
08/03/2013

Middleware:
Mécanisme de base

Middleware:
Définition

SOA et services web: 3éme SIL 13 SOA et services web: 3éme SIL 14

Middleware: Middleware: Rôles de base


• En architecture informatique, un middleware est un logiciel tiers qui crée un
réseau d'échange d'informations entre différentes applications informatiques. Le
réseau est mis en œuvre par l'utilisation d'une même technique d'échange • Résoudre l’Interopérabilité : Unifier l’accès à
d'informations dans toutes les applications impliquées à l'aide de composants
logiciels.
des machines distantes
• Les composants logiciels du middleware assurent la communication entre les • Résoudre l’Hétérogénéité
l Hétérogénéité : Etre indépendant
applications quels que soient les ordinateurs impliqués et quelles que soient les
caractéristiques matérielles et logicielles des réseaux informatiques, des des systèmes d’exploitation et du langage de
protocoles réseau, des systèmes d'exploitation impliqués.
programmation des applications
• Les techniques les plus courantes d'échange d'informations sont l'échange de
messages, l'appel de procédures à distance et la manipulation d'objets à distance.
• Les middleware sont typiquement utilisés comme ciment pour relier des
applications informatiques disparates des systèmes d'information des entreprises
et des institutions.

SOA et services web: 3éme SIL 15 SOA et services web: 3éme SIL 16

Classes de middlewares
Evolution des Middlewares
• Objets
– CORBA (ORBIX, VisiBroker, OpenORB, …)
– DCOM
• Composant
– J2EE (Websphere, Weblogic, JBOSS)
– .Net
• Web-Service

SOA et services web: 3éme SIL 17 SOA et services web: 3éme SIL 18

3
08/03/2013

Un exemple simple de middleware :


Remote Procedure Call (RPC)

• Introduit par Birrell & Nelson (1984)


• Garder la sémantique de l’appel de procédure local ou
Local Procedure Call (LPC)
Remote Procedure Call • Fonctionnement synchrone
• Communication transparente entre le client et le serveur
RPC

SOA et services web: 3éme SIL 19 SOA et services web: 3éme SIL 20

Illustration du RPC RPC: Principe


• Un client a une description (ou une interface) de
procédures disponibles chez un serveur distant
Emission d'une requête
• Le client invoque une procédure à distance
• Le serveur exécute localement cette procédure
serveur

• Le serveur renvoie au client le résultat (type de retour)


client

Traitement
de la requête de la procédure.

Renvoie d'une réponse

SOA et services web: 3éme SIL 21 SOA et services web: 3éme SIL 22

Un exemple simple de middleware :


RPC : Exemple Remote Procedure Call (RPC)

SOA et services web: 3éme SIL 23 SOA et services web: 3éme SIL 24

4
08/03/2013

RPC : Fonctionnement Problèmes


• Pas de passage de paramètres par adresse :
– impossible de passer des pointeurs (ou références) en effet, les
espaces d'adressage du client et du serveur sont différents donc aucun
sens de passer une adresse
• La procédure distante n'a pas accès aux variables globales du
client aux périphériques dd'E/S
client, E/S (affichage dd'un
un message dd'erreur
erreur !)
• Un appel de procédure obéit à un fonctionnement synchrone: une
instruction suivant un appel de procédure ne peut pas s’exécuter
tant que la procédure appelée n’est pas terminée

SOA et services web: 3éme SIL 25 SOA et services web: 3éme SIL 26

RMI : Origine et Objectifs

• Solution (SUN) pour adapter le principe des RPC à la


POO (à partir du JDK 1.1).
• Rendre transparent la manipulation d'objets situés
Remote Method Invocation dans un autre espace d'adressage
RMI • Les appels doivent être transparents que l'objet soit
local ou distant
Personne Opersonne = new Personne();
Int qi = Opersonne.calculerQi() ;

SOA et services web: 3éme SIL 27 SOA et services web: 3éme SIL 28

RMI : Généralités RMI : Origine et Objectifs

• Principe: mécanisme permettant l’appel de méthodes entre objets Java • invoquer une méthode d’un objet se trouvant sur une autre machine
s’exécutant sur des machines virtuelles différentes (espaces d’adressage exactement de la même manière que s’il se trouvait au sein de la même
distincts), sur le même ordinateur ou sur des ordinateurs distants reliés par un machine objetDistant.methode();
réseau • utiliser un objet distant (OD), sans savoir où il se trouve, en demandant à un
– utilise
tili directement
di t t les
l socket
k t service
i « dédié » ded renvoyer son adresse
d objetDistant
bj tDi t t =
– code ses échanges avec un protocole propriétaire : R.M.P. (Remote ServiceDeNoms.recherche("monObjet");
Method Protocol) • pouvoir passer un OD en paramètre d’appel à une méthode locale ou distante
• Objectifs: rendre transparent l’accès à des objets distribués sur un réseau resultat = objetLocal.methode(objetDistant);
faciliter la mise en œuvre et l’utilisation d’objets distants Java préserver la resultat = objetDistant.methode(autreObjetDistant);
sécurité (inhérent à l’environnement Java) • pouvoir récupérer le résultat d’un appel distant sous forme d’un nouvel objet
– RMISecurityManager qui aurait été créé sur la machine distante
– Distributed Garbage Collector (DGC) NouvelObjetDistant = ObjetDistant.methode() ;

SOA et services web: 3éme SIL 29 SOA et services web: 3éme SIL 30

5
08/03/2013

RMI : Objets et invocations


distantes RMI : principes
• Objet distant (objet serveur) • Outils pour :
– ses méthodes sont invoquées depuis une autre JVM
– la génération des stub/skeleton,
– dans un processus différent (même machine)
– l’enregistrement par le nom,
– dans une machine distante (via réseau)
– son comportement est décrit par une interface (ou plus) distante Java – l’activation
– déclare les méthodes distantes utilisables par le client • Mono-langage et Multiplateforme: de JVM à JVM (les données
– se manipule comme un objet local et objets ont la même représentation qqs la JVM)
• Invocation distante (RMI)
• Orienté Objet : Les RMIs utilisent le mécanisme standard de
– action d’invoquer une méthode d’une interface distante d’un objet distant
sérialisation de JAVA pour l’envoi d’objets.
– même syntaxe qu’une invocation sur un objet local
• Dynamique : Les classes des Stubs et des paramètres peuvent
être chargées dynamiquement via HTTP (http://) ou NFS (file:/)

SOA et services web: 3éme SIL 31 SOA et services web: 3éme SIL 32

Structure des couches RMI Fonctionnement RMI


• Souche ou Stub (sur le client)
– représentant local de l’objet distant qui implémente les méthodes
“exportées” de l’objet distant
– “marshalise” les arguments de la méthode distante et les envoie en un
flot de données au serveur
j retournés par
– “démarshalise” la valeur ou l’objet p la méthode distante
– la classe xx_Stub peut être chargée dynamiquement par le client

Lorsqu'un objet instancié sur une machine cliente désire accéder à des
• Squelette ou Skeleton (sur le serveur) méthodes d'un objet distant, il effectue les opérations suivantes :
– “démarshalise” les paramètres des méthodes
– fait un appel à la méthode de l’objet local au serveur
– “marshalise” la valeur ou l’objet renvoyé par la méthode

SOA et services web: 3éme SIL 33 SOA et services web: 3éme SIL 34

Fonctionnement RMI (2) RMI : un RPC à objets

1) il localise l'objet distant grâce à un service de désignation : le registre RMI


2) il obtient dynamiquement une image virtuelle de l'objet distant (appelée
stub ou souche en français). Le stub possède exactement la même interface
que l'objet distant.
3) Le stub transforme l'appel de la méthode distante en une suite d'octets, c'est
ce que l'on appelle la sérialisation, puis les transmet au serveur instanciant
l'objet sous forme de flot de données. On dit que le stub "marshalise" les
arguments de la méthode distante.
4) Le squelette instancié sur le serveur "désérialise" les données envoyées par
le stub (on dit qu'il les "démarshalise"), puis appelle la méthode en local
5) Le squelette récupère les données renvoyées par la méthode (type de base,
objet ou exception) puis les marshalise
6) le stub démarshalise les données provenant du squelette et les transmet à
l'objet faisant l'appel de méthode à distance

SOA et services web: 3éme SIL 35 SOA et services web: 3éme SIL 36

6
08/03/2013

Structure des couches RMI (i) : architecture Structure des couches RMI
logique
Rmi Registry

Informations
sur le service • Couche des références distantes
– traduit la référence locale au stub en une référence à l’objet
distant
Client RMI Serveur RMI – elle est servie par un processus tier : rmiregistry
(Application / Applet / Servlet)

Interface Distante Implémentation Distante


• Couche de transport
Invocation de
– écoute les appels entrants
Souche ou Stub
méthodes
Squelette ou Skeleton – établit et gère les connexions avec les sites distants
methode(...)
Couche de Référence Couche de Référence
java.rmi.Naming java.rmi.Naming

Couche de Transport Couche de Transport


java.net.Socket pour TCP java.net.SocketServer pour TCP
Réseau
(IP) 37 SOA et services web: 3éme SIL 38

Mise en œuvre RMI


L’enregistrement de l’objet
hostcli hostreg
Pour créer une application avec RMI il suffit de procéder comme suit : Client DinarsClient rmiregistry
• définir la classe distante. Celle-ci doit dériver de
"DinarsObject"
java.rmi.server.UnicastRemoteObject (utilisant elle-même les classes Socket
et SocketServer, permettant la communication par protocole TCP) ... ...
• définir l'interface pour la classe distante. Celle-ci doit implémenter
l'interface jjava.rmi.Remote et déclarer les méthodes ppubliques
q gglobales de
l'objet, c'est-à-dire les méthodes partageables. De plus ces méthodes doivent 2- le serveur enregistre
l’objet distant :
pouvoir lancer une exception de type java.rmi.RemoteException.
il communique
• créer les classes pour le stub et le squelette grâce à la commande rmic une instance de Stub
• Lancer le registre RMI et lancer l'application serveur, c'est-à-dire instancier hostser
l'objet distant. Celui-ci lors de l'instanciation créera un lien avec le registre Socket Serveur DinarsServer
• Créer un programme client capable d'accèder aux méthodes d'un objet sur http ou nfs
le serveur grâce à la méthode Naming.lookup()
Impl Stub Skel 1- le serveur charge les
• Compiler l'application cliente
.class : classes Stub et Skel
• Instancier le client
SOA et services web: 3éme SIL 39 Instance : 40

Invocation d’une méthode


La récupération du Stub
hostcli hostreg hostcli hostreg
3- le client réclame le Stub associé à
Client DinarsClient "DinarsObject" rmiregistry Client DinarsClient rmiregistry

"DinarsObject" "DinarsObject"
5- le client invoque
... ...
une méthode sur le Stub ... ...
4- rmiregistry retourne le Stub

6- le Stub « marshalle »
8- le Stub « demashalle » les paramètres de la méthode
le résultat de la méthode et les envoie au serveur

hostser hostser
Socket Socket
Serveur DinarsServer Serveur DinarsServer
http ou nfs appel méthode

Impl Skel
Stub Impl Stub Skel
7- le Skel « demarshalle » les
.class : .class : paramètres de la méthode
et invoque la méthode sur l ’objet
Instance : 42 retourne le résultat marshallé
Instance : 41 42

7
08/03/2013

Etapes de création : serveur


Interface objet distant Etapes de création : serveur
Implémentation

CalculImpl.java

CalculInterface.java

SOA et services web: 3éme SIL 43 SOA et services web: 3éme SIL 44

Etapes de création : serveur


Explications Génération des stub et skeleton
• Le service de nommage : Java.rmi.Naming
Fonction Rôle • Compilation des fichiers :Javac
bind (name, obj) Lie l'objet distant (remote object) à un nom spécifique
rebind (name, obj) Lie l'objet distant même s'il existe déjà • Générartion des stub et skeleton
unbind (name) Retire l'association entre un nom et un objet distant > Rmic testrmi.calculImpl
Obj lookup
l k (url)
( l) R
Renvoie
i l'objet
l' bj t distant
di t t associé
ié à une URL
String [] list(url) Renvoie la liste des associations sur la registry spécifiée
dans l'URL

SOA et services web: 3éme SIL 45 SOA et services web: 3éme SIL 46

Lancement du serveur
Ecriture de la classe client

• Lancement du service de nommage :


> rmiregistry <port>
• Lancement du serveur
java -Djava.rmi.server.codebase=<URL>
-Djava.rmi.server.hostname=<hôte>
-Djava.security.policy=java.policy <serveur>.

SOA et services web: 3éme SIL 47 SOA et services web: 3éme SIL 48
:

8
08/03/2013

Architecture d’un SI: 3-tiers


Lancement du client avec client léger

>java -Djava.rmi.server.codebase=<URL>
-Djava.security.policy=java.policy
<client>
>2
2
>10

50
SOA et services web: 3éme SIL 49 SOA et services web: 3éme SIL 50

Service web et SOA


Service web et SOA
• Limites des middlewares "traditionnels" Fournir une architecture générale pour les applications
– Mono-langage : Java RMI, réparties sur internet :
– Mono-plateforme : DCOM sous Windows, ƒinter-opérables :
•basé sur des standards ouverts
– Complexe à mettre en œuvre : CORBA.
•sans composant spécifique à un langage ou un
• Ad
Adaptation
t ti ddes architectures
hit t réparties
é ti au système d’exploitation
contexte de l’Internet où le Web est considéré ƒfaiblement couplées :
comme un nouveau middleware. •limiter au maximum les contraintes imposées sur le
modèle de programmation des différents éléments de
– Multi-langage, Multi-plateforme,
l’application
– Spécification garantie par un organisme indépendant, •par exemple ne pas imposer un modèle objet
– Simple à mettre en œuvre. supportant la montée en charge : par exemple en
n’imposant pas un modèle de type RPC
51 52
SOA et services web: 3éme SIL 51 SOA et services web: 3éme SIL 52

Vous aimerez peut-être aussi