Des sockets à RMI Programmation réseau versus programmation objet RMI = Remote Method Invocation.

39
Des sockets à RMI Programmation réseau versus programmation objet RMI = Remote Method Invocation

Transcript of Des sockets à RMI Programmation réseau versus programmation objet RMI = Remote Method Invocation.

Page 1: Des sockets à RMI Programmation réseau versus programmation objet RMI = Remote Method Invocation.

Des sockets à RMI

Programmation réseau versus programmation objet

RMI = Remote Method Invocation

Page 2: Des sockets à RMI Programmation réseau versus programmation objet RMI = Remote Method Invocation.

Pourquoi ?

• Maturation de la technologie orientée objet– ADA, Modula– Smalltalk , C++, Java

• Maturation des communications Client-Serveur – sockets– RPC (Remote Procedure Call)– couches OSI

Page 3: Des sockets à RMI Programmation réseau versus programmation objet RMI = Remote Method Invocation.

L’héritage de la programmation Client Serveur

Importance du marshallingAutomatisation dans le cas des Appels de procédures à distanceDes serveurs accessibles simultanément par plusieurs clientsEnregistrement des serveurs dans des annuaires de nomsCommunication connectée ou par message…..

Page 4: Des sockets à RMI Programmation réseau versus programmation objet RMI = Remote Method Invocation.

Circulation de messages et machines hétérogènes

• Couche de services– Annuaires

– Sécurité

– Protocoles d’applications

• Couche de transport– TCP

– UDP

Infrastructure informatique de distribution

Page 5: Des sockets à RMI Programmation réseau versus programmation objet RMI = Remote Method Invocation.

Exemple

CLIENT Essifun SERVEUR de Surnoms

oter

infrastructure

Avantages d’un Protocole d’application ?

Page 6: Des sockets à RMI Programmation réseau versus programmation objet RMI = Remote Method Invocation.

Communication client serveur

CLIENT SERVEUR

Préparation de la requêteEnvoi de la requêteAttente du résultat….

Analyse du résultat reçu

Connexion au serveur Attente de requêtes

Analyse de la requête…..Exécution….Préparation de la réponseEnvoi de la réponse

Page 7: Des sockets à RMI Programmation réseau versus programmation objet RMI = Remote Method Invocation.

Exemple : annuaire des surnoms

EssiFun SERVEUR de Surnoms

enregistrer(« paul », 

«bug »)

marshalling

marshalling

unmarshalling

unmarshalling

0111000101000..

101..

enregistrer(« paul »,

 «bug ») = TRUE

TRUE

1:Paul:bug ou ENR/nPaul/n/bug/n …ou Objet Requête/Reponse Seriablizable

1:Paul:bug ou ENR/nPaul/n/bug/n ou Objet Requête Seriablizable

1:TRUE ou Objet Réponse Seriablizable

Les couches de transport gèrent l’encodage final des données

Page 8: Des sockets à RMI Programmation réseau versus programmation objet RMI = Remote Method Invocation.

L’héritage de la programmation par objets

Envoi de messages = appels de méthodesEncapsulation et InterfaceHéritage et Composition

Page 9: Des sockets à RMI Programmation réseau versus programmation objet RMI = Remote Method Invocation.

Objets = briques logicielles

• Assembler des briques élémentaires

• Réduire la complexité des systèmes d’information

Séparation entre interface et implémentation

Représentation et types de données

Mécanismes d’abstraction

Page 10: Des sockets à RMI Programmation réseau versus programmation objet RMI = Remote Method Invocation.

Séparation entre interface et implémentation

• séparation de la définition et de l’implémentation : encapsulation

• interface : partie visible de l’objet

• implémentation : partie privée inaccessible depuis d’autres objets

• interface = contrat entre l’objet et le monde extérieur

Page 11: Des sockets à RMI Programmation réseau versus programmation objet RMI = Remote Method Invocation.

Séparation entre interface et implémentation

• Assemblage des objets dépend uniquement des interfaces, le changement local d’un objet ne perturbe pas l’ensemble de l’application.

Importance de la nomenclature des objetssubstitution logique liée à la substitution physique

Page 12: Des sockets à RMI Programmation réseau versus programmation objet RMI = Remote Method Invocation.

Représentation et Types de données

• Définition de nouveaux types

• Choix d’un type pour une donnée (ex. montant) devient une contrainte sur la conception.

Types de données Abstraits

considérés comme des types de base

Page 13: Des sockets à RMI Programmation réseau versus programmation objet RMI = Remote Method Invocation.

Mécanismes d’abstraction

• Abstraction des données : essence du procédé de construction de systèmes d ’information à base d ’objets distribués

• par Classe et/ou Composition

Des mises en œuvre différentes selon les cas

Page 14: Des sockets à RMI Programmation réseau versus programmation objet RMI = Remote Method Invocation.

Classes et héritage

Com pte CodeviD e p o ser

com pte PELD é b ite r

Com pte de particulierC re d ite rD e b ite r

Mécanisme d’abstraction + GénéralisationSurcharge des méthodes par héritage

Page 15: Des sockets à RMI Programmation réseau versus programmation objet RMI = Remote Method Invocation.

Classe et Composition

CARROSSERIE

MOTEUR

VEHICULE

Page 16: Des sockets à RMI Programmation réseau versus programmation objet RMI = Remote Method Invocation.

Que peut on automatiser ?

A partir du protocole d’applications

Au minimum, la phase de marshalling/unmarshalling(hétérogéneité des langages, des systèmes, etc)

Selon les cas, le squelette du serveur les appels distants du client

Page 17: Des sockets à RMI Programmation réseau versus programmation objet RMI = Remote Method Invocation.

Interaction Client/server :socket TCP

Serveur (s’exécutant sur l’hôte) Client

wait for incomingconnection requestconnectionSocket =welcomeSocket.accept()

create socket,port=x, forincoming request:welcomeSocket =

ServerSocket()

create socket,connect to hostid, port=xclientSocket =

Socket()

closeconnectionSocket

read reply fromclientSocket

closeclientSocket

send request usingclientSocketread request from

connectionSocket

write reply toconnectionSocket

TCP connection setup

Page 18: Des sockets à RMI Programmation réseau versus programmation objet RMI = Remote Method Invocation.

Client/server socket interaction: UDP

closeclientSocket

Serveur

read reply fromclientSocket

create socket,clientSocket = DatagramSocket()

Create, address (hostid, port=x,send datagram request using clientSocket

create socket,port=x, forincoming request:serverSocket = DatagramSocket()

read request fromserverSocket

write reply toserverSocketspecifying clienthost address,port umber

Client

Page 19: Des sockets à RMI Programmation réseau versus programmation objet RMI = Remote Method Invocation.

Exemple : annuaire des surnoms

boolean enregistrer(Personne p, Surnom sn)ListOfPersonne lister()boolean oter(Surnom surnom)

AnnuaireEssi

listePersonnes

Enregistrer(AnneMarie,AM)lister()

Client

Serveur

Page 20: Des sockets à RMI Programmation réseau versus programmation objet RMI = Remote Method Invocation.

Exemple : annuaire des surnoms

• interface : partie visible de l’objet (enregistrer, oter, lister, …) = méthodes publiques Java

• implémentation : partie privée inaccessible depuis d’autres objets (listePersonnes : un vecteur de Personne ou un tableau ou ….)

• Interface distante = contrat entre l’objet et le monde extérieur (save impossible par exemple)

Page 21: Des sockets à RMI Programmation réseau versus programmation objet RMI = Remote Method Invocation.

Circulation de messages et machines hétérogènes

• Couche de services

• Objets de l’application qui résultent de la conception du modèle

• Couche de transport

• Responsable de l’administration des objets et de l’acheminement des messages

Infrastructure informatique de distribution

Page 22: Des sockets à RMI Programmation réseau versus programmation objet RMI = Remote Method Invocation.

CLIENT SERVEUR

Transport TCP IP...

Service (marshalling..)

transaction sécurité nommage

Infrastructure ?

Page 23: Des sockets à RMI Programmation réseau versus programmation objet RMI = Remote Method Invocation.

Objets distribués

• Un programme (objet) peut être à la fois client de certains serveurs et serveur d’autres clients

• Il peut y avoir reconfiguration dynamique des rôles Client Serveur

Page 24: Des sockets à RMI Programmation réseau versus programmation objet RMI = Remote Method Invocation.

Infrastructure Objets Distribués

Client Client Serveur Serveur

Objet1

Objet2 Objet3

Page 25: Des sockets à RMI Programmation réseau versus programmation objet RMI = Remote Method Invocation.

Générateurs

RMIC / Orbix...

IDL Int. JavaSpécificationsdes données

Générateurs

Fichiersgénérés Stubs Skeletons Proxy

(mise en œuvre de la sérialisationet désérialisation…)

Page 26: Des sockets à RMI Programmation réseau versus programmation objet RMI = Remote Method Invocation.

RMI

public interface Surnoms extends java.rmi.Remote{public Boolean enregistrer(String nom, String surnom) throws

java.rmi.RemoteException, ServeurSurnoms.surnoms.ExisteDeja ;

…. }

Page 27: Des sockets à RMI Programmation réseau versus programmation objet RMI = Remote Method Invocation.

RMI

Classes et Interfaces

ClasseLocale

Souche Squelette

ClasseDistante

InterfaceDistante

Remote

Appel méthode m() Appel méthode m()

Machine locale Machine distante

InterfaceDistante

Page 28: Des sockets à RMI Programmation réseau versus programmation objet RMI = Remote Method Invocation.

Comment activer des objets distribués ?

• Messages échangés entre objets =– Requêtes ou Résultats

• Certains envois de messages n’attendent pas de résultats

• Requête = Destinataire + nom de méthode + Paramètres

• Résultat = Donnée ou indication d’une erreur ou d’une défaillance

Page 29: Des sockets à RMI Programmation réseau versus programmation objet RMI = Remote Method Invocation.

Comment activer des objets distribués ?

• Mécanisme d’exécution ou de transport– définit comment les messages sont véhiculés de

l’objet client vers l’objet serveur (destinataire)– retrouver et activer les objets adéquats

• Un objet client a deux manières d’envoyer des messages – invocation statique– invocation dynamique

Page 30: Des sockets à RMI Programmation réseau versus programmation objet RMI = Remote Method Invocation.

Invoquer les services dont il a besoin par envoi de requêtes

Accès à l’objet destinataire par une référence à son implémentation par l’interface

Rôle du client

Unités autonomes - solidité - robustesse - adaptation

ID

Page 31: Des sockets à RMI Programmation réseau versus programmation objet RMI = Remote Method Invocation.

Rôle de l’infrastructure

• administre les implémentations, la création et la destruction d’objets

• réceptionne les requêtes, localise le serveur, vérifie son état et celui du destinataire

• active au besoin le serveur, lui envoie les données de la requête

• ramène les résultats au client

• doit être informée de l’arrêt d’un serveur

• doit gérer la persistance

Page 32: Des sockets à RMI Programmation réseau versus programmation objet RMI = Remote Method Invocation.

Rôle du serveur

• Administrer un flot de requêtes pour un ou plusieurs objets dont il a la responsabilité

• Ordonnancer la séquence des opérations de réponses à une requête

Page 33: Des sockets à RMI Programmation réseau versus programmation objet RMI = Remote Method Invocation.

Rôle du serveur d’objets

• active si besoin l’objet destinataire

• recherche et exécute la méthode

• passe le résultat à l’infrastructure

• plusieurs requêtes peuvent arriver simultanément

• arrêt du serveur : désactiver tous les objets et enregistrer leur état

Page 34: Des sockets à RMI Programmation réseau versus programmation objet RMI = Remote Method Invocation.

Scénario d ’obtention de la référence du service de nommage

Client ou Serveur ORB

CosNaming::NamingContext

resolve_initial_references ("NameService");

conversion

ajout,retrait,lecture,...

Page 35: Des sockets à RMI Programmation réseau versus programmation objet RMI = Remote Method Invocation.

Enregistrer un objet

• Opération pour publier un Objet– en général, opération réalisée par le serveur

• Scénario Type1. Créer un objet2. Construire un chemin d ’accès (Name)3. Appeler l ’opération « bind » ou « rebind » avec le chemin et la référence de l ’objet

void bind (in Name n, in Object obj) raises (NotFound, CannotProceed, InvalidName, AlreadyBound);

Page 36: Des sockets à RMI Programmation réseau versus programmation objet RMI = Remote Method Invocation.

Retrouver un objet

• Opération réalisée par un client ou un serveur

• Scénario type :

– construire un chemin d ’accès (Name)

– appeler l ’opération « resolve » avec le chemin

– convertir la référence obtenue dans le bon type

Object resolve (in Name n)

raises (NotFound, CannotProceed, InvalidName)

Page 37: Des sockets à RMI Programmation réseau versus programmation objet RMI = Remote Method Invocation.

Invocation statique

• Le nom de l’objet destinataire et le message sont connus au moment du développement

• Ne permet ni l’ajout ni le retrait d’objets dans les serveurs

Page 38: Des sockets à RMI Programmation réseau versus programmation objet RMI = Remote Method Invocation.

Invocation dynamique

• Permet au programme client de– découvrir les objets à l’exécution et les interfaces

proposés par ces objets

– construire dynamiquement messages et requêtes

– envoyer et recevoir le résultat de telles requêtes

• Rend les systèmes réactifs et faciles à modifier

Page 39: Des sockets à RMI Programmation réseau versus programmation objet RMI = Remote Method Invocation.

Invocation dynamique + surcharge

• flexibilité du code

• briques logicielles avec les mêmes messages pour des objets de différentes natures– définir de nouveaux objets sans modifier

l’interface– changements qui n’affectent pas les clients