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

Laboratoire Laboratoire dInformatique du Littoral Le middleware CORBA (1) N. Melab

Présentations similaires


Présentation au sujet: "Laboratoire Laboratoire dInformatique du Littoral Le middleware CORBA (1) N. Melab"— Transcription de la présentation:

1 Laboratoire Laboratoire dInformatique du Littoral Le middleware CORBA (1) N. Melab

2 Références n R. Orfali, D. Haskey et J. Edwards. Objets Répartis Guide de Service. Intl. Thomson Publishing France, Paris, n J-M. Geib, C. Gransart et P. Merle. Corba, Des concepts à la pratique. InterEditions, n ORBacus for C++ and Java, Document technique version n Object Management Group. The Common Object Request Broker: Architecture and Specification. OMG TC Document 95-7-X, Juillet

3 Motivations (1) n Décentralisation * Répartition des ressources matérielles & logicielles ò matérielles : processeurs, mémoires et périphériques ò logicielles : données (fichiers) et applications n Partage de ressources * Evolution technologique et croissance du ratio performance/coût des réseaux. Problèmes de communication et dhétérogénéité

4 Motivations (2) n Coopération * Coopération des applications «patrimoines» n Nouvelles technologies * Mise à jour des applications «patrimoines» Problèmes dinteropérabilité et dintégration

5 Communication n Applications réparties sur des sites distants n Différents paradigmes de communication ? * Passage de messages : PVM, MPI,... * RPC : OSF/DCE-IDL, Sun/RPCL,... * Mémoire virtuellement partagée : LINDA,... Paradigmes non accessibles directement via les langages de programmation

6 Hétérogénéité n Trouver la meilleure combinaison des technologies n A différents niveaux : * Modèles et langages de programmation * Systèmes dexploitation * Matériel : PCs, Stations, Clusters, MPP, etc. * Protocoles de communication n En général, résolu par les mécanismes de communication par utilisation du format de données XDR

7 Intégration n Intégration à deux niveaux * Intégration des nouvelles technologies ò«Perpendiculaire» au problème dintégration * Intégration des applications «patrimoines» avec les nouvelles technologies

8 Interopérabilité n Communication entre systèmes (applications) développé(e)s par des tiers n Définition de normes pour léchange des données et de services (formats universels, protocoles, …)

9 Lapproche objet n Différents environnements basés sur les 3 paradigmes cités résolvent les problèmes de communication et dhétérogénéité n Lapproche objet : solution aux problèmes dintégration et dinteropérabilité * Propriété dencapsulation * IDL : Interface Definition Language n Informatique répartie & approche objet : cadre conceptuel unique allant de lanalyse jusquau déploiement des applications distribuées þ Middleware (CORBA)

10 Objets distribués n Spécification en utilisant IDL n Déploiement en objets répartis sur sites distants ò Infrastructure de communication (ORB) n Communication par RMI : Remote Method Invocation * RMI : version étendue de RPC * Utilisation de souches de communication * Souche : représentant local dun objet distant

11 n LObject Management Group (OMG) n IDL : Langage de spécification n ORB : Bus de communication entre objets n Méthodologie de développement et application Plan

12 LObject Management Group Consortium créé en 1989 actuellement plus de 850 membres Objectif: faire émerger des standards pour lintégration dapplications distribuées hétérogènes et la réutilisation de composants logiciels

13 OMG : Objectifs n Interopérabilité entre plusieurs langages n Transparence des invocations n Invocation statique et dynamique n Système auto-descriptif n Activation automatique n Interopérabilité entre bus (GIOP, IIOP, etc)

14 OMA : larchitecture globale Bus dobjets répartis Licences TransactionsPersistancePropriétésChangementsEvents NommageVendeurSécuritéRelationsCollectionsTempsExternalisation Interrogations Cycle de vie Concurrence Services objet communs Gestion des tâches Gestion de linformation IHM Administration Utilitaires communs Finance Télécoms Santé Interfaces de domaine Objets applicatifs Spécifiques

15 n LObject Management Group (OMG) n IDL : Langage de spécification n ORB : Bus de communication entre objets n Méthodologie de développement et application Plan

16 Le langage OMG-IDL n Coopération entre fournisseurs et utilisateurs de services * Expression sous forme de contrats * Séparation de linterface de limplémentation n Contrat : ensemble dinterfaces spécifiées avec IDL n Projection en souche (côté client) et squelette (côté serveur) þ Précompilateur IDL

17 n Langage «objet» de spécification dinterfaces (et non pas dimplantation) : partie de C++ étendue n Indépendant de tout langage de programmation n Fortement typé (passage de paramètres) n Héritage multiple et répété n Projection automatique dans plusieurs langages de programmation : C, Smalltalk, Cobol, AdaObjet, C++, Java, etc. Caractéristiques

18 Eléments du langage (1) n Commentaires * Même chose quen C++ * Exemples : ò // Ceci est un commentaire court ò /* Ceci est un commentaire pluuuuuuuuuuuuuuuuuuuu uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuus long */ n Identificateurs * Séquences de caractères alphabétiques, chiffres et du caractère « _ » * Premier caractère : lettre * Pas de différence entre majuscules et minuscules

19 Eléments du langage (2) n Espaces de définition * Module : contient tout type de définition * Exemple : module Banque { const double TAUX = 5.25; typedef unsigned sequence DesAgences; // Autres définitions };

20 Eléments du langage (3) : Types de données Valeur Type simple short long longlong ushort ulong ulonglong float double longdouble char string wchar wstring boolean octet Type dynamique TypeCode any Type composé array sequence struct union enum Type dobjet...

21 Eléments du langage (4) n Constantes * Mot-clé const comme en C++ * Exemples : const double PI = ; const string UneConstante = ``une chaîne de caractères``; const short TAILLE1 = 10; const long TAILLE2 = TAILLE1 * 2; n Définition de types * Mot-clé typedef comme en C++ * Exemples : typedef unsigned short Jour; typedef unsigned short Mois; typedef unsigned short Annee;

22 Eléments du langage (5) n Enumérations * Mot-clé enum comme en C++ * Exemple : enum JoursOuvrables { Lundi, Mardi, Mercredi, Jeudi, Vendredi }; n Structures * Mot-clé struct comme en C++ * Exemple struct Date { Jour le_jour; Mois le_mois; Annee l_annee; };

23 Eléments du langage (6) n Unions * Mot-clé union comme en C++ * Exemple union DateVariee switch (long) { case 1: Date format_date; case 2: string format_chaine; Default: Jour nb_jours; };

24 Eléments du langage (7) n Tableaux * Exemples typedef Date[10] tab_dates; typedef float[TAILLE1] [TAILLE2] matrice; n Tableaux dynamiques : séquences : * Mot-clé sequence * Exemple typedef sequence DesNombresPremiers; typedef sequence DesJours; typedef sequence DesDates;

25 Eléments du langage (8) n Interfaces * Une interface contient des définitions de types et constantes, des attributs et des opérations * Exemple interface Compte { attribute float valeur; void deposer (in float somme); void retirer (in float somme); // Autres opérations }; typedef sequence DesComptes;

26 Eléments du langage (9) n Opérations * Caractéristiques ò Nom : identificateur unique ò Paramètres : mode de passage (in, out, inout), type et nom ò Type du résultat : void si pas de retour ò Mode dinvocation : oneway si opération asynchrone ò Liste des exceptions : à la C++ * Exemple exception problem { string raison; } oneway void retirer (in float somme) raises problem; * Pas de surdéfinition dopérations

27 Eléments du langage (10) n Attributs * Mot-clé : attribute * Caractéristiques ò Mode ó Par défaut, les attributs peuvent être consultés et modifiés ó readonly : accessibles en lecture seulement ò Nom de lattribut * Exemple readonly attribute Annee annee_courante;

28 Eléments du langage (11) n Héritage * Exemple interface Compte { attribute float valeur; void deposer (in float somme); void retirer (in float somme); // Autres opérations }; interface CompteLivret : Compte { readonly attribute float Taux; } n Lhéritage peut être multiple et répété

29 Constructions du langage (résumé) n Modules module NAME {... } ; n Interfaces interface NAME {... } ; *Constantes const TYPE NAME = VALEUR *Types énumérés enum NAME { V1,..., Vn } ; *Nouveaux types typedef DECL NAME ; *Structures struct NAME { DECL } ; *Unions union NAME switch (TYPE){} ; *Attributs readonly attribute TYPE NAME ; *Opérations TYPE NAME (ARGs) raises (... ) ; [ in | inout | out] TYPE NAME * Exceptions exception NAME {... } ;

30 Exemple module GestionBancaire { struct FicheClient { string nom ; string adresse; }; interface compte { attribute FicheClient client; readonly attribute float balance; void faireDepot (in float f); oneway float faireRetrait (in float f); }; interface livret : compte { readonly attribute float taux; }; // Dautres définitions et interfaces };

31 Projection dIDL (1) n Deux types de projection : squelette & souche Fichier IDL Souche IDL C++ Squelette IDL Java IIOP ORB A ORB B Client C++ Serveur Java Précompilateur IDL Java Précompilateur IDL C++

32 Projection dIDL (2) n Liaison vers un langage donné conformément aux règles définies par lOMG pour ce langage n Ces règles de traduction concernent 4 Les types de base IDL 4 Les constructeurs de type : enum, typedef, sequence, etc. 4 Les références vers les objets 4 Linvocation des opérations 4 La manipulation des exceptions 4 Laccès aux attributs 4 LAPI de lORB.

33 Types de base

34 Autres règles de projection (1)

35 Autres règles de projection (2)

36 Exemple : PerfectNumbers.idl interface PerfectNumbers { typedef sequence PERFECTS; boolean is_perfect_number (in long number); PERFECTS all_perfects (in long number); };

37 Exemple : PerfectNumbers.java public interface PerfectNumbers extends org.omg.CORBA.Object { public boolean is_perfect_number (int number); public int[] all_perfects (int number); };

38 Exemple : PerfectNumbers.h class PerfectNumbers : virtual public CORBA_Object { // … typedef OBFixSeq PERFECTS; virtual CORBA_boolean is_perfect_number (CORBA_Long number); virtual PERFECTS* all_perfects (CORBA_Long number); };

39 Passage de références en C++

40 Exemple interface PerfectNumbers { typedef sequence PERFECTS; boolean is_perfect_number (in long number); PERFECTS all_perfects (in long number); };

41 n LObject Management Group (OMG) n IDL : Langage de spécification n ORB : Bus de communication entre objets n Méthodologie de développement et application Plan

42 ORB OMG : le modèle client/serveur objet Objet CORBA Etat Code dimplantation Référence dobjet Interface dobjet Requête Activation

43 n Le module CORBA contient * les définitions des API des composantes du bus * les définitions IDL des protocoles dinteropérabilité entre bus CORBA (IIOP, GIOP, etc.) n Deux interfaces de base * Object * ORB Le module CORBA

44 n Encapsulation des références dobjets CORBA n Héritée par les interfaces IDL définies dans tout contrat n Opérations dobtention des méta-données caractérisant un objet n Opérations de base de manipulation de ces références n Opérations relatives à linvocation dynamique Linterface Object (1)

45 interface Object { // Non standardisée : dépend de limplantation du bus ImplementationDef get_implementation(); InterfaceDef get_interface(); boolean is_nil(); Object duplicate(); void release(); boolean is_a(in string logical_type_id); boolean non_existent(); boolean is_equivalent(in Object other_object); unsigned long hash(in unsigned long maximum); }; Linterface Object (2)

46 Linterface ORB n Cest un «fourre-tout» n Elle permet ò dobtenir les références des objets notoires ò de convertir les références d objets en chaînes de caractères et vice versa ò dobtenir les références des adaptateurs dobjets ò dinstancier des méta-données nécessaires à linvocation dynamique des objets ò manipuler les requêtes invoquées dynamiquement

47 module CORBA { typedef string ORBid; typedef sequence arg_list; ORB ORB_init(inout arg_list argv, in ORBid orb_identifier); }; public static void main (String args[]) { try { // initialisation du bus CORBA pour un processus client org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init (args,null);... } Initialisation du bus

48 Les objets notoires (1) n Objets primordiaux permettant de découvrir les objets disponibles sur le bus n Trois objets notoires ò Référentiel des interfaces (Interface Repository) ò Services Nommage et Vendeur : annuaires permettant de retrouver les références de tout objet sur le bus CORBA

49 interface ORB { typedef string ObjectId; typedef sequence ObjectIdList; ObjectIdList list_initial_services(); exception InvalidName {}; Object resolve_initial_references(in ObjectId identifier) raises (InvalidName); }; Les objets notoires (2)

50 ... // Obtenir toute la liste des objets notoires ObjectIdList liste = orb.list_initial_services(); // Obtenir un seul objet notoire try { Object obj2 = resolve_initial_references(``NameService); } catch (org.omg.CORBA.ORBPackage.InvalidNmae ex) { System.err.println(``Can not resolve NameService); return; }; Les objets notoires (3) InterfaceRepository TradingService

51 // Le serveur fait … HelloImpl hello = new HelloImpl (); // Diffusion de la référence de l objet String chaineIOR = orb.object_to_string (hello); System.out.println ("IOR de l objet " + chaineIOR); // Le client fait … org.omg.CORBA.Object obj = orb.string_to_object (args[0]); Hello hello = HelloHelper.narrow(obj); // Invocation de l objet distant hello.hello(); Conversion dobjets

52 n LObject Management Group (OMG) n IDL : Langage de spécification n ORB : Bus de communication entre objets n Méthodologie de développement et application Plan

53 n Ecrire le contrat IDL (appli.idl) : ensembles dinterfaces en IDL n Générer les souches/squelettes de communication et les interfaces (compilateur IDL/langage dimplantation) n Ecrire les implantations des interfaces n Ecrire les codes du serveur et du client Méthodologie de développement

54 Compilation et exécution (Java) n Quelques variables denvironnement *setenv CLASSPATH /lib/OB.jar: … : classes *setenv PATH /bin/ /bin:$PATH n Génération des souches/squelettes *mkdir *jidl.idl --package n Compilation des sources et souches/squelettes *mkdir classes *javac -d classes *.java /*.java n Exécution du serveur et du client *java Server *java Client [IOR: …]

55 Le bus ORBacus n Conçu par la société Object-oriented Concepts, Inc. *gratuit pour utilisation non commerciale *les sources sont entièrement disponibles n Environnement CORBA 2.x ouvert *langages : C++ et Java *OS : Solaris, Linux, Windows 95/NT, AIX, SGI et HP-UX n Services *Sécurité, Vendeur, Nommage, Evénement et Propriétés n Disponibilité :

56 Le cas du bus ORBacus n ORBacus intègre 4 générateurs de code ò idl : IDL à C++ ò jidl : IDL à java ò hidl : IDL à HTML ò ridl : IDL à RTF ò irgen : IDL au Référentiel dinterfaces (IR) C++ n Synopsis (-h, --h : option daide) ò idl [options] fichiers_idl ò jidl [options] fichiers_idl ò hidl [options] fichiers_idl ò ridl [options] fichiers_idl ò irgen nom

57 Lapplication « Hello World » Client Traitement Serveur Bus dobjets répartis CORBA HelloImpl Souche Hello Squelette Hello // OMG-IDL interface Hello { void Hello(); };

58 Génération des souches et interfaces Java pour le fichier Hello.idl Hello.idl Compilateur OMG-IDL/Java Hello.java HelloHelper.java HelloHolder.java _HelloImplBase.java StubForHello.java HelloClient HelloServeur

59 n Hello.java : interface pour le type Hello public interface Hello extends org.omg.CORBA.object { public void hello(); } n HelloHelper.java : classe utilitaire pour le type Hello final public class HelloHelper { public static Hello narrow(org.omg.CORBA.object obj) { … } … méthodes insert, extract, type, id, read, write... } n HelloHolder.java : pour le passage out et inout final public class HelloHolder implements … { public Hello value; … méthodes constructeurs, _ read, _write, _type... } Linterface et les classes Hello

60 n StubForHello.java : implantation de la souche *sert à envoyer les requêtes *invisible pour les programmeurs *instanciée automatiquement par HelloHelper (narrow) n _HelloImplBase.java : implantation du squelette *recoit et décode les requêtes *doit être héritée par limplantation Les classes souche et squelette

61 // HelloImpl implante linterface IDL Hello et hérite donc du squelette _HelloImplBase généré par le compilateur jidl public class HelloImpl extends HelloImplBase { public void hello() { System.out.println ("JAVA HelloImpl.hello() : Hello World !"); } Limplantation Java de Hello

62 import org.omg.CORBA.*; import java.io.*; import hello.*; public class HelloServer { // Fonction principale implantant un processeur serveur CORBA public static void main (String args[]) { try { // initialisation du bus CORBA pour un processus serveur org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init (args,null); org.omg.CORBA.BOA boa = orb.BOA_init (args,null); // Création de lobjet dimplantation Hello. HelloImpl hello = new HelloImpl (); // Diffusion de la référence de lobjet String chaineIOR = orb.object_to_string (hello); System.out.println ("IOR de lobjet " + chaineIOR); Le programme HelloServer

63 // Mettre le serveur en attente des requêtes CORBA boa.impl_is_ready (null); System.exit(0); // En cas de problème lié à lutilisation de CORBA } catch (org.omg.CORBA.SystemException ex) { System.err.println(ex.getMessage()); ex.printStackTrace(); System.exit(1); } Le programme HelloServer (suite)

64 public class HelloClient { public static void main (String args[]) { try { // initialisation du bus CORBA pour un processus client org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init (args,null); // Création de la souche Java référençant lobjet Hello. org.omg.CORBA.Object obj = orb.string_to_object (args[0]); Hello hello = HelloHelper.narrow(obj); // Invocation de lobjet distant hello.hello(); Le programme HelloClient

65 System.exit(0); // En cas de problème lié à lutilisation de CORBA } catch (org.omg.CORBA.SystemException ex) { System.err.println(ex.getMessage()); ex.printStackTrace(); System.exit(1); } Le programme HelloClient (suite)


Télécharger ppt "Laboratoire Laboratoire dInformatique du Littoral Le middleware CORBA (1) N. Melab"

Présentations similaires


Annonces Google