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

Common Object Request Broker Architecture (CORBA) Jean-Louis Pazat - IRISA/INSA

Présentations similaires


Présentation au sujet: "Common Object Request Broker Architecture (CORBA) Jean-Louis Pazat - IRISA/INSA"— Transcription de la présentation:

1 Common Object Request Broker Architecture (CORBA) Jean-Louis Pazat - IRISA/INSA

2 Plan uIntroduction uArchitecture de CORBA uCommunications uService de nommage uLangage de description dinterfaces (IDL) uExemple uCompléments n Services, Facilities & Domaines n CORBA et le parallélisme uConclusion

3 Introduction

4 motivation uCalcul réparti n le réseau est au cœur du calcul uPratiques du génie logiciel n modélisation et programmation objet/composant uIndépendance n vitale pour les applications v vis à vis des plateformes v vis à vis des vendeurs uIntegration de programmes existants n nécessaire

5 Comment passer du centralisé au réparti ? uCasser les structures existantes n insérer des appels de procédure/de méthode à distance Appelant Appelé Appelant Appelé Souche Squelette Network uNouveaux problèmes n nommage, localisation, transparence, interoperabilité

6 Le concept de bus logiciel uajouter/supprimer des objets sans recompiler lensemble de lapplication n enregistrer/retrouver des références globales sur des objets n connaître à priori ou découvrir les méthodes dun objet uréaliser les appels de méthode à distance n passage de paramètres (par valeur) n indépendance vais à vis de la localisation des objets

7 What is CORBA ? n standard ouvert pour les applications réparties n bus logiciel, orienté objet n communication par appel de méthode à distance n géré par l Object Management Group (OMG). n indépendant v du matériel, du système, des langages v et surtout des vendeurs uCORBA = Common Object Request Broker Architecture â interopérabilité

8 Le modèle objet de CORBA uTypes (Types) : n définis sur des domaines de valeurs n indépendants des langages dimplémentation uObjets (objects) : n entité encapsulée qui offre des services à des clients n peut être créé/détruit uméthodes (operation) n entité qui définit les points dentrée quun client peut invoquer

9 Le modèle objet de CORBA (suite) uInterfaces (Interfaces) n signature des méthodes quun client peut invoquer sur un objet uRequêtes (requests) : n action créée par un client et dirigée vers un objet n contient des infos sur la méthode à invoquer et les paramètres réels

10 Architecture de CORBA

11 Ma_méthode(in mon_paramètre out mon_résultat) Paramètres dentrée (in) valeur de retour Paramètres de sortie (out) Implementation de lobjet Client Vue du programmeur DII Souche IDL squelette IDL DSI Adaptateur dobjet Interface ORB Coeur de lORB Niveau interstitiel (middleware) Protocoles GIOP / IIOP / ESIOP

12 ORB uNiveau interstitiel (Middleware) n nest pas partie intégrante du système n sépare le reste de larchitecture du système uPermet l interopérabilité n indépendant des plateformes matérielles ou logicielles n différents ORB peuvent communiquer v à travers un protocole Inter ORB (xIOP) Interface ORB Implementation de lobjet client Cœur de lORB GIOP / IIOP / ESIOP

13 ORB (suite) GIOP / IIOP / ESIOP uGIOP = General Inter ORB Protocol n spécification qui permet linteropérabilité entre différents ORBs n spécifie le protocole de transmission + format des requêtes uIIOP = Internet Inter ORB Protocol n protocole dinteropérabilité standard pour Internet n construit sur IP uESIOP = Environment Specific IOP n spécification qui permet de définir des protocoles spécifiques

14 ORB (suite) IIOP uLivré avec toute implémentation de CORBA uUtilise CDR n plus efficace que XDR (0/1 codage/décodage max) uCertains serveurs WEB peuvent dialoguer via IIOP

15 Souche et squelette IDL uGénérés par le compilateur IDL n à partir de la description IDL de lobjet serveur (doit être connue lors de lécriture du client) IDL stub IDL skeleton Object Implementation Object Implementation client ORB core GIOP / IIOP / ESIOP souche IDL Squelette IDL Cœur de lORB GIOP / IIOP / ESIOP Adaptateur dobjet client Implémentation de lobjet Compilateur IDL Spécification IDL

16 Souche IDL uContient les proxies des objets distants auxquels le client accède ugénère les requêtes à partir de linvocation de méthode locale uencapsule requête et arguments uenvoie la requête sur le bus (ORB Core) IDL stub Object Implementation Object Implementation client ORB core GIOP / IIOP / ESIOP

17 Squelette IDL uContient un aiguilleur de requêtes compilé (dispatcher) uextrait linvocation de méthode et les paramètres de la requête reçue du bus utransmet linvocation de méthode vers le bon objet IDL Skeleton Object Implementation Object Implementation client ORB core GIOP / IIOP / ESIOP

18 DII / DSI uInterfaces dynamique dinvocation de méthodes (Dynamic Invocation/Skeleton Interface) n permet de découvrir dynamiquement de nouvelles interfaces ou de les enregistrer n pas recommandé aux programmeurs débutants n historiquement était la seule interface disponible en CORBA n beaucoup moins efficace que les interfaces statiques DII DSI Object Implementation Object Implementation client ORB core GIOP / IIOP / ESIOP

19 DSI uDynamic Skeleton Interface n utile lorsquune implémentation na pas dIDL n peut tenir compte dobjets créés/enregistrés dynamiquement n transfère les invocations de méthodes du coté serveur DSI Object Implementation Object Implementation client ORB core GIOP / IIOP / ESIOP

20 DII uDynamic invocation interface n API prédéfinie pour tout appel de méthode n permet de découvrir dynamiquement des interfaces n les requêtes doivent être construites à la main n syntaxiquement différent dune invocation de méthode n utilisée aussi dans des cas particuliers v deferred synchronous call DI I Object Implementation Object Implementation client ORB core GIOP / IIOP / ESIOP

21 Utilisation de DSI+DII si rien nest connu à la compilation IDL stub DSI Object Adapter ORB interface Object Implementation Object Implementation client Users view Middleware DII ORB core

22 DII+IDL Skeleton method invocation le serveur possède une IDL mais le client ne la connaît pas … IDL skeleton Object Adapter ORB interface Object Implementation Object Implementation client DII ORB core Interface repository

23 Basic Object Adapter uPas à lusage du programmeur n sauf pour init/enregistrement Object Adapter Object Implementation Object Implementation client ORB core GIOP / IIOP / ESIOP 2 n 2. enregistrement des implémentations 3 n 3. activation des objets n + divers services 1 n 1. activation de limplémentation Object Implementation Object Implementation 4 n 4. invocation des méthodes (upcalls sur limplémentation via le squelette IDL skeleton Object Adapter uRôle

24 Communication

25 Appel de méthode à distance uparamètres passés par valeur n types de base, types construits n références aux objets umodes de passage de paramètres in : valeur transmise à la méthode out : valeur calculée par la méthode inout : valeur transmise puis renvoyée (modifiée)

26 Appel blocant utwoway method invocation n lappelant est bloqué jusquà la terminaison de la méthode appelée out, inout et des resultats ou des exceptions peuvent être retournées x = S2- >opB(10.2);

27 Appel non blocant 1 uoneway method n lappelant nest pas bloqué n aucun résultat ou paramètre inout ou out ne peuvent être utilisés S2->opB(10.2);

28 Appel non blocant 2 uasynchronous call n uniquement en utilisant le DII n permet de récupérer des résultats uméthodes du DII : send_deferred() get_response() poll_response()

29 Prod 1 Prod 2 Cons 1 Cons 2 Cons 3 Pas en attente En attente Event Server Event Channe l Communication par passage de messages uModèle dévénements (push / pull) n communication asynchrone n multiple producteurs / multiples consommateurs push(event) pull(event) push(event) pull(event)

30 Service de nommage uUn des serveurs standard livrés avec lORB (service) uService de nommage générique n Associe des noms et des références CORBA (IOR) n nommage uniforme uContexte de nommage n organisé en DAG n conventions de nommage uOpérations n bind / unbind / rebind / resolve

31 Interface Definition Language (IDL)

32 présentation uEst indépendant des langages uPeut être mappé dans de nombreux langages : n C++, C++, C++, C++, C, Java,... uPermet de décrire n des interfaces contenant v des opérations v des attributs accessibles à distance uune interface IDL est similaire à v une interface Java v une classe abstraite C++

33 const long N = 10; typedef double Vector[N]; interface example { typedef double Matrix[N][N]; attribute short status; boolean operation( in Vector A, out Matrix B ); }; const long N = 10; typedef double Vector[N]; interface example { typedef double Matrix[N][N]; attribute short status; boolean operation( in Vector A, out Matrix B ); }; exemple de spécification IDL Interface specification attribute specification method specification

34 éléments du langage IDL uModules uInterfaces n Opérations (oneway, twoway) n Attributs uDéclarations de n constantes n types n exceptions

35 Modules uespaces de nommage pour les définitions IDL n évite les conflits de noms ules modules peuvent être imbriqués ules noms sont visibles (préfixer) module simulation { typedef ::MatrixComputation::Matrix constraints; … }; module MatrixComputation { typedef double Matrix[N][N]; …};

36 Interfaces uDescription de la partie publique dun objet uHéritage entre interfaces possible (restrictions) n redéfinitions interdites n héritage multiple autorisé interface coffee { // coffee interface definitions }; interface Drinks: coffee { // inherits all coffee definitions // then adds other definitions };

37 Constantes uSeulement pour certains types n integer, character, Boolean, Floating point, String, renamed types n peuvent être des expressions n pas de constantes pour les types construits const char etoileu_des_neigeu = * typedef Long Entier; Entier

38 Déclarations de types uRenommage ou types def. par le programmeur uénumeration, structures, tableaux, unions enum couleurs { rouge, vert, bleu}; struct ecole { Interessant tutoriels, exposes; Bon repas; Sympatique station; }; typedef Char BadDate[2]; usequences (tableaux de taille variable) typedef sequence formation;

39 types de données Types de base Types constuits Sequence Enum Union ArrayStruct BooleanCharOctetString Integer Floating Point Short UShort Long ULong FloatDouble Référence objet Any

40 type dynamique IDL Any uNest pas un type générique au sens objet uDéfini des types auto-identifiés n contient des informations sur son type dynamique (CORBA type code ) v sa valeur n les types définis par lutilisateur ont un type code uutile pour définir des services génériques

41 attributs uattributs public des objets upeuvent être en lecture seule ou en lecture/écriture (par défaut) useuls les types nommés sont autorisés interface time { attribute unsigned long nanosecond; readonly attribute date Y2K; attribute long notAllowed[10]; … } Interdit !

42 exceptions uAssure quun client reçoit toujours une réponse lors dune invocation distante u2 sortes dexceptions n CORBA Standard Exceptions v levées par CORBA v même si elle peuvent avoir été levées par limplémentation dun objet n exceptions définies par le programmeur exception EntryNotAllowed{string reason;};

43 exceptions (suite) uExemple interface Account { exception OverdrawnException {}; void deposit( in float amount ); void withdraw( in float amount ) raises ( OverdrawnException ); float balance(); };

44 IDL mappings uExistent pour plusieurs langages n orientés objet n non orienté objet uUn nouveau mapping ne peut pas être facilement ajouté n nécessite la modif du compilateur IDL, du BOA, … n son intégration dans la norme n connecter 2 ORBs est plus simple... umapping n trivial pour C++, assez simple pour Java

45 Mon premier programme CORBA

46 interface tty { void print(in string msg); }; interface tty { void print(in string msg); }; class tty_impl : virtual public tty_skel { public: tty_impl() {}; ~tty_impl() {}; void print(const char* msg) { cout << msg << endl; }; class tty_impl : virtual public tty_skel { public: tty_impl() {}; ~tty_impl() {}; void print(const char* msg) { cout << msg << endl; }; spécification IDL implementation de lobjet

47 ORB Serveur Mon premier programme CORBA Client 1 1. Init ORB 2 2. Recup. ref. service de nommage 3 3. construire le nom de lobjet et recup. ref. objet à partir du nom 1 1. Init ORB + BOA 2 2. Créer lobjet 3 3. Recup. ref. service de nommage Service de nommage 4 4. construire le nom de lobjet et lenregistrer (ref + nom) 4. Invoquer une méthode Activer lobjet puis attendre des invocations Geek off

48 int main( int argc, char* argv[] ) { // initialisation de lORB et du BOA CORBA::ORB_var orb = CORBA::ORB_init(argc, argv, "mico-local-orb"); CORBA::BOA_var boa = orb->BOA_init( argc, argv, "mico-local-boa" ); // Créer lobjet tty_impl *afficheur = new tty_impl; // Récupérer la référence du service de nommage CORBA::Object_var nsobj = orb->resolve_initial_references("NameService"); CosNaming::NamingContext_var nc = CosNaming::NamingContext::_narrow( nsobj ); Implémentation du serveur

49 // Construire le nom de lobjet CosNaming::Name name; name.length( 1 ); name[0].id = CORBA::string_dup( "mytty" ); name[0].kind = CORBA::string_dup( "" ); //lenregistrer sur le service de nommage nc->bind( name, afficheur ); //activer lobjet attendre les invocations boa->impl_is_ready( CORBA::ImplementationDef::_nil() ); orb->run(); } Implémentation du serveur

50 int main( int argc, char* argv[] ) { // initialisation de lORB CORBA::ORB_var orb = CORBA::ORB_init(argc, argv, "mico-local-orb"); // Récupérer la référence du service de nommage CORBA::Object_var nsobj = orb->resolve_initial_references("NameService"); CosNaming::NamingContext_var nc = CosNaming::NamingContext::_narrow( nsobj ); Implémentation du client

51 //Construire le nom de lobjet CosNaming::Name name; name.length (1); name[0].id = CORBA::string_dup( "mytty" ); name[0].kind = CORBA::string_dup( "" ); //Retrouver la référence grâce au //service de nommage CORBA::Object_var obj = nc->resolve( name ); tty_var proxy = tty::_narrow( obj ); // Invocation de la méthode proxy ->print( là haut sur la montagne..." ); } Implémentation du client

52 Conclusion

53 n Nombreuses mise en œuvre existantes v Orbix (Iona), Visibroker (Inprise),... comm v MICO (Université de Francfort) v ORBit, TAO, JacORB,... n Intérêts v Utilisation assez facile v Réelle interopérabilité ! n Défauts v Trop bas/haut niveau :-) v Architecture complexe v Performances limitées sur les réseaux haut débit n Et...


Télécharger ppt "Common Object Request Broker Architecture (CORBA) Jean-Louis Pazat - IRISA/INSA"

Présentations similaires


Annonces Google