Middleware
En architecture informatique, un middleware (anglicisme) ou intergiciel est un logiciel tiers qui crĂ©e un rĂ©seau d'Ă©change d'informations entre diffĂ©rentes applications informatiques. Le rĂ©seau est mis en Ćuvre par l'utilisation d'une mĂȘme technique d'Ă©change d'informations dans toutes les applications impliquĂ©es[1] Ă l'aide de composants logiciels.
Les composants logiciels du middleware assurent la communication entre les applications quels que soient les ordinateurs impliqués et quelles que soient les caractéristiques matérielles et logicielles des réseaux informatiques, des protocoles réseau, des systÚmes d'exploitation impliqués.
Les techniques les plus courantes d'échange d'informations sont l'échange de messages, l'appel de procédures à distance et la manipulation d'objets à distance.
Les middlewares sont typiquement utilisés comme ciment pour relier des applications informatiques disparates des systÚmes d'information des entreprises et des institutions.
Traduction
Le terme middleware vient de l'anglais middle (du milieu) et software (logiciel). Diverses francisations ont été proposées :
- La Délégation générale à la langue française et aux langues de France préconise l'emploi de logiciel médiateur depuis 1999.
- L'Office québécois de la langue française, quant à lui, propose le terme intergiciel.
- Les termes de logiciel dâinter-mĂ©diation et, par abus de langage, de bus logiciel (voir aussi bus de donnĂ©es) peuvent se rencontrer dans la littĂ©rature.
Techniques
L'échange de messages, l'appel de procédures et la manipulation d'objets tiers sont trois techniques prises en charge par le middleware, qui permettent à des applications informatiques d'interagir, de coopérer et de se transmettre des informations.
Ăchange de messages
Dans un middleware orienté message (message-oriented middleware ou MoM), les applications informatiques communiquent par échange de messages d'une maniÚre similaire au courrier électronique : une application informatique émet un message qui est alors transmis à l'application destinataire par les composants logiciels du middleware pendant que l'application émettrice effectue d'autres traitements (asynchronisme).
Le contenu du message est formaté par l'émetteur selon une convention préétablie puis analysé automatiquement par l'application destinataire conformément à cette convention. Le format de données XML est souvent utilisé pour les messages[2].
Le message peut ĂȘtre transmis Ă une application choisie par l'expĂ©diteur, une liste d'applications abonnĂ©es ou toutes les applications qui exploitent le middleware. Les messages sont triĂ©s par prioritĂ© et placĂ©s dans des files d'attente (queue) par les composants logiciels du middleware[3].
Exemples de MoM
- AMQP (Advanced Message Queuing Protocol) est un protocole standard ouvert pour les MoM, dont dĂ©rive notamment rĂ©cemment ĂMQ (ou ZeroMQ).
- WebSphere MQ, de IBM, est un composant logiciel pour middleware orienté message.
- JMS est une interface de programmation pour middleware orientĂ© message, OW2 JORAM Ă©tant un des logiciels qui mettent en Ćuvre cette interface.
Appel de procédure à distance
Avec un middleware basĂ© sur les appels de procĂ©dure Ă distance (remote procedure call), des fonctions (procĂ©dures) existantes dans une application informatique donnĂ©e peuvent ĂȘtre exĂ©cutĂ©es sur demande par d'autres applications.
L'appel de procĂ©dure Ă l'intĂ©rieur d'une application est un mĂ©canisme logiciel ordinaire qui peut ĂȘtre rĂ©alisĂ© avec n'importe quel langage de programmation procĂ©dural. Il en va autrement quand cet appel est rĂ©alisĂ© entre deux applications.
Dans le mécanisme d'appel de procédure à distance, les composants logiciels du middleware créent dans l'application appelante un composant logiciel souche (stub) dont les fonctions sont identiques à celles de l'application informatique appelée. Puis les appels de procédure effectués par l'application appelante sur la couche sont déviés par les composants logiciels du middleware vers l'application appelée dans laquelle les composants du middleware ont créé une autre souche semblable à l'appelant.
Le rĂ©sultat de l'exĂ©cution de la fonction est ensuite transmis de l'appelĂ© vers l'appelant par les mĂȘmes mĂ©canismes. Les composants du middleware utilisent le procĂ©dĂ© de sĂ©rialisation (marshalling)[4].
Le protocole réseau RPC de Sun Microsystems sert à effectuer des appels à distance.
SOAP est une technique d'appels à distance sur des serveurs web basée sur XML et le protocole HTTP - protocole des serveurs web.
Technique intermédiaire entre les appels de procédure à distance et la manipulation d'objets, RMI est un composant logiciel pour effectuer des appels de procédure à distance sur des objets en langage de programmation Java.
Manipulation d'objets
Avec un middleware Ă objets, une application informatique donnĂ©e peut manipuler les objets â de programmation orientĂ©e objet â d'une autre application. Ces manipulations induisent des traitements et des modifications d'informations dans l'application qui est propriĂ©taire de l'objet en question.
La manipulation d'objets par l'application à laquelle ils appartiennent est une opération ordinaire de programmation orientée objet. Les mécanismes nécessaires existent dans la totalité des langages de programmation orientés objet. Il en va autrement de la manipulation d'un objet appartenant à une autre application.
Le mécanisme de manipulation d'objet tiers est similaire au mécanisme d'appel de procédure à distance : les composants du middleware créent dans l'application informatique qui exploite l'objet (client) une souche (stub) de celui-ci. Puis les manipulations effectuées sur la souche sont déviées par les composants du middleware vers l'application à laquelle appartient l'objet (fournisseur). Les composants du middleware créent dans l'application fournisseur un objet qui contient l'objet manipulé ainsi que les instructions nécessaires pour recevoir les manipulations - le squelette (skeleton). Le squelette est réalisé en utilisant les mécanismes d'héritage de la programmation orientée objet[5].
DCOM de Microsoft est une technique de manipulation d'objets distants basée sur le protocole réseau RPC.
DCE est un middleware Ă manipulation d'objet du Object Management Group basĂ© sur CORBA, une technique standardisĂ©e du mĂȘme auteur.
Transactions
En informatique, une transaction est une suite d'opĂ©rations indissociables - qui doivent ĂȘtre rĂ©alisĂ©es entiĂšrement ou pas du tout. Divers composants de middleware permettent la rĂ©alisation de ces transactions. Ils permettent en particulier l'annulation totale de la transaction en cas d'Ă©chec[6].
CICS, IMS et MQ Series [7] (IBM) et DTC de Microsoft sont des middleware qui permettent la réalisation de transactions.
Interopérabilité entre les intergiciels majeurs : CORBA, RMI, DCOM
L'interopérabilité entre logiciels est un concept informatique qui décrit la communication entre plusieurs applications indépendantes éditées sur des plateformes différentes et utilisées sur des ordinateurs différents.
Cette interopérabilité se fait à travers des intergiciels (ou middlewares) qui permettent l'échange d'informations entre ces applications.
Il y a de plus en plus de systÚmes qui utilisent leur propre langage et qui sont différents sur de nombreux aspects. Par conséquent les intergiciels interviennent pour résoudre ce problÚme. CORBA, Oracle Java RMI et Microsoft COM/DCOM sont les applications les plus utilisées.
Passer de la production de logiciel vers le milieu industriel (via les composants réutilisables) a été l'objectif premier du génie logiciel.
CORBA
L'OMG (Object Management Group) est un regroupement de spĂ©cialiste informatique depuis 1989. Actuellement il y a environ 850 acteurs de ce groupe (IBM, NASA, LIFL, Alcatel, etc.). Ă travers ce regroupement, il y a un objet : faire Ă©merger les standards pour l'intĂ©gration d'applications distribuĂ©es hĂ©tĂ©rogĂšnes. L'Ă©lĂ©ment clĂ© de la vision de l'OMG est CORBA : un middleware orientĂ© objet. CORBA (Common Object Request Broker Architecture) est basĂ© sur une architecture d'appel-rĂ©ponse. Ce bus d'objets rĂ©partis offre un support dâexĂ©cution masquant les couches techniques d'un systĂšme rĂ©parti. De plus il prend en charge les communications entre les composants logiciels formant les applications rĂ©parties hĂ©tĂ©rogĂšnes.
ModĂšle objet Client/Serveur
Le bus CORBA propose un modÚle orienté objet client/serveur d'abstraction et de coopération entre les applications réparties :
- La composante dâabstraction : chaque application peut exporter certains de ses services sous la forme dâobjets CORBA ;
- La partie coopération : les interactions entre les applications sont alors matérialisées par des invocations à distance des méthodes des objets.
Ce modĂšle d'objet intervient uniquement lors de l'utilisation d'un objet. On caractĂ©rise alors l'application implantant l'objet comme le serveur et l'application utilisant l'objet comme le client. Cependant il faut noter qu'une application peut ĂȘtre Ă la fois cliente et serveur.
Sur le schéma précédent on voit différentes notions :
- L'application cliente : Programme qui utilise les méthodes objets via le bus CORBA
- La référence de l'objet : Structure qui désigne l'objet CORBA et permet de le localiser sur le bus.
- L'interface de l'objet : Ce qui définit les opérations et attributs de l'objet CORBA (utilisation du langage OMG-IDL)
- Le bus CORBA : Transfert les requĂȘtes de l'application cliente vers l'objet
- L'objet CORBA : Entité virtuelle gérée par le bus CORBA.
- L'activation : Technique d'association d'un objet d'implantation Ă un objet CORBA
- Le code d'implantation : Regroupement des traitements liés à l'implantation de l'objet CORBA
- L'application serveur : Structure d'accueil des objets d'implantation et des exécutions des opérations
Java RMI
Remote method invocation, plus connu sous l'acronyme RMI est une interface de programmation (API) pour le langage Java qui permet d'appeler des méthodes distantes, sur le principe des ORB. L'utilisation de cette API nécessite l'emploi d'un registre RMI sur la machine distante hébergeant ces objets que l'on désire appeler au niveau duquel ils ont été enregistrés. Cette interface de programmation est trÚs souvent utilisée en parallÚle avec l'API d'annuaire JNDI ou encore avec la spécification de composants distribués transactionnels EJB du langage Java.
Cette bibliothÚque qui se trouve en standard dans Java J2SE, est une technologie qui permet la communication via le protocole HTTP (ou IIOP, depuis la version 1.3 du JDK) entre des objets Java éloignés physiquement les uns des autres, autrement dit s'exécutant sur des machines virtuelles java distinctes. RMI facilite le développement des applications distribuées en masquant au développeur la communication client / serveur.
Cette bibliothĂšque entre en concurrence avec la norme CORBA maintenue par l'Object Management Group, et les produits qui la respectent, ou avec la technologie RPC dont l'un des acteurs est Microsoft.
Microsoft COM/DCOM
DCOM (Distributed Component Object Model) est un ensemble de concepts Microsoft et d'interfaces de programmes dans lequel les objets de programme client peuvent demander des services Ă partir d'objets de programme serveur sur d'autres ordinateurs dans un rĂ©seau. DCOM est basĂ© sur le "Component Object Model"(COM), qui fournit un ensemble d'interfaces permettant aux clients et aux serveurs de communiquer dans le mĂȘme ordinateur (qui exĂ©cute Windows 95 ou une version ultĂ©rieure).
Notes et références
- (en) John Footen et Joey Faust, The Service-Oriented Media Enterprise: SOA, BPM, and Web Services in Professional Media Systems, Focal Press, 2008, (ISBN 9780240809779), chapitre 4 The Definition of Middleware.
- (en) Daniel Serain et Iain Craig, Middleware and enterprise application integration: the architecture of e-business solutions, Springer - 2002, (ISBN 9781852335700), page 154
- (en) Gunjan Samtani et Marcus Healey,B2B integration: a practical guide to collaborative e-commerce, Imperial College Press - 2002, (ISBN 9781860943263)
- (en) Bill Blunden, Message passing server internals, McGraw-Hill Professional - 2003, (ISBN 9780071416382)
- (en) Gustavo Alonso, Web services: concepts, architectures and applications, Springer - 2004, (ISBN 9783540440086), page 55
- (en) Qusay H. Mahmoud, Middleware for communications, John Wiley and Sons - 2004, (ISBN 9780470862063), page 54
- http://publib.boulder.ibm.com/infocenter..
Voir aussi
Bibliographie
- J.Aldrich, C.Chambers, and D.Notkin (2002) « ArchJava : Connecting SoftwareArchitecture to Implementation ». InProc. International Conference on SoftwareEngineering, pages 187â197. ACM Press
- J.Aldrich, V.Sazawal, C.Chambers, and David Notkin (2003) « LanguageSupport for Connector Abstractions ». InProceedings 17th European Conferenceon Object-Oriented Programming (ECOOP)
- R.Cerqueira, C.Cassino, and R.Ierusalimschy (1999) « Dynamic componentgluing across different componentware systems » ; Distributed Objects and Applications. Proceedings of the International Symposium on, pages 362â371,1999
- A.Erbad, M.Blackstock, A.Friday, R.Lea, and J.Al-Muhtadi (2008), « MA-GIC Broker : A Middleware Toolkit for Interactive Public Displays ». InPER-COMâ08 : Proceedings of the 2008 Sixth Annual IEEE International Conferenceon Pervasive Computing and Communications, pages 509â514, Washington, DC,USA, IEEE Computer Society.