670 likes | 780 Views
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.
E N D
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 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 AnnuaireEssi listePersonnes enregistrer lister oter Enregistrer(AnneMarie,AM) lister()
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 Mécanisme d’abstraction + Généralisation Surcharge des méthodes par héritage
Exemple : annuaire des surnoms Annuaire enregister oter lister Annuaire persistant sauver restaurer
Classe et Composition VEHICULE CARROSSERIE MOTEUR
Exemple : annuaire des surnoms Annuaire Personnes Le composite exporte-t-il ou non les services de ses composants ?
Architectures à base d ’objets C++ Smalltalk Java Base de données Objets Classes Messages IHM Modèles et méthodologies de développement
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 • 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 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 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é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 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 • 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 • 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 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 • 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 CLIENT SERVEUR requêtes
Exemple CLIENT Essifun SERVEUR de Surnoms oter infrastructure
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 à Distance CLIENT SERVEUR F(1, x) F(1,x) unmarshalling marshalling 10 marshalling unmarshalling
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 • 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 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 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
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 • Gestionnaires de noms (x500, nis, dns…) • Synchronisation (transaction …) • Sécurité
Infrastructure ? CLIENT SERVEUR transaction sécurité nommage Service (marshalling..) Transport TCP IP...
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 Objet2 Objet3 Objet1 Client Client Serveur Serveur
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
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 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…)
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
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
RMI public interface Surnoms extends java.rmi.Remote { public Boolean enregistrer(String nom, String surnom) throws java.rmi.RemoteException, ServeurSurnoms.surnoms.ExisteDeja ; …. }
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 ? • 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é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 • 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 • 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 • 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 • 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 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 • 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 • 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 • 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