France Télécom R&D Le présent document contient des informations qui sont la propriété de France Télécom. L'acceptation de ce document par son destinataire implique, de la part de ce dernier, la reconnaissance du caractère confidentiel de son contenu et l'engagement de n'en faire aucune reproduction, aucune transmission à des tiers, aucune divulgation et aucune utilisation commerciale sans l'accord préalable écrit de France Télécom R&D 1 Introduction à Corba Réunion Cube – 24/10/2003 P. Déchamboux (FTR&D DTL/ASR)
France Télécom R&D 2 Contenu et déroulement è Références è Plan vision Corba mise en oeuvre de Corba liaison et transport dans Corba services « systèmes » et canevas de Corba è Annexe exemple : HelloWorld
France Télécom R&D 3 Vision de Corba
France Télécom R&D 4 OMG : concepts-clés è Permettre l’interopérabilité des composants / applications par l’intermédiaire d’un mode de coopération unifié : l’appel d’objets distants è Gérer l’hétérogénéité des réseaux, machines, systèmes et langages è Vision utilisateur = langage pivot commun : OMG-IDL è Offrir une architecture globale
France Télécom R&D 5 OMG : les objectifs techniques è Liaison avec tous les langages è Transparence des invocations è Invocation statique et dynamique è Système auto-descriptif è Activation automatique è Interopérabilité entre bus
France Télécom R&D 6 OMG : vision globale è Common Object Request Broker Architecture CORBA appel de méthode réparti transparent passages de paramètres : in, out, in/out types de paramètres : types de base (entiers, string, etc), références d’objets, objets par valeur un bus à objets répartis (ORB) transport des requêtes, activation des objets des services de base (CORBAservices) des utilitaires communs (CORBAfacilities) des interfaces de domaines = objets métiers « interopérabilité sémantique »
France Télécom R&D 7 OMA : l’architecture globale Licences TransactionsPersistancePropriétésChangementsEvents NommageVendeurSécuritéRelationsCollectionsTempsExternalisation Interrogations Cycle de vie Concurrence Services objet communs Workflow DataWareIHM Administration Utilitaires communs Finance Télécoms Santé Interfaces de domaine Objets applicatifs Spécifiques Bus d’objets répartis
France Télécom R&D 8 ORB OMG : le modèle client/serveur objet Objet CORBA Etat Code d’implantation Référence d’objet Interface d’objet Requête Activation
France Télécom R&D 9 Mise en oeuvre de Corba
France Télécom R&D 10 OMG-IDL : le langage d’interfaces è Rôle du langage décrire les interfaces des objets langage pivot entre applications générer des squelettes de programme dans les langages de programmation des applications
France Télécom R&D 11 OMG-IDL : mise en oeuvre des interfaces è Projection des descriptions OMG-IDL vers les langages d’implantation des clients et des serveurs (e.g., C, C++, Java, etc). mode « statique » è Instanciation sous forme d’objets CORBA des descriptions OMG-IDL dans un référentiel d’interfaces. mode « dynamique »
France Télécom R&D 12 CORBA : les composantes du bus Bus de communication Interface du bus Interface d’invocation statique Interface d’invocation dynamique SIIDII ORB SSIDSI OA Adaptateur d’objet Interface de squelettes statiques Interface de squelettes dynamiques IR Référentiel des interfaces ImplR Référentiel des implantations
France Télécom R&D 13 Liaison et transport dans Corba
France Télécom R&D 14 Les couches de transport de CORBA è GIOP : protocole d’interopérabilité entre bus de la norme CORBA 2 support à l’appel de méthode (enveloppe = REQUEST, REPLY, etc) encodage des données : CDR GIOP sur Internet = Internet Inter ORB Protocol (IIOP) champs « service context » (ex: standardisation ctxt transactions, sécurité)
France Télécom R&D 15 Nommage dans Corba è Noms du domaine Corba Interoperable Object Reference : IOR identification protocole interface OMG-IDL è Sous-domaine Corba/Internet adresse IP + port clé de format libre (dépendant de l’adaptateur d’objet) identificateur d’adaptateur d’objet clé de format libre (dépendant de l’adaptateur d’objet)
France Télécom R&D 16 Emballeur GIOP Talon client (IOR) Interface applicative (issue de l’interface IDL) IOR servant Adaptateur d’objet Mise en place d’une liaison Emballeur GIOP Squelette serveur Servant applicatif Invocation Liaison IIOP
France Télécom R&D 17 Services « systèmes » et canevas de Corba
France Télécom R&D 18 Les services communs (1) è Services de localisation d’objets service de nommage (Naming) pour retrouver un objet par un nom service de type « pages blanches » service de courtage (Trader) pour retrouver un objet par des propriétés service de type « pages jaunes »
France Télécom R&D 19 Les services communs (2) è Services de communications asynchrones Events, Notification, Messaging è Services de sûreté de fonctionnement Security, Transactions, Concurrence è Services concernant la vie des objets Life Cycle, Property, Relationship, Externalization, Persistent Object, Query, Collection, Versionning, Time, Licencing
France Télécom R&D 20 Exemple : « Hello World » en Java
France Télécom R&D 21 Chaine de production de programme Hello.idl HelloOperations.java Hello.java HelloHelper.java HelloHolder.java _StubForHello.java Compilateur OMG-IDL / Java HelloClient.java HelloPOA.java HelloPOATie.java Client Serveur HelloServeur.java HelloImpl.java
France Télécom R&D 22 De l’IDL à Java è Interface OMG-IDL Hello è Interface Java HelloOperations, Hello è Classes Java HelloHelper, HelloHolder interface Hello { void doHello(); }; public interface HelloOperations { public void doHello(); } public interface Hello extends HelloOperations, org.omg.CORBA.Object, org.omg.CORBA.portable.IDLEntity {}
France Télécom R&D 23 Implantation du serveur Corba public class HelloServeur { public static void main(String args[]) { // Initialisation du Bus Corba et d’un POA org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args, null); org.omg.PortableServer.POA poa = POAHelper.narrow(orb.resolve_initial_references("RootPOA")); poa.the_POAManager().activate(); // récupération du serveur de nom org.omg.CosNaming.NamingContext ns = org.omg.CosNaming. NamingContextHelper.narrow( orb.resolve_initial_references("NameService")); // Creation du servant et enregistrement au serveur de noms HelloImpl hello = new HelloImpl(); ns.rebind( new org.omg.CosNaming.NameComponent[] {new NameComponent("HelloObj","")}, hello); // Mise en attente du serveur orb.run(); }
France Télécom R&D 24 Implantation du client Corba public class HelloClient { public static void main(String args[]) { // Initialisation du Bus Corba org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args, null); // récupération du serveur de nom org.omg.CosNaming.NamingContext ns = org.omg.CosNaming. NamingContextHelper.narrow( orb.resolve_initial_references("NameService")); // Récupération de la souche depuis le serveur de nom org.omg.CORBA.Object obj_ref = ns.resolve(new org.omg.CosNaming.NameComponent[] {new NameComponent("HelloObj","")}); Hello hello = HelloHelper.narrow(obj_ref); // Invocation de l'objet distant hello.doHello(); }
France Télécom R&D 25 Les classes générées (client et serveur) è Classe _StubForHello : implantation du talon sert à envoyer les requêtes utilisé en lieu et place de l'objet Hello dans le client è Classe HelloPOA Classe HelloPOATie reçoit et décode les requêtes implantation par héritage implantation par délégation public class HelloImpl extends HelloPOA { public HelloImpl() {} public void doHello() { System.out.println("Hello world!"); }
France Télécom R&D 26 Corba dynamique
France Télécom R&D 27 L’invocation dynamique è Référentiel d’interfaces (IR) accessible comme objet Corba gestion de méta-objets Corba (ModuleDef, InterfaceDef, OperationDef, AttributeDef, TypedefDef, …) è API (DII) de construction de requêtes è 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
France Télécom R&D 28 Le squelette dynamique è API (DSI) de décodage de requêtes è Pas d’utilisation de squelettes pré-générés è Utilisée pour implanter dynamiquement des objets è Cas d’utilisation : création de passerelles