CORBA

Fiche ressource Article, événement, site web...
  • Création ou MAJ importante : 30/10/12
  • Correction mineure : 30/10/12
Mots-clés

CORBA

  • http://www.corba.org/
  • Date de publication du document ou de l'événement : Octobre 1991
  • Auteur(s) ou responsable(s) : OMG
Ce document a été rédigé par David Rousse, puis relu et complété par Riadh Ben Halima (LAAS et Ecole Nationale d'Ingénieurs de Sfax (Tunisie)) et Bechir Zalila (Ecole Nationale d'Ingénieurs de Sfax (Tunisie)).

Vue d'ensemble

Les principes

  • CORBA (Common Object Request Broker Architecture - Architecture de Négociateur de Requêtes sur un Objet Commun) fait parti de la famille des middleware (intergiciels) applicatifs, qui permettent de créer des applications basées sur des objets distribués auto-gérables, interagissant librement et indépendamment de la localisation de leur implantation sur un réseau. Un objet CORBA offre des services (via les algorithmes implantés dans ses méthodes) à des clients distants qui peuvent fonctionner sur différents systèmes d'exploitation tout en utilisant plusieurs langages de programmation.
  • Un objet CORBA est autonome et prêt à être branché sur des réseaux, des applications, des outils. Ainsi, cet objet métier se caractérise par les notions suivantes :
    • élément logiciel binaire et prêt à l’emploi,
    • destiné à exécuter un ensemble limité de tâches dans un domaine particulier,
    • interopérable (objets qui interagissent sans à priori se connaître),
    • disposant d'une interface pour permettre à l’extérieur d’accéder aux services offerts.
  • Les objets métier sont des entités logicielles autonomes rendant des services particuliers pour un métier donné.
  • Le développement d’applications à base d'objets CORBA apporte de multiples avantages :
    • disposer d'objets d’origines diverses qui peuvent interagir facilement,
    • créer ses propres applications avec des scripts et des objets en minimisant le développement dédié.

L'architecture

  • CORBA est une spécification d'un middleware orienté objet spécifié par l’OMG (Object Management Group)
    • CORBA est une architecture distribuée d’objets hétérogènes qui coopèrent via un bus logiciel,
    • CORBA permet à un ensemble d’objets distribués d’inter-opérer.
  • CORBA fournit une vision unique d’une architecture distribuée dans des environnements hétérogènes :
  • CORBA, architecture distribuée
    NB : on pourrait avoir sur le schéma des ORB pour chaque machine qui communiquent entre eux via le réseau.

Les points clés

  • Les points clés de CORBA sont :
    • masquer l’hétérogénéité des langages de programmation, des systèmes d’exploitation, des machines, …,
    • assurer l’interopérabilité entre objets, entre fournisseurs multiples,
    • être basé sur un langage commun pour la description, l’IDL,
    • proposer un bus logiciel, l’ORB,
    • fournir un modèle Client-Serveur orienté objet (dans le sens où le service est demandé par invocation de méthodes sur un objet distant).
  • L’architecture ouverte proposée par l’OMG, l’OMA (Object Management Architecture), peut se résumer ainsi :
  • CORBA, architecture distribuée

L'IDL (Interface Definition Language)

  • La base de l’interopérabilité de la spécification CORBA repose sur des interfaces écrites dans un langage neutre, l’IDL :
  • CORBA, extrait IDL
  • L’IDL est un langage purement déclaratif qui permet de décrire le contrat métier que l'objet offre au monde extérieur :
  • CORBA, architecture IDL

L'ORB (Object Request Broker)

L'ORB, définition

  • L’ORB est le négociateur de requêtes à objets autrement dit le bus à objets, qui fournit un ensemble très riche de services de middleware répartis :
    • il établit les relations entre objets, indépendamment de la localisation de ces derniers,
    • il permet donc aux objets de se découvrir, les uns les autres et d’interagir.
  • La notion de Client-Serveur est relative à une situation donnée. Pour l’ORB, un objet peut être client ou serveur selon les besoins :
  • CORBA, architecture ORB

L'ORB, côté client

  • La structure d’un ORB « coté client » en CORBA 3.0 peut être schématisée ainsi :
  • CORBA, architecture ORB client NB : la souche est déduite (générée) à partir de l'IDL.
  • Les souches (stubs) fournissent les interfaces des services objet du serveur. Pour chaque objet distant, le client doit posséder la souche correspondante à l’objet. Grâce à cette souche, l’encodage (et le décodage) de l’appel d’une méthode (avec ses paramètres) pourra être réalisé (marshalling) et envoyé au serveur.
  • Les appels dynamiques se font grâce aux interfaces à appel dynamique (DII pour Dynamic Invocation Interface), qui permettent donc de découvrir la méthode à exécuter au moment de l’exécution.
  • Le référentiel d’interfaces est une « base de données » qui contient toutes les versions exécutables (versions binaires) des interfaces définies en IDL. Des API de CORBA permettent d’accéder à ces métadonnées (données décrivant un objet).
  • Les interfaces de l’ORB sont des API permettant d’accéder à certains services de l’ORB (transformation d’une référence d’objet en son nom en clair par exemple).

L'ORB, côté serveur

  • La structure d’un ORB « coté serveur » en CORBA 3.0 peut être schématisée ainsi :
  • CORBA, architecture ORB serveur
  • Les squelettes (skeletons) du serveur ont le même rôle que les stubs : ils sont générés à partir de l'IDL et décrivent les services fournis par le serveur.
  • Les appels dynamiques se font via les interfaces de squelettes dynamiques (DSI pour Dynamic Skeleton Interface) : ils permettent l’appel de méthodes pour des objets serveur qui ne possèdent pas de skeletons.
  • Le référentiel d’implantation contient l’ensemble des classes supportées par le serveur, les objets en mémoire et leurs OIDs (Object IDentifier).
  • Les interfaces de l’ORB ont le même rôle que chez le client.
  • L’adaptateur d’objet (BOA, POA, …) se situe au dessus du noyau de l’ORB : c’est lui qui va traiter les demandes d’appels de méthodes. Pour ce faire, il fournit un environnement d’exécution pour créer les instances des objets sur le serveur. L’adaptateur va également enregistrer les objets dans le Référentiel d’implantations :
    • l’adaptateur d’objet (OA, Object Adaptater) fournit un environnement complet pour que les instances d’objets puissent vivre sur le serveur. Son principal rôle est d’associer une requête portant sur un objet référencé au code spécifique qui doit servir la requête,
    • toute machine voulant être un serveur d’objets doit posséder au moins un adaptateur d’objets,
    • plusieurs types d’OA ont été spécifiés (Basic OA avant CORBA 2.2: obsolète et pauvre, Portable OA après CORBA 2.2: riche),
    • un OA réalise principalement les actions présentées dans le schéma ci-dessous.
    • CORBA, architecture OA

L'architecture inter-ORB

  • L’OMG a défini un protocole standard pour faire communiquer deux ORBs (deux implantations différentes de CORBA). La spécification CORBA a baptisé ce protocole GIOP (General Inter-ORB Protocol) :
    • GIOP est situé au dessus de tout protocole de transport : ce protocole spécifie comment deux ORBs peuvent communiquer.
    • IIOP (Internet Inter-ORB Protocol) est une instance de GIOP au dessus de TCP/IP et permet d’acheminer des messages entre 2 ORBs.
  • CORBA, architecture inter-ORB

Les services

  • CORBA fournit un ensemble de services (CORBA Services) au niveau système. Ces services sont proposés sous forme d'objets.
  • Ces services viennent enrichir les services de base de l’ORB. On peut citer comme services :
    • nommage (localisation des objets par leurs noms en clair).
    • cycle de vie (gestion de la création, de la copie, de la suppression des objets sur le bus),
    • persistance (stockage des objets),

Les utilitaires communs

  • Les utilitaires communs (Common Facilities) sont des composants qui fournissent des services directement utilisables par les objets métier.
  • Ces services sont encore appelés canevas applicatifs, par opposition aux services de base, appelés canevas système. On peut citer les services suivants :
    • gestion de l’information avec par exemple la gestion des documents composites,
    • services d’administration avec notamment la gestion des composants répartis.

Les objets métier

  • Les objets métier (Business Objet) sont les briques applicatives que l’on va utiliser pour assembler des applications.
  • Les objets métier sont la partie « utile » d’un point de vue de l’utilisateur final : ces objets métier se servent des services présentés ci-dessous :
  • CORBA, objet métier

Positionnement vis à vis d'autres middllewares applicatifs

 

Services web COM+ CORBA RMI RPC
Description Middleware orienté message permettant l’échange d’informations entre entités logicielles de manière normalisée Middleware orienté objet permettant l’invocation de méthodes sur des objets distants fonctionnant sur des systèmes MS Windows Middleware orienté objet permettant l’invocation de méthodes sur des objets distants fonctionnant sur des systèmes hétérogènes Middleware orienté objet permettant l’invocation de méthodes sur des objets distants fonctionnant sur des machines virtuelles JAVA Middleware orienté application permettant l’invocation de procédures distantes
Mécanisme de découverte UDDI SCM (Service Control Manager), base de registre Naming Service Service RMI Registry ou JNDI Port mapper
Mécanisme de description WSDL API DCOM, TypeLib et MSIDL IDL Interface JAVA IDL
Mécanisme de formatage des communications SOAP ou REST Object RPC (extension de RPC DCE) GIOP Transport Layer de RMI RPC
Encodage XML Binaire DCOM (NDR) Binaire CORBA (CDR) Binaire RMI Binaire RPC (XDR)
Mécanisme de transport HTTP, HTTPS, SMTP Protocole de niveau Transport (niveau 4 OSI) IIOP sur TCP JRMP ou IIOP Socket
Quelques implantations disponibles .net, Apache Axis Plateformes MS Windows Jacord, Orbacus, PolyOrb, OmniOrb Serveurs J2EE du marché Beaucoup de produits en production depuis des années

 

Références

  • Le livre de J. DANIEL, Au Cœur de CORBA, aux éditions Vuibert, est une bonne source pour aborder en détail CORBA.
  • La liste des implantations existantes est donnée ici.
  • Une autre source d'outils CORBA ici.