Telechargé par aicha diarrasouba

SUPPORT DE COURS MIDDLEWARE

publicité
Prof : KONAN HYACINTHE
MIDDLEWARE
MASTER1 2019-2020
Page :.1
Chapitre 0 : Introduction
0.1 Problématique de la programmation répartie
Permettre à un programme de s’exécuter sur plusieurs machines reliées
par un réseau
 à large échelle (Internet)
 local (intranet)
de plusieurs domaines de l’informatique :
 système d’exploitation (système d’exploitation répartis)
 réseau (librairies de programmation réseau)
 langage de programmation (langages de programmation étendus)
Ceci implique :
 Un Environnement de programmation répartie qui emprunte des
caractéristiques à ces 3 domaines
 Un nouveau paradigme de programmation : interaction
client/serveur
L’interaction client/serveur s’assimile à un appel procédural étendu au
cas où appelant et appelé ne sont pas situés sur la même machine
Page :.2
0.2. Client/Serveur
Les environnements de programmation répartie permettent de mettre en
œuvre les solutions client/serveur.
 le modèle client/serveur est la description conceptuelle de la
communication entre un client qui émet une requête et un serveur qui
traite la requête émise ;
 un système client/serveur est l’implantation physique et
logicielle du modèle c/s ;
 une application client/serveur est une application développée au
sein d’un système client/serveur.
Client/Serveur 2 tiers
Avantages
• 1ère infrastructure informatique pour un travail
coopératif
• centralisation des traitements au niveau du
serveur
• pas de duplication de données
• gestion simple de la cohérence et de l’intégrité
des données
• maîtrise globale des processus de travail (workflow)
relativement simple
Inconvénients
• relation directe entre le client et le serveur
• pas de transparence de localisation
• modèle trop rigide qui n’assure pas l’évolutivité
• souvent solutions propriétaires qui ne facilitent ni la
portabilité, ni l’hétérogénéité, ni l’intéropérabilité
Page :.3
Client/Serveur 3 tiers
• Intermédiaire entre le client et le serveur de
données
• Localisation de la logique du traitement sur cet
intermédiaire
• L’intermédiaire gère l’accès à la (aux) bases de
données
Avantage :
• meilleure répartition des charges
Inconvénients :
• mise en œuvre initiale + complexe
• maîtrise des flux de traitements plus complexe
0.3. Environnement de programmation répartie (middleware).
Le middleware désigne dans le cadre de l’informatique répartie, toutes les
couches logicielles qui permettent à deux applications d’interagir à
distance.
• fournit aux applications une
abstraction du système
d’exploitation et du réseau
• unifie l’accès à des machines
hétérogènes
• est indépendant du langage de
programmation des applications
On distingue aujourd’hui quatre grandes classes de Middleware :
• l’exécution de transaction (Transactions Processing) qui est une
classe de logiciel plutôt orienté “base de données” dont nous ne
parlerons pas ici,
• les RPC (Remote Procedure Calls) qui distribue l’exécution de
routines sur un réseau (voir plus loin) ;
Page :.4
• les MOM (Message Oriented Middleware) qui permettent
l’échange de données entre applications (voir également plus loin) ;
• et les ORB (Object Request Broker) qui permettent la distribution
d’objets sur un réseau de machines (voir la description de CORBA).
0.4. Caractéristiques des environnements de programmation répartie
• gèrent l’hétérogénéité des systèmes d’exploitation et des
langages
• fournissent un moyen standardisé de décrire les services fournis par
les applications réparties
• fournissent des protocoles d’intéropérabilité entre machines
distantes
• acheminent une requête entre un client et un serveur
• fournissent des services qui permettent d’accélérer le
développement des applications réparties
• fournissent des outils de développement qui facilitent l’intégration
des composants d’une application
• toutes les plate-formes middleware existantes sont orientées
objet - elles sont conçues selon une architecture objet - les entités qui
composent les applications sont des objets
Page :.5
Chapitre 1 : Généralités
1.1. 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.
1.2 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.
Page :.6
Chapitre 2 : 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.
2.1. É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.
Page :.7
2.2. 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 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 souche 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 [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.
Page :.8
2.3. 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 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). 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.
2.4. 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 (IBM) et DTC de Microsoft sont des
middlewares qui permettent la réalisation de transactions.
Page :.9
Chapitre 3 : 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.
3.1. 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.
Page :.10
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
Page :.11
3.2. 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.
3.3. 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).
Page :.12
Chapitre 4 : Les langages vus comme middleware
Pour l’utilisateur qui ne souhaite pas “mélanger” différents langages lors du
développement de ses applications la solution middleware-langages peut
être une option intéressante.
Certains langages fournissent en effet de façon native des services de type
middleware. Là encore, les solutions vont du plus simple au plus complique.
Nous allons rapidement examiner quelques exemples.
4.1 Ocaml
Object CAML est un langage de la famille ML (Meta Language). Il s’agit donc
d’un langage de type fonctionnel, mais disposant d’extensions impératives
et d’extensions objet. C’est actuellement le standard pour l’enseignement de
l’informatique en France dans les classes préparatoires, les DEUG et aussi
beaucoup d’écoles d’ingénieurs.
CAML possède la propriété intéressante de reposer sur un modèle théorique
“propre” (le lambda calcul type) qui permet d’employer un typage fort et
automatique, invisible pour l’utilisateur qui n’a jamais besoin de déclarer les
variables. Le système de typage de CAML permet un codage des structures
de données (quel que soit leur type, leur complexité et leur niveau
d’imbrication) en chaîne d’octets, de façon totalement transparente. Ces
chaînes peuvent être transférées sur le réseau et immédiatement décodées
par une autre application CAML de façon tout aussi transparente. Le typage
de données est cependant implicite ; comme en XDR, l’application recevant
les données doit connaître à l’avance le type de la donnée qu’elle reçoit.
4.2 JAVA
JAVA est un autre exemple de langage pouvant s’utiliser comme middleware.
Il s’agit d’un langage possédant des caractéristiques procédurales et objets,
relativement proches de C++ (en nettement plus “propre”, heureusement).
En JAVA, le code (et pas seulement des données) est portable d’une machine
et d’un système d’exploitation à un autre grâce au principe du bytecode et
de la machine virtuelle JAVA.
Le bytecode est une technique ancienne, puisqu’elle remonte au moins au
Pascal développé à l’UCSD (University of California San Diego) et qui fut
utilisé par exemple sur l’Apple II au début des années 80. Il n’est peut-être
pas inutile de rappeler quelques notions de base sur les langages de
programmation ; un langage peut en effet être :
Page :.13
interprété : il s’agit de langages comme les langages de script (sh, awk,
perl, php). Un interpréteur de commandes lit le fichier source et l’exécute au
fur et à mesure.
Le code est donc complètement portable puisqu’il reste en permanence en
format source, mais l’exécution est lente, et les erreurs ne peuvent être
détectées qu’à l’exécution.
compile : un programme spécial, le compilateur, transforme le fichier
source en code machine directement exécutable par le processeur. Ce code
est beaucoup plus rapide, et beaucoup d’erreurs vont être éliminées par le
compilateur, mais le code obtenu n’est pas portable d’une machine à l’autre.
Le bytecode est une technique intermédiaire entre interprétation et
compilation.
Comme pour un langage compile, le code source est transformé par un
compilateur, qui le vérifie et élimine les erreurs. Mais le résultat n’est pas du
code machine directement exécutable par le processeur, mais un code
intermédiaire, le bytecode, qui sera lui interprété par une machine virtuelle.
Cette machine va dépendre du processeur, du système d’exploitation, etc.
En revanche, le bytecode va lui rester indépendant des architectures
physiques.
Il existe ainsi une machine virtuelle JAVA par type de machine et de système
d’exploitation, mais le code JAVA peut se “déplacer” sur le réseau de façon
totalement transparente. C’est ce qui en a fait le langage de choix pour la
programmation des applications du WEB. Le développeur du code place sur
son site un code (l’applet JAVA) qui va être téléchargé dans le navigateur et
exécuté localement par la machine virtuelle JAVA.
JAVA peut donc être utilisée aussi comme middleware.
Page :.14
Conclusion
L’idée force que nous souhaitons voir se dégager de ce document est à la
fois la grande variété des middlewares disponibles et surtout la grande
diversité des fonctionnalités qu’ils peuvent fournir.
Il faut donc bien comprendre que le choix d’un middleware, ou d’un type de
middleware, doit se faire à partir des besoins exprimés.
Employer un protocole UDP avec un codage ASCII pour déclencher des
procédures différentes avec des types de données variables conduira
certainement à des problèmes de développement et d’évolution des
applications.
Mais, de la même façon, utiliser un système de distributions d’objets pour
échanger quelques messages en format fixe entre applications sera tout
aussi inutile et surtout coûteux en terme de développement et de
maintenabilité.
Il n’y a pas de solution unique, mais des solutions adaptées aux besoins.
Il faut aussi se méfier d’idées toutes faites et techniquement fausses comme
“il suffit d’employer le même middleware pour être interopérable”,
ou “l’emploi de middlewares différents interdit l’interopérabilité”, etc.
La mise en relation de logiciels conçus par des équipes différentes ne sera
simple que si les APIs et/ou les IDLs des procédures ou objets à mettre en
commun ont été identifiés dès l’origine et de façon commune.
Dans le cas contraire, il faudra de toute façon repenser la connexion en
termes de middleware, et en fonction du couplage, choisir une mode de
connexion adapté qui ne sera pas nécessairement celui employé pour le
développement interne, surtout si le niveau de couplage est faible.
Les arguments développés par les vendeurs de middleware dans ce domaine
sont tendancieux, et largement démentis par l’expérience. Il faut là aussi se
garder des effets de mode et savoir baser ses choix sur une solide
connaissance technique et un ordinaire bon sens.
Page :.15
Lexique
MOM :
XML :
IBM :
SOAP :
HTTP :
DCOM :
RPC :
CORBA :
ORB :
Message
Oriented
Middleware,
middleware
s’occupant
essentiellement
de
passages de messages entre applications. Exemples : MPI, PVM
eXtended Markup Language (1998) ; la finalite de XML est comparable ´ a celle `
de SGML : c’est un meta-langage pour fabriquer des langages de donnees a `
balises ; XML a simplifie la logique SGML et fig é la syntaxe de base pour écrire ´
les donnees. XML devrait devenir le langage d’echange des donn ées sur le Web, ´
en remplaçant progressivement HTML.
International Business Machine, dit aussi Big Blue, firme fondee par Herman ´
Hollerith, qui fabriqua d’abord des machines pour cartes perforees, avant de ´
commencer a fabriquer des ordinateurs ` a la fin des ann ées 40 (les mod éles 701,702, `
704). Contrairement a une id ée reçue, c’est UNIVAC qui r éalisa les premiers or- ´
dinateurs commerciaux, et non IBM
Simple Object Access Protocol, protocole leger bas é sur XML pour la des- ´
cription des donnees, et s’articulant autour de HTTP.
Hyper Text Transfer Protocol, protocole de transfert pour les fichiers HTML,
base de fonctionnement des clients/serveurs sur le Web
middleware Microsoft. Voir COM
Remote Procedure Call, modele consistant ` a distribuer les proc édures sur un ´
reseau, et ´ a permettre leur appel depuis n’importe quelle machine. Il en existe `
deux grandes implantations, celle faite par Sun et celle de DCE
Common Object Request Broker Architecture, voir definition d étaill ée dans ´
le texte
Object Request Broker, el ément central de l’architecture CORBA, assurant les ´
communications et les synchronisations entre objets. Depuis la norme Corba 2,
les ORB peuvent eux-meme communiquer entre eux (en principe) ˆ
Page :.16
Notes et références
[1 John F.
et Joey F.]
[2 Daniel S.
et Iain C.]
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.
Middleware and enterprise application integration: the
architecture of e-business solutions, Springer - 2002,
(ISBN 9781852335700), page 154
[3 Gunjan S. et B2B integration: a practical guide to collaborative eMarcus H.]
commerce, Imperial College Press - 2002, (ISBN
9781860943263)
[4 Bill B.]
Message passing server internals, McGraw-Hill
Professional - 2003, (ISBN 9780071416382)
[5 Gustavo A.] Web services: concepts, architectures and applications,
Springer - 2004, (ISBN 9783540440086), page 55
[6 Qusay
Middleware for communications, John Wiley and Sons
H. Mahmoud]
- 2004, (ISBN 9780470862063), page 54
Page :.17
Téléchargement