Exemples Java Remote Method Invocation(RMI) : appel d’objets distants en u Java - Sun Common Object Request Broker Architecture(CORBA) : support u pour l’exécution d’objets répartis hétérogènes - OMG DCOM, COM+ :Distributed Common Object Model- Microsoft u Schéma commun : ORB (Object Request Broker) Modèle de base : client-serveur u Identification et localisation des objets u Liaison entre objets clients et serveurs u Exécution des appels de méthode à distance u Gestion du cycle de vie des objets (création, activation, …) u Services divers (sécurité, transactions, etc.) u
Schéma d’interaction Communication u Synchronisation u Désignation et localisation des objets Identification et référence u Liaison Établissement de la chaîne d’accès u Cycle de vie Création, conservation, destruction des objets u Mise en œuvre (réalisation, services) Notre objectif • élaborer des patrons pour les aspects ci-dessus • proposer un canevas pour la structure d’un ORB
Files de m essages
É vénem ents
C ouplage faible
C ouplage fort
receiv send
niveau application
pack re send
logiciel de communication (sockets)
logiciel de communication (sockets)
w ait
send receive
P (x, y, … )
niveau intergiciel
réseau
results results
L’effet de l’appel doit être identique dans les deux situations. Cela est impossible à réaliser en présence de défaillances
P(x, y, …)
IC A R ’06
P (x, y, … )
3
7
P(x, y, …)
Pourquoi les objets répartis Avantages d’un modèle à objets pour la programmation u L’encapsulation se prête bien à la répartition (objet = unité u naturelle de répartition) Réutilisation de l’existant (parwrappers) u Différences avec RPC Encapsulation de données u Création dynamique d’objets u Donc liaison dynamique v Intégration de services u Persistance, duplication, transactions, etc. v
Les étapes d’un appel d’objet réparti (vues du programmeur)
target lookup(name)
target.method(params)
Serveur de noms
Servant
Serveur
create(servant)
register(servant, name)
Connaissances requises : le client et le serveur connaissent le serveur de noms le client et le serveur s’accordent sur le nomname le client connaît l’interface du servant
Désignation Associer des noms à des objets u Retrouver un objet à partir de son nom u Liaison Créer une chaîne d’accès à un objet (à partir d’un nom) u Spécificité de la liaison répartie En centralisé (très schématiquement) u 2 sortes de noms : nom symboliques, adresses v Liaison = recherche de l’adresse (souvent avec indirection) v En réparti u “Adresse” = référence (exemple : [adresse IP, n°de p ort]) v Maisréférence≠chaîne d’accès ! v
Résoudre un nom(dans un contexte) À partir du nom, trouver l’objet u Processus récursif u target=context.resolve(namename.resolve()]) [ou 3 issues possibles pourtarget Une valeur typée : c’est l’objet v Une référence (ex : adresse) => l’objet est localisé v Un autre nom (dans un autre contexte) => on rappelleresolve v Lier un nom À partir du nom, construire une chaîne d’accès à l’objet u Rappel : en réparti, résolution≠liaison ! u Exemple : une référence (adresse IP, n° de porte) ne s uffit pas pour v accéder à l’objet
La liaison est établie en 2 phases Côté serveur (export) “publication” de l’objet à lier (identification) u préparation de certains éléments de la liaison u Côté client (bind) établissement de la liaison par création et assemblage des u constituants de l’objet de liaison Exemple La connexion par sockets peut être décrite en ces termes u accept=export v connect=bind v
L’interface “de bout en bout” est spécifique Interface d’un objet défini par l’application u Exprimée dans un IDL, pour faciliter la portabilité u Les interfaces intermédiaires (internes à l’ORB) ont intérêt à être génériques Pour faciliter les échanges de composants d’ORB u Pour faciliter l’interopérabilité entre ORBs u
Gestion des objets servants Référentiel des implémentations dans CORBA u Gestion des références d’objets Créer une référence pour un objet (à la création de l’objet) u Trouver un objet, connaissant sa référence u Gestion des activités côté serveur Activer un objet (lui associer unthreadpour son exécution) u Exemple : le POA(Portable Object Adapter)de CORBA (OMG) Permet d’isoler les politiques de gestion d’objets u Persistance, politique d’activation, format de références, etc. v
GIOP :General Inter-ORB Protocol Définit une interface et un protocole générique pour l’appel u d’objets distants sur une couche de transport Représentation commune de données (Common Data v Representation, CDR) Format standard de référence d’objet (Interoperable Object v Reference, IOR) Format des messages v Contraintes sur la couche de transport v IIOP :Internet Inter-ORB Protocol La réalisation “standard” de GIOP u GIOP sur TCP/IP v
Définitions Méthodes et outils permettant à un ensemble d’entités de coopérer u à une tâche commune Modèle de coordination, définit : u les entités coopérantes (processus, activités, “agents”, …) v le support (médium) de coordination : véhicule de l’interaction v les règles de coordination : primitives, patrons d’interaction v Domaine d’application Couplage faible (évolution indépendante des entités) u Structure très dynamique (les entités peuvent rejoindre/quitter le u système à tout instant) Hétérogénéité (système, environnement, administration) u Condition requise : capacité de croissance u
25
27
26
9
Intérêt : évolution E xem ples : JavaPod
Contexte Des objets “observés”, dont l’état (visible) évolue au cours du temps u Des objets “observateurs” u Problème Permettre aux observateurs d’être informés de l’évolution des objets u observés Propriétés souhaitables u R equérir un effort m inim al de la part des observate urs v G arantir l’indépendance m utuelle des observateurs v P erm ettre l’évolution dynam ique (arrivée-départ des observateurs et observés) v Contraintes u P assage à l’échelle v Solution Les observateurs enregistrent leur intérêt auprès des observés u Les observés notifient aux observateurs enregistrés les événements u pertinents, de manière asynchrone
Contexte Ensemble d’entités devant se coordonner par émission u d’événemens et réaction à ces événements (autre formulation de Observer) Problème Propriétés souhaitables u CommeObserver(indépendance, évolution dynamique) v Pas de rôle prédéfini v Sélectivité sur la nature des événements v Contraintes u Passage à l’échelle v Propriétés diverses : tolérance aux fautes, transactions, persistance, v ordre Solution Deux “rôles” : abonné (subscriber) et émetteur (publisher) u Une entité d’intermédiation (médiateur) u Abonnement par sujet (statique) ou par contenu (dynamique) u
Les limitations deObserver… Forte charge sur les objets observés (gèrent les observateurs et u répondent aux consultations) Manque de sélectivité du schéma notification-consultation u (l’observateur reçoit toutes les notifications de changement) … et deux réponses Publish-Subscribe u Deux “rôles” : abonné (subscriber) et émetteur (publisher) v Une entité d’intermédiation (médiateur) v Abonnement par sujet ou par contenu v Espace partagé u Le médium de coordination est un ensemble de tuples v Opérations : déposer, consulter avec filtrage (destructivement ou v non)
Message-Oriented Middleware(MoM) RegroupePublish-SubscribeetMessage Queues u Abonnement par sujet : nombreuses réalisations industrielles u Tibco, Websphere, … ScalAgent (JORAM) -> cf. atelier v Un standard pour l’interface : JMS (Java Messaging System) v Abonnement par contenu : prototypes de recherche u Gryphon (IBM Research) v Siena (Univ. Colorado) v Espace partagé Modèle : Linda (espace de tuples), projection dans divers langages u Réalisation : Jini (Sun) u Utilisation : découverte de ressources v