objets distribu s n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Objets Distribués PowerPoint Presentation
Download Presentation
Objets Distribués

Loading in 2 Seconds...

play fullscreen
1 / 66

Objets Distribués - PowerPoint PPT Presentation


  • 79 Views
  • Uploaded on

Objets Distribués. Chronique d’une invasion annoncée Pourquoi? Comment? Qui : Corba / COM-DCOM / Java RMI. Pourquoi ?. Maturation de la technologie orientée objet ADA, Modula Smalltalk , C++, Java Maturation des communications Client-Serveur sockets RPC couches OSI. Compte AM.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Objets Distribués' - val


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
objets distribu s

Objets Distribués

Chronique d’une invasion annoncée

Pourquoi? Comment?

Qui : Corba / COM-DCOM / Java RMI...

pourquoi
Pourquoi ?
  • Maturation de la technologie orientée objet
    • ADA, Modula
    • Smalltalk , C++, Java
  • Maturation des communications Client-Serveur
    • sockets
    • RPC
    • couches OSI
maturation de la technologie orient e objet

Compte AM

Crediter

debiter

montant

Compte AM

Crediter

1000

Objet = module logiciel

Interaction entre objets : message

Maturation de la technologie orientée objet
exemple annuaire des surnoms
Exemple : annuaire des surnoms

AnnuaireEssi

listePersonnes

enregistrer

lister

oter

Enregistrer(AnneMarie,AM)

lister()

objets messages
module logiciel

indépendance de la programmation et de la construction

unité autonome

Méthode = comportement des objets

Message = interaction entre objets de l’application

Objets + Messages

Application = Collection d ’objets interagissant

classes et h ritage
Classes et héritage

Mécanisme d’abstraction + Généralisation

Surcharge des méthodes par héritage

exemple annuaire des surnoms1
Exemple : annuaire des surnoms

Annuaire

enregister

oter

lister

Annuaire persistant

sauver

restaurer

classe et composition
Classe et Composition

VEHICULE

CARROSSERIE

MOTEUR

exemple annuaire des surnoms2
Exemple : annuaire des surnoms

Annuaire

Personnes

Le composite exporte-t-il ou non les services de ses composants ?

architectures base d objets
Architectures à base d ’objets

C++

Smalltalk

Java

Base de données

Objets

Classes

Messages

IHM

Modèles et méthodologies

de développement

application traditionnelle vs application base d objets
réponse ponctuelle à une tâche ou à une opération particulière

déroulement linéaire des étapes

adaptation aux changements difficile

représentation des entités physiques des processus réels

entités réutilisables

lisibilité

processus d’assemblage d’objets existants

Application traditionnelle vsapplication à base d’objets
objets briques logicielles
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

s paration entre interface et impl mentation
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
exemple annuaire des surnoms3
Exemple : annuaire des surnoms
  • interface : partie visible de l’objet (enregistrer, oter, lister, …)
  • implémentation : partie privée inaccessible depuis d’autres objets (listePersonnes : un vecteur de Personne ou un tableau ou ….)
  • interface = contrat entre l’objet et le monde extérieur (save impossible par exemple)
s paration entre interface et impl mentation1
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 objets

substitution logique liée à la substitution physique

exemple annuaire des surnoms4
Exemple : annuaire des surnoms
  • Importance de la nomenclature des objets
  • Comment identifier l’Annuaire de l ’ESSI?
  • Celui de l’ESINSA ?
repr sentation et types de donn es
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

m canismes d abstraction
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

exemple annuaire des surnoms5
Exemple : annuaire des surnoms

Héritage = extension d’un service

Composition =

composition de services

Annuaire

enregister

oter

lister

Annuaire

Fichier

sauver

restaurer

enregister

oter

lister

Annuaire persistant

sauver

restaurer

maturation des communications client serveur
Maturation des communications Client Serveur
  • Des programmes (fonctionnant sur des machines différentes) qui communiquent au travers du réseau.
  • Un programme Client envoie des requêtes à un programme serveur (qui prend en charge l’implémentation)
infrastructure client serveur
Infrastructure Client Serveur

CLIENT

SERVEUR

requêtes

exemple
Exemple

CLIENT Essifun

SERVEUR de Surnoms

oter

infrastructure

appel de proc dure distance
Appel de Procédure à Distance

CLIENT

SERVEUR

Connexion au serveur

Attente de requêtes

Préparation de la requête

Envoi de la requête

Attente du résultat

….

Analyse du résultat reçu

Analyse de la requête

…..

Exécution

….

Préparation de la réponse

Envoi de la réponse

appel de proc dure distance1
Appel de Procédure à Distance

CLIENT

SERVEUR

F(1,  x)

F(1,x)

unmarshalling

marshalling

10

marshalling

unmarshalling

exemple annuaire des surnoms6
Exemple : annuaire des surnoms

EssiFun

SERVEUR de Surnoms

enregistrer(« paul », »bug »)

unmarshalling

marshalling

0111000101000..

enregistrer(« paul », »bug »)

TRUE

unmarshalling

marshalling

101..

TRUE

langages de sp cifications
Langages de spécifications
  • Spécifications des types de données qui transitent sur le réseau

Protocole := CHOICE {

requete [0] REQUETE,

reponse [1] REPONSE }

ASN.1 et norme ISO

Programme reqrep {

version {

REPONSE rerep(REQUETE) = 1

}= 1

} = 10000

  • XDR et RPC de SUN
exemple annuaire des surnoms7
Exemple : annuaire des surnoms

ASN.1 et norme ISO

Protocole := CHOICE {

enregistrerReq [0] SEQUENCE{PrintableString nom,

PrintableString surnom}

enregistrerRep[1] BOOLEAN,

listerReq [2] NULL,

listerRep [3] SET OF Personnes, ….}

XDR et RPC de SUN

Programme surnoms {

version {

boolean enregistrer(nomSurnom) = 1;

listePersonnes lister(void)=2

}= 1

} = 10000

g n rateurs de stubs
Générateurs de Stubs

Spécifications

des données

XDR

ASN1

Générateurs

RPCGEN / MAVROS

Fichiers

générés

Types de

données

C Lisp

Java

Librairie marshalling

et unmarshalling

squelettes du client et

du serveur

Types de

données

C

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

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

Infrastructure informatique de distribution

introduction de services
Introduction de services
  • Gestionnaires de noms (x500, nis, dns…)
  • Synchronisation (transaction …)
  • Sécurité
slide31

Infrastructure ?

CLIENT

SERVEUR

transaction

sécurité

nommage

Service (marshalling..)

Transport TCP IP...

objets distribu s1
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
infrastructure objets distribu s
Infrastructure Objets Distribués

Objet2

Objet3

Objet1

Client

Client Serveur

Serveur

impl mentation des objets distribu s
Corba indépendant des langages de programmation

Projections C,C++, Java

Un langage de Spécification IDL

Orienté C++

Implémentation des objets distribués

Tout Java

corba dcom et java
une interface = une unité élémentaire

héritage des interfaces

aucune interface imposée

normalisation des interface

au moins une interface : Iunknown

non transmissible par héritage

composition d’interfaces

CORBA, DCOM et JAVA
  • héritage de classe
  • implémentation de plusieurs interfaces possibles
g n rateurs
Générateurs

Spécifications

des données

Int. Java

IDL

Générateurs

RMIC / Orbix...

Fichiers

générés

Stubs Skeletons Proxy

(mise en œuvre de la sérialisation

et désérialisation…)

corba
module Surnoms {

typedef string Nom ;

struct Personne {Nom nom;

string surnom;};

typedef sequence<Personne> ListePersonnes;

interface Surnoms{

exception ExisteDeja{string surnom;};

boolean enregistrer(in Personne personne) raises (ExisteDeja);

…..

};

};

CORBA
compilation interface idl

1- Exemple introductif

Compilation interface IDL

Surnoms.idl

jidl Surnoms.idl

A écrire

Compilateur IDL/Java

Généré

Répertoire grid

Répertoire grid

Répertoire grid

Répertoire Surnoms

Client

Serveur

StubForSurnoms.java

Surnoms.java

_SurnomsImplBase.java

I

SurnomsHelper.java

Client.java

SurnomsImpl.java

SurnomsHolder.java

Serveur.java

slide39
RMI

public interface Surnoms extends java.rmi.Remote

{

public Boolean enregistrer(String nom, String surnom) throws

java.rmi.RemoteException,

ServeurSurnoms.surnoms.ExisteDeja ;

….

}

rmi classes et interfaces
RMIClasses et Interfaces

Remote

Machine locale

Machine distante

InterfaceDistante

InterfaceDistante

Souche

Squelette

Appel méthode m()

Appel méthode m()

ClasseLocale

ClasseDistante

comment activer des objets distribu s
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
comment activer des objets distribu s1
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
invocation statique
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
invocation dynamique
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

OFFERT PAR CORBA, DCOM et JAVA

l invocation dynamique
L’invocation dynamique
  • API (DII) de construction de requêtes
    • sans passer par des souches prégénérées
  • Un objet Request = un nom d’opération, une liste de couples valeur - type (au sens de l’IR) et une structure pour le résultat
    • invoke
    • send_deferred + get_response, poll_response
    • send_oneway
invocation dynamique surcharge
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
r le du client
Rôle du client

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

ID

Unités autonomes - solidité - robustesse - adaptation

r le de l infrastructure
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
r le du serveur
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
r le du serveur d objets
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
un peu plus sur l infrastructure
Un peu plus sur l’infrastructure
  • transport des messages
  • localisation des serveurs et des objets
  • persistance

JDK1.1

ORB pour CORBA

norme Corba 1

DCOM pour OLE

non formelle

transport des messages
Transport des messages
  • Références aux objets
    • identifiant (libre choix d ’implémentation dans le norme CORBA)
    • nombres codés sur 128 bits en OLE
    • url Uniform Resource Locator en Java RMI

Performances différentes et incompatibilités entre ORBs

et entre ORB et COM

sc nario d obtention de la r f rence du service de nommage

ORB

Client ou Serveur

resolve_initial_references ("NameService");

CosNaming::

NamingContext

conversion

ajout,retrait,lecture,...

Scénario d ’obtention de la référence du service de nommage
enregistrer un objet
Enregistrer un objet
  • Opération pour publier un Objet
    • en général, opération réalisée par le serveur
  • Scénario Type
    • 1. Créer un objet
    • 2. 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);
retrouver un objet
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)

interaction client enregistreur

Lookup : où est objetDistant ?

client

registre

Il est ici

result

stub

Envoyez le stub

Le voici

stub

squelette

result = objetDistant.m()

objet

Distant

serveur

client

Interaction Client Enregistreur

RMIRegistry + ClassLoader

interface avec l infrastructure un peu de vocabulaire
Interface avec l’infrastructure Un peu de vocabulaire
  • Coté client :
    • stub en CORBA
    • proxy en OLE
    • stub/proxy en Java
  • Côté Serveur :
    • stub en OLE
    • skeleton en CORBA
    • implémentation d’une interface en RMI
  • BOA Objects Adaptaters
m canisme de transport client serveur
Mécanisme de Transport : Client - Serveur
  • Appel direct : DLL (in process - utilisation du même espace mémoire)
  • Appel indirect :
    • LRPC (application sur la même machine) passe par le proxy
    • RPC (sur 2 machines différentes)
  • IIOP en Corba
invocations
Invocations
  • Invocations statiques
    • IDLen CORBA stub + skeleton
    • En OLE
      • appel direct si in process
      • proxy + stub si application fournis uniquement pour les applications MicroSoft
      • Versions récentes définition du langage ODL
  • IDL et ODL sont incompatibles
invocations1
Invocations
  • Invocations dynamiques
    • DII en CORBA
    • IDispatch en OLE
    • java reflect
  • Du ressort de l’infrastructure
corba vs ole
CORBA vs OLE
  • définition du serveur très générale laissée à l’implémentation
  • flexibilité primordiale pour l’intégration de systèmes (BDD…)
  • processus formel avec l’OMG
  • un serveur est une application ou une DLL
  • stratégie commerciale et pratique
un bref comparatif
Un bref comparatif

Origine

Microsoft

OMG

JavaSoft

Archi

COM

IDL ORB

Java RMI

DCOM

IIOP

Applet

Interfaces

IUNKnown

Définiesen

Définies en

prédéfinies

IDL

Java

un bref comparatif1
Un bref comparatif

Interface+

Agrégation

Héritage

Héritage

composition

extends

Langage

C++

C

C++

Java

Smalltalk

Infrastr.

Proxy

Stub

Proxy

stub

skeleton

R O

un bref comparatif2
Un bref comparatif

Serveur

Appli

Appli

Appli Java

DLL

Biblio

BDD

Client

Appli

Appli

Appli Java

DLL

Biblio

Applets

BDD

Création

IFactory

Instancié

Instancié

en LOO

En Java

un bref comparatif3
Un bref comparatif

Appel

IDispatch

DII

Introsp.

dyn.

beans

Ident.

Reg. OLE

Service de

URL

nommage

Comm.

DCOM

IIOP

RMI

DCE

(TCP/IP)

conclusion
Conclusion
  • Problèmes d’intégration et d’interopérabilité

entre le monde Microsoft et le reste

  • Arrivée de internet
    • Effort d’interopérabilité et d’efficacité
    • RMI et Corba en Java
  • Des nouveautés avec les composants
    • les Enterprise Java Beans
    • Corba Components
    • et aussi C# et net Affaire à suivre