La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Objets Distribués Chronique d’une invasion annoncée Pourquoi? Comment?

Présentations similaires


Présentation au sujet: "Objets Distribués Chronique d’une invasion annoncée Pourquoi? Comment?"— Transcription de la présentation:

1 Objets Distribués Chronique d’une invasion annoncée Pourquoi? Comment?
Qui : Corba / COM-DCOM / Java RMI...

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

3 Maturation de la technologie orientée objet
Crediter debiter Compte AM montant Objet = module logiciel Compte AM Crediter 1000 Interaction entre objets : message

4 Exemple : annuaire des surnoms
AnnuaireEssi listePersonnes enregistrer lister oter Enregistrer(AnneMarie,AM) lister()

5 Objets + Messages module logiciel
Application = Collection d ’objets interagissant 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

6 Classes et héritage Mécanisme d’abstraction + Généralisation
Surcharge des méthodes par héritage

7 Exemple : annuaire des surnoms
enregister oter lister Annuaire persistant sauver restaurer

8 Classe et Composition VEHICULE CARROSSERIE MOTEUR

9 Exemple : annuaire des surnoms
Personnes Le composite exporte-t-il ou non les services de ses composants ?

10 Architectures à base d ’objets
Smalltalk Java Base de données Objets Classes Messages IHM Modèles et méthodologies de développement

11 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

12 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

13 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

14 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)

15 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

16 Exemple : annuaire des surnoms
Importance de la nomenclature des objets Comment identifier l’Annuaire de l ’ESSI? Celui de l’ESINSA ?

17 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

18 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

19 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

20 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)

21 Infrastructure Client Serveur
requêtes

22 Exemple CLIENT Essifun SERVEUR de Surnoms oter infrastructure

23 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

24 Appel de Procédure à Distance
CLIENT SERVEUR F(1,  x) F(1,x) unmarshalling marshalling 10 marshalling unmarshalling

25 Exemple : annuaire des surnoms
EssiFun SERVEUR de Surnoms enregistrer(« paul », »bug ») unmarshalling marshalling enregistrer(« paul », »bug ») TRUE unmarshalling marshalling 101.. TRUE

26 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

27 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

28 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

29 Circulation de messages et machines hétérogènes
Infrastructure informatique de distribution Couche de transport Responsable de l’administration des objets et de l’acheminement des messages Couche de services Objets de l’application qui résultent de la conception du modèle

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

31 Infrastructure ? CLIENT SERVEUR Service (marshalling..)
transaction sécurité nommage Service (marshalling..) Transport TCP IP...

32 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

33 Infrastructure Objets Distribués
Client Client Serveur Serveur

34 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++ Tout Java

35 CORBA, DCOM et JAVA implémentation de plusieurs interfaces possibles
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 héritage de classe implémentation de plusieurs interfaces possibles

36 Générateurs Stubs Skeletons Proxy 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…)

37 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); ….. };

38 Compilation interface IDL
1- Exemple introductif 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

39 RMI public interface Surnoms extends java.rmi.Remote {
public Boolean enregistrer(String nom, String surnom) throws java.rmi.RemoteException, ServeurSurnoms.surnoms.ExisteDeja ; …. }

40 RMI Classes et Interfaces
Remote Machine locale Machine distante InterfaceDistante InterfaceDistante Souche Squelette Appel méthode m() Appel méthode m() ClasseLocale ClasseDistante

41 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

42 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

43 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

44 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

45 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

46 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

47 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

48 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

49 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

50 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

51 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

52 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

53 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,...

54 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);

55 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)

56 Interaction Client Enregistreur
serveur registre Lookup : où est objetDistant ? stub Il est ici Envoyez le stub Le voici squelette objet Distant result = objetDistant.m() result RMIRegistry + ClassLoader

57 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

58 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

59 Invocations Invocations statiques IDL et ODL sont incompatibles
IDL en 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

60 Invocations Invocations dynamiques Du ressort de l’infrastructure
DII en CORBA IDispatch en OLE java reflect Du ressort de l’infrastructure

61 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

62 Quelques interrogations ?
Comment choisir le bon middleware (intergiciel) ? Il y en a de plus en plus Corba, RMI, DCOM, DSA + CCM, J2EE + Web Services, .net .... Savoir les comparer Identifier les points communs Interopérabilité : XML une solution suffisante ?

63 Des Critères de Comparaisons
Autour du concept objet ? Communication synchrone ou asynchrone ? Description via des interfaces ou des messages ? Communication directe ou indirecte ? Spécifique ou indépendant langage ? Possibilité de transformation de messages ou non ? Protocole de communication binaire ou textuelle ? Prise en compte de QoS ou non ? (transaction, sécurité ....)

64 Comment faire interopérer les middlewares ?
Aller vers un middleware standard ? (J2EE / Corba) Construire une couche au dessus des middlewares ? des familles de middlewares, des middlewares génériques (Jonathan, PolyOrb, ...) Avoir une approche architecturale ? des design patterns Faire interopérer des middlewares existants? M2M

65 L’avenir ? Après les approches par composants,
des middlewares au dessus de JMS Une réflexion de plus haut niveau pour sortir les schémas communs extérioriser quand et comment on les utilise ne pas confondre les problèmes avec XML

66 Les points communs des middlewares en objets distribués
Adressage : à tout objet doit être affecté une référence unique Transport : pour établir une communication entre 2 nœuds et transmettre une requête Marshalling : transformation de la requête pour passer sur le réseau Protocol : transmission des requêtes entre exécutables

67 Les points communs des middlewares en objets distribués
Activation : activer les implémentations des objets Dispatching : gestion des threads Des services communs Services de nommage Interface repository .....

68 Un bref comparatif Origine Microsoft OMG JavaSoft Archi COM IDL ORB
Java RMI DCOM IIOP Applet Interfaces IUNKnown Définies en Définies en prédéfinies IDL Java

69 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

70 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

71 Un bref comparatif Appel IDispatch DII Introsp. dyn. beans Ident.
Reg. OLE Service de URL nommage Comm. DCOM IIOP RMI DCE (TCP/IP)

72 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


Télécharger ppt "Objets Distribués Chronique d’une invasion annoncée Pourquoi? Comment?"

Présentations similaires


Annonces Google