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

© 2004, Mireille Fornarino - 1 - CORBA Common Object Request Broker Architecture Mise en pratique avec Orbacus en JAVA Mireille Blay-Fornarino

Présentations similaires


Présentation au sujet: "© 2004, Mireille Fornarino - 1 - CORBA Common Object Request Broker Architecture Mise en pratique avec Orbacus en JAVA Mireille Blay-Fornarino"— Transcription de la présentation:

1 © 2004, Mireille Fornarino CORBA Common Object Request Broker Architecture Mise en pratique avec Orbacus en JAVA Mireille Blay-Fornarino Extraits de JM Geib, C. Gransart, P. Merle

2 © 2004, Mireille Fornarino CORBA I Introduction Intégration d applications CORBA : la réponse de l OMG l OMG : promouvoir la standardisation Le modèle client serveur orienté objet L architecture OMA IIOMG-IDL Interface Definition Language III Larchitecture CORBA Composantes du Bus Mise en œuvre Services Interopérabilité IV. Conclusion CORBA 3.0 CORBA et les autres Plan du Cours CORBA Component Model (CCM) Mireille Blay-Fornarino

3 © 2004, Mireille Fornarino Le problème : Intégration des applications L Pas de consensus sur les langages de programmation L Pas de consensus sur les plate-formes de développement L Pas de consensus sur les systèmes dexploitation L Pas de consensus sur les protocoles réseau L Pas de consensus sur les formats des données manipulées par les applications è Recherche dun Consensus pour linteropérabilité Consensus pour linteropérabilité 1.1-histoire « The bad news is that there will never be a single operating system, single programming language, or single network architecture that replaces all that has passed; The good news is that you can still manage to build systems economically in this environment. » « Model Driven Architecture » by Richard Soley and the OMG Staff Strategy Group

4 © 2004, Mireille Fornarino CORBA Common Object Request Broker Architecture : CORBA Plate-forme client/serveur orientée objets Un standard pour linteropérabilité entre objets –Support pour différents langages –Support pour différentes plate-formes (interopérabilité) –Communications au travers du réseau –Des services (Distributed transactions, events,... ) –Guides et modèles de programmation « CORBA replaces ad-hoc special-purpose mechanisms (such as socket communication) with an open, standardized, scalable, and portable platform. » 1.2 CORBA?

5 © 2004, Mireille Fornarino Historique Fondation de lOMG Publication de lOMA Publication CORBA 1.1 Adoption CORBA 2.0 Mapping IDL/C++ Publication CORBA Publication CORBA 1.2 CORBA 2.1 CORBA 2.3 CORBA CORBA? 2002 Minimum Corba RealTime Corba Corba Component Model

6 © 2004, Mireille Fornarino consortium international créé en 1989 but non lucratif regroupement de plus de 460 organismes constructeurs (SUN, HP, DEC, IBM,...) environnements systèmes (Microsoft, OSF, Novell,...) outils et langages (Iona, Object Design, Borland,...) produits et BD (Lotus, Oracle, Informix, O2,...) industriels (Boeing, Alcatel, Thomson,...) institutions et universités (INRIA, NASA, LIFL, W3C) I.3. OMG Object Management Group (OMG) The Worlds Best Standardization Process « In addition to its technologies, OMG has the worlds best standardization process. Executing our process, building consensus as they converge on technical details, OMG members produce each new specification in nine to seventeen months. Proven in the marketplace with the standardization of CORBA, the CORBAservices, Domain Facilities, UML, the MOF, and OMGs other modeling standards, the process is one of our groups major assets. »

7 © 2004, Mireille Fornarino Comité technique détermine la direction de larchitecture et des normes; émet des RFI (Request For Information) pour vérifier la disponibilité des technologies; émet des RFP (Request For Proposal) pour obtenir des propositions de spécifications; évalue les propositions et propose une sélection; fait des recommandations au comité directeur sur les choix des technologies. Comité directeur prend les décisions finales pour ladoption des spécifications. Organisation et procédures I.3. OMG

8 © 2004, Mireille Fornarino OMG en résumé L OMG prône l utilisation d une approche basée sur les technologies « objet » (devenu « modèle ») pour offrir une vue unique d un système distribué et hétérogène OMA : pour l architecture logicielle OMA = Object Managment Architecture MDA (Model Driven Architecture) CORBA : pour le « middleware » technique CORBA = Common Object Request Broker Architecture UML pour la modélisation UML = Unified Modeling language MOF pour la méta-modélisation MOF = Meta-Object Facility I.3. OMG

9 © 2004, Mireille Fornarino ORB Objet Code dimplantation Référence dobjet Interface dobjet Requête Activation Le modèle client/serveur orienté objet (1) Objet Corba ORB: Object Request Broker : Bus à Objets répartis Servant I.4. Client/serveur

10 © 2004, Mireille Fornarino Rôle du client : invoquer des services par envoie de requête accès à « lobjet » destinataire via une référence accès à l implantation via une interface Client/Serveur (2) I.4. Client/serveur

11 © 2004, Mireille Fornarino L infrastructure de distribution reçoit une requête pour « un objet » destinataire Localisation du serveur actif ou non Activation éventuelle du serveur Rôle du serveur : Activation par le serveur du servant concerné Le serveur détermine et exécute la méthode spécifiée par la requête et passe les résultats éventuels à l infrastructure qui les ramènent vers le client Fin de l activité du serveur Arrêt complet du serveur qui en informe alors l infrastructure. Client/Serveur (3) I.4. Client/serveur

12 © 2004, Mireille Fornarino Définitions (1/3) Client Entité capable démettre des requêtes vers des objets qui fournissent des services. Le client manipule des références vers des objets distants. Référence Objet Objet manipulé par le client pour invoquer des services sur un objet distant : objet implémentation. Terme usité : proxy Un proxy est un représentant local au client dun objet distant. I.4. Client/serveur

13 © 2004, Mireille Fornarino Requête Emise par un client pour demander lexécution dune opération sur un objet cible. La requête contient lopération à exécuter, lobjet cible et les paramètres éventuels. Interface Description dun ensemble dopérations disponibles sur un objet. Spécification des interfaces en IDL. Opération Entité identifiable caractérisée par une signature décrivant les paramètres de la requête et les valeurs de retour. Définitions (2/3) I.4. Client/serveur

14 © 2004, Mireille Fornarino Serveur application qui crée des objets CORBA et rend les services fournis par ces objets accessibles à dautres applications. Objet implémentation Objet situé sur le serveur qui implémente le code des méthodes des opérations définies en IDL. Définitions (3/3) I.4. Client/serveur

15 © 2004, Mireille Fornarino ORB (2/2) Composant central du standard CORBA qui gère : +la localisation dobjet +la désignation des objets +lempaquetage des paramètres (marshalling) +le dépaquetage des paramètres (unmarshalling) +linvocation des méthodes +la gestion des exceptions +l activation automatique et transparente des objets De plus, il fournit des caractéristiques telles que : Úla liaison avec « tous » les langages de programmation Úun système auto-descriptif Úl interopérabilité entre les bus I.5. OMA ORB

16 © 2004, Mireille Fornarino Bus Corba : fonctions... ORB Client serveur Référence -> faire(param1,param2,...) réseau Marshaling Unmarshaling faire(param1,param2,...) Return Marshaling Return Unmarshaling I.5. OMA ORB

17 © 2004, Mireille Fornarino Bus Corba C++ Souche Java Souche Smalltalk Souche Ada Souche ORB : Liaison avec « tous » les langages de programmation I.5. OMA ORB

18 © 2004, Mireille Fornarino OMA Object Management Architecture

19 © 2004, Mireille Fornarino Description dune architecture de Gestion dObjets classifiant les objets en fonction de leurs rôles et définissant les bases des futures spécifications incluant : une prise en compte des problèmes dintégration dans des environnements distribués; un modèle dobjets abstrait; larchitecture du modèle de référence; InterOpérabilité entre ORBs un glossaire des termes utilisés Object Management Architecture Utiliser des services standardisés à la conception, limplantation et lexécution. I.5. OMA

20 © 2004, Mireille Fornarino Vue dun objet dans une application monolithique Vue dun objet dans une application d'objets distribués objet stubsstubs sqelettessqelettes implimpl invocation distante objet sur client Proxy objet sur serveur Servant impl = objet implementation Legende Concepts (1/2) I.5. OMA Modèle objet

21 © 2004, Mireille Fornarino serveur pur invocation distante Application 1 Application 2Application 3 c- obj 1 objet client s objet serveur c- obj 2 client pur objet client c- obj 3 s objet serveur invocation distante s objet serveur client serveur obj 1 Impl obj 2 Impl obj 3 Impl Legende : c-obj i : objet client obj i s : squelette obj i Impl : objet implementation obj i Concepts (2/2) I.5. OMA Modèle objet

22 © 2004, Mireille Fornarino CORBA Architecture du modèle de référence Bus dobjets répartis (O.R.B.) Licences TransactionsPersistancePropriétésChangementsEvents NommageVendeurSécuritéRelationsCollectionsTempsExternalisation Interrogations Cycle de vie Concurrence Services objet communs (CORBA Services) Workflow DataWareIHM Administration Utilitaires communs Finance Télécom Santé Interfaces de domaine Objets applicatifs Spécifiques I.5. OMA

23 © 2004, Mireille Fornarino Processus de développement

24 © 2004, Mireille Fornarino Le contrat IDL IDL Bus CORBA Squelette IDL Stub IDL Fournisseur d objets Client d objets 3. IDL 3- Le langage IDL Un « esperanto » pour les objets Objets Corba

25 © 2004, Mireille Fornarino Étapes de mise en oeuvre Spécification interface IDL Compilation interface IDL Implantation des objets Corba Implantation du serveur Enregistrement du serveur Implantation du client Côté client Côté serveur Utilisation du service Nommage

26 © 2004, Mireille Fornarino Spécification interface IDL (1/2) Un objet grid est un tableau contenant des valeurs. Les valeurs sont accessibles grâce aux opérateurs get et set qui peuvent être invoqués à distance. Processus client Processus serveur Appel de get et set sur l'objet grid distant objets grid 1- Exemple introductif

27 © 2004, Mireille Fornarino Spécification interface IDL (2/2) interface Grid { readonly attribute short height; readonly attribute short width; void set (in short n, in short m, in long value); long get(in short n, in short m); void copyIn(inout Grid g); }; 1- Exemple introductif

28 © 2004, Mireille Fornarino Le langage IDL Interface Definition Language + langage de spécification dinterfaces, supportant lhéritage multiple; 2indépendant de tout langage de programmation ou compilateur (langage pivot entre applications); + langage utilisé pour générer les stubs, les squelettes et pour définir les interfaces du Référentiel dinterface; 2la correspondance IDL-langage de programmation est fournie pour les langages C, C++, Java, Smalltalk, Ada, Cobol. 3. IDL Description

29 © 2004, Mireille Fornarino Exemple interface account { readonly attribute float balance; attribute string description; void credit (in float f); void debit (in float f); }; interface currentAccount : account { readonly attribute float overdraftLimit; }; interface bank { exception reject {string reason;}; account newAccount (in string name) raises (reject); currentAccount newCurrentAccount (in string name, in float limit) raises (reject); void deleteAccount (in account a); }; interface attribut opérations exception opérations 3. IDL Description

30 © 2004, Mireille Fornarino Eléments IDL + Une spécification IDL définit un ou plusieurs types, constantes, exceptions, interfaces, modules,... pragma constantes types de base au format binaire normalisé nouveaux types (typedef, enum, struct, union, array, sequence) exceptions types de méta-données (TypeCode, any) 3. IDL Description

31 © 2004, Mireille Fornarino Eléments IDL + Un module permet de limiter la validité des identificateurs + Interface : ensemble dopérations et de types =>classe C++ Syntaxe : Interface | [ ] { }; opération (synchrone ou asynchrone sans résultat) attribut (possibilité de lecture seule) Surcharge Interdite 3. IDL Description Réutilisation de spécifications existantes (#include)

32 © 2004, Mireille Fornarino module unService { typedef unsigned long EntierPositif; typedef sequence desEntiersPositifs; interface Premier { boolean est_premier ( in EntierPositif nombre); desEntiersPositifs nombres_premiers (in EntierPositif nombre); }; module monApplication { interface MonService { unService::EntierPositif prochainPremier(..); Exemple module définitions de type interface opérations 3. IDL Description

33 © 2004, Mireille Fornarino Exemple 3. IDL Description

34 © 2004, Mireille Fornarino Attribut IDL Définition dattribut interface account { readonly attribute float balance; attribute string description;... }; Equivaut à : float get_balance(); string get_description(); void set_description(in string s); 3. IDL Description

35 © 2004, Mireille Fornarino void op1 (in long input, out long output, inout long both); interface account; interface bank { account newAccount (in string name); void deleteAccount (in account old); }; Operations (1/2) + Paramètres nommés et associés à un mode + Opérations bloquantes par défaut ::= ( ) ClientuneBanque newAccount calcul retours 3. IDL Description

36 © 2004, Mireille Fornarino Pourquoi différents modes de passage de paramètres ? in : Données fournies par le client out : Données retournées par l objet inout : Données clientes modifiées par l objet Répartition Passage par copie

37 © 2004, Mireille Fornarino Opérations (2/2) oneway void notify (in string message); +Opération non bloquante + Pas de paramètre de type out, inout ou dexceptions + Valeur de retour : void + Pas d exceptions déclenchées. ClientuneBanque notify(«ok ») méthode finie 3. IDL Description

38 © 2004, Mireille Fornarino Exceptions exception reject {string reason;}; account newAccount (in string name) raises (reject); exception DateErronnee { String raison; }; Des exceptions CORBA standardisées UNKNOWNNO_PERMISSION BAD_PARAM NO_IMPLEMENT COM_FAILUREOBJECT_NOT_EXIST INV_OBJREF………. CORBA::Exception CORBA::UserException CORBA::SystemException 3. IDL Description Gestion explicite de la part du client

39 © 2004, Mireille Fornarino Définitions circulaires module Circulaire { interface B; interface A { void utiliséB(in B unB); } interface B { void utiliséA(in A unA); } 3. IDL Description

40 © 2004, Mireille Fornarino Héritage multiple interface A {... } interface B : A {... } interface C : A {... } interface D : B, C {...} A B C D 3. IDL Description

41 © 2004, Mireille Fornarino Types de base et autres types Types de base short long unsigned short unsigned long float double char boolean octet …... Types construits struct union enum Types génériques array sequence string MétaTypes any TypeCode Types de données dynamiques et auto-descriptifs 3. IDL Description

42 © 2004, Mireille Fornarino Type Any interface PileDeChaines { readonly attribut string sommet; void poser(in string valeur); string retirer(); }; interface PileGénérique { readonly attribut Any sommet; readonly attribut TypeCode typeDesValeurs; void poser(in Any valeur); Any retirer(); }; 3. IDL Description

43 © 2004, Mireille Fornarino Grid.java Exemple Compilation interface IDL vers Java Client _GridStub.java GridPOA.java Serveur Grid_Impl.java Client.java Serveur.java A écrire Généré 1- Exemple introductif Grid.idl Compilateur IDL/Java Répertoire grid I GridHelper.java GridHolder.java jidl … Grid.idl GridOperations.java

44 © 2004, Mireille Fornarino implantation du stub public class _GridStub ……. Grid – envoie de requêtes – invisible par le programmeur – instanciée automatiquement par GridHelper (narrow) – Utilise le DII pour assurer la portabilité du binaire implantation du squelette public abstract class GridPOA ………. GridOperations – reçoit et décode des requêtes – doit être héritée par limplantation 1- Exemple introductif Les classes Stubs et Squelettes

45 © 2004, Mireille Fornarino Implémentation du serveur (1) 1- Exemple introductif 1. Initialiser le bus CORBA –obtenir lobjet ORB 2. Initialiser ladaptateur dobjets –obtenir le POA 3. Créer les implantations dobjets 4. Enregistrer les implantations par ladaptateur 5. Diffuser leurs références –afficher une chaîne codifiant lIOR 6. Attendre des requêtes venant du bus 7. Destruction du Bus

46 © 2004, Mireille Fornarino Implémentation du client 1- Exemple introductif 1. Initialiser le bus (objet ORB) 2. Créer les souches des objets à utiliser 2.a. obtenir les références dobjet (IOR) 2.b. convertir vers les types nécessaires –narrow contrôle le typage à travers le réseau 3. Réaliser les traitements Rem. : éviter lopérateur bind (2.a + 2.b) –spécifique à chaque produit donc non portable

47 © 2004, Mireille Fornarino Objets CORBA A CORBA object is an object with an interface defined in CORBA IDL. CORBA objects have different representations in clients and servers. A server implements a CORBA object in a concrete programming language, for example in C++ or Java. This is done by writing an implementation class for the CORBA object and by instantiating this class. The resulting implementation object is called a servant. A client that wants to make use of an object implemented by a server creates an object that delegates all operation calls to the servant via the ORB. Such an object is called a proxy. When a client invokes a method on the local proxy object, the ORB packs the input parameters and sends them to the server, which in turn unpacks these parameters and invokes the actual method on the servant. Output parameters and return values, if any, follow the reverse path back to the client. From the clients perspective, the proxy acts just like the remote object since it hides all the communication details within itself. A servant must somehow be connected to the ORB, so that the ORB can invoke a method on the servant when a request is received from a client. This connection is handled by the Portable Object Adapter (POA)

48 © 2004, Mireille Fornarino Passage d un objet par référence ou par valeur Processus A Processus B Objet référence Objet invocation d une méthode résultat Processus B Objet invocation d une méthode Processus A référence Objet Processus A Processus B Objet copie Objet Processus B Objet invocation d une méthode Processus A serialized Object copie d objet créée

49 © 2004, Mireille Fornarino Le cycle de vie des objets Problème –actuellement, 1 grille = 1 serveur –pas de création/destruction dobjets à distance –seulement invocation dopérations Solution –notion de fabrique dobjets –exprimée en OMG-IDL Cest un canevas de conception : Design pattern –voir aussi le service LifeCycle Autres usages de la fabrique : - gestion de droits, load-balancing, polymophisme, …

50 © 2004, Mireille Fornarino Fabrique Grille creerGrille Limplantation de la fabrique

51 © 2004, Mireille Fornarino Limplantation de la fabrique Fabrique Grille detruireGrille

52 © 2004, Mireille Fornarino Interface IDL d une fabrique de Grilles module grilles {... interface Fabrique { Grid newGrid(in short width,in short height); };

53 © 2004, Mireille Fornarino 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 © 2004, Mireille Fornarino Notion de chemin daccès

55 © 2004, Mireille Fornarino 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);

56 © 2004, Mireille Fornarino 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)

57 © 2004, Mireille Fornarino Création dune nouvelle grille et mise à disposition par le service Nommage –1. Initialiser le bus CORBA –2. Obtenir le service Nommage (NS) –3. Obtenir la fabrique depuis le NS –4. Créer un répertoire –5. Enregistrer le répertoire dans le NS Une application dadministration de la fabrique

58 © 2004, Mireille Fornarino What is ORBacus? ORBACUS is an Object Request Broker (ORB) that is compliant with the Common Object Request Broker Architecture (CORBA) specification (2.4 + features 3) Dynamic Invocation and Dynamic Skeleton Interface Dynamic Any Interface and Implementation Repository Pluggable Protocols IDL-to-HTML and IDL-RTF documentation tools Includes Naming, Trading, Event, Notify, Property Services,balancing,… Full CORBA IDL support C++ and Java language mappings Simple configuration and bootstrapping Portable Object Adapter Objects by Value Portable Interceptors Single- and Multi-threaded Active Connection Management Fault Tolerant Extensions

59 © 2004, Mireille Fornarino Conclusion CORBA : ça marche et cest simple Choisir son langage dimplantation –C++ : complexe et moins portable –Java : portable et plus lent Choisir son bus –1 bus = 1 bibliothèque –mixer les bus : cest possible Expérimentez en TPs !


Télécharger ppt "© 2004, Mireille Fornarino - 1 - CORBA Common Object Request Broker Architecture Mise en pratique avec Orbacus en JAVA Mireille Blay-Fornarino"

Présentations similaires


Annonces Google