Académique Documents
Professionnel Documents
Culture Documents
Chapitre 1 : Middleware
Une solution banale est de construire à chaque fois un lien de communication entre
l’application existante et celle que l’on veut intégrer à notre système. Mais au fur et a mesure
que le nombre d’applications intégrées augmente, le système devient complexe « Système dit
spaghetti». La couche Middleware vient comme solution a ce type de problème.
Application 1 Application 1
Application 2 Application 2
Application 3 Application 3
Application N Application N
Application N
Machine 3
3
Chapitre 1 : Middleware
SERVEUR: entité communicante réceptrice des requêtes elle est en mode attente des
requêtes, caractérisé par l'interface qui constitue l'ensemble des services qu'elle offre.
4
Chapitre 1 : Middleware
Avantages :
Chaque partie est physiquement indépendante des autres, ainsi les trois étages peuvent
fonctionner sur trois machines différentes, la communication entre étages se faisant
grâce au middleware.
La programmation et la maintenance de chacun des étages peuvent être faites
indépendamment des autres étages aussi longtemps que l'interface n'est pas changée.
La séparation fonctionnelle conduit à rendre le code central de l'application (le serveur
de traitement) indépendant de la structure de la localisation des données. Il est aussi
indépendant de la façon dont les données sont fournies pour l'utilisateur.
Exemple d'utilisation
- La chaîne d'assemblage de BMW utilise BEAMessageQ de la société BEA [SER1999].
- MQSeries d'IBM. [SER1999].
Caractéristiques
- Transmission synchrone ou asynchrone de message.
- Garantie de livraison des messages par la sauvegarde sur le disque.
- Disponibilité sur Beaucoup de Plateformes (machine + son système) par exemple le produit
BEAMessageQ est disponible sur Windows-NT, UNIX (HP-UX, …), OVMS, IBM MVS, etc.
Avantages :
- Fiabilité
- Cette technologie utilise une programmation traditionnelle (elle ne fait pas appel aux
dernières technologies de programmation orientée objet) alors l’intervention du programmeur
au niveau du code pour les fonctions de communication (structure du message, méthode de
transmission, etc.) est facile.
Inconvénients :
- L’application émettrice, ainsi que l’application réceptrice doivent prendre en charge la
construction du message.
- Pas de standard, cela signifie qu’un utilisateur ne peut pas combiner 2 produits middleware en
provenance de 2 vendeurs différents.
6
Chapitre 1 : Middleware
Caractéristiques
Mêmes avantages de l'approche O.O (séparation Interface/Implémentation, héritage qui a pour
but la réutilisation et la communication entre un objet demandant l'exécution d'une opération
sur un autre objet (serveur) est réalisée à travers un bus de communication spécifique appelé
Middleware Objet).
Cette communication peut être statique ou dynamique :
1. Communication Statique : comme RPC (décrite avec IDL objet standardisé)
L’explication détaillée est retardée à la partie de CORBA
2. Communication Dynamique : le client au moment de l'exécution interroge le
Middleware objet afin de connaître les interfaces disponibles sur le réseau, L’explication
détaillée est retardée à la partie de CORBA.
- L'infrastructure d'un système informatique O.O est constitué par l'ensemble des interfaces
connectées au Middleware O.O est alors leur mise à jour est facilitée par le mécanisme
d'héritage qui permet d'en introduire de nouvelles toute en grandissant les anciennes.
- La description de l'interface permet de convertir une application pour jouer le rôle d’un
serveur, il suffit pour cela de la connecter à une interface objet.
Les standards :
Il y a trois modèles :
- CORBA (1990) par l'OMG sur toutes les plates-formes.
- DCOM (1996) par Microsoft sur Windows et UNIX, domine le monde PC Windows.
- Java RMI par Sun Microsystems ; une abstraction pour toute sorte de protocole basé objets
distribués.
La norme CORBA 2.0 : elle résous le problème d’interopérabilité entre les agents CORBA
par le protocole de communication IIOP (Internet Inter-Orb Protocol).
7
Chapitre 1 : Middleware
La norme CORBA 3.0 : insiste sur l'aspect composant logiciel mis en évidence dans java par
le concept de JavaBean.
Les nouvelles fonctions requises :
Ces Middlewares orientés objets sont caractérisés par la non prise en charge de la persistance,
les transactions, la sécurité, …etc. donc c’est le programmeur qui doit les gérer explicitement.
Par exemple la gestion de transactions nécessite :
- Le protocole 2-Phase-Commit = Atomicité.
- Routage des requêtes en cas de pannes (réseau serveur).
- L’action est exécutée une et une seule fois.
- Mise en route ou arrêt des serveurs.
- Flots d'exécution de la transaction.
Avant, les systèmes transactionnels traditionnels sont des systèmes centralisés comportant
une grosse machine localisée dans un site central à laquelle sont connectés des terminaux situés
dans des agences.
L’acronyme ACID résume les propriétés que doit vérifier chaque transaction :
Atomicité : une transaction doit effectuer toutes les mises à jour ou aucune.
Cohérence : une transaction doit faire passer d’un état cohérent vers un autre état
cohérent.
Isolation : les résultats de la transaction ne doivent être visibles aux autres transactions
qu’une fois la transaction validée.
Durabilité : une fois la transaction validée, le système garantit que les modifications
sont durables, y compris en cas de panne du système.
1.7 CORBA :
CORBA décrit une architecture à objets distribués sur le réseau. Elle met en œuvre le modèle
client/serveur en introduisant une entité intermédiaire appelée « agent Broker», la requête
émise par le client est reçue par l’agent qui la transmet au serveur. La présence de cet agent
permet d’isoler les clients des serveurs. Ainsi toute application cliente peut s’intégrer avec une
autre application serveur sans avoir à connaître ni son adresse ni la façon dont cette dernière
accomplira sa tâche [GEI1997]
8
Chapitre 1 : Middleware
Requête
Message
Opération
Client Serveur
Objet
Notion d’interface : Une interface représente un contrat existant entre un client et un serveur.
Il définit l’ensemble des opérations que l’objet client peut demander de l’objet serveur. Cette
interface est écrite dans un langage particulier appelé Interface Definition Language (IDL.).
Le but d’interface est de définir des actions possibles sur un objet, à chaque attribut sont
automatiquement associées deux opérations d’accès : une opération de lecture et une opération
d’écriture de sa valeur. La figure suivante fournit un exemple d’interface rédigé en langage
IDL. Cette interface définit deux opérations associées à l’objet Employe à savoir promouvoir et
renvoyer.
Interface Employe
{
Void promouvoir (in char nouvelle_position)
Void renvoyer (in CodeRenvoi raison, in String description) ;
}
Client Serveur
//opération //méthode
Promouvoir Employé ;
Pierre.promouvoir Agent (ORB) Renvoyer Employé ;
Fig 1.5. Exemple d’une requête émise par le client et transmise au serveur par l’agent.
Le client ayant connaissance de l’interface « Employer » sait qu’il peut émettre une requête
sur une instance (ex. Pierre) dont il possède la référence, demandant l’exécution d’une
opération (ex. promouvoir). Cette requête peut être générée de deux façons : statique et
dynamique.
Invocation statique :
Permet une communication synchrone et elle suppose l’existence de stub au niveau de client et
du serveur. Le stub client fait la liaison entre le client et l’agent, le stub serveur (appeler
Skelton) fait la liaison entre l’agent et le serveur. Ainsi la requête du client transite au serveur à
travers son Skelton.
9
Chapitre 1 : Middleware
Invocation dynamique :
Dans ce type d’invocation le client ne possède pas de stub le liant au serveur et doit construire
dynamiquement sa requête. Pour cela, le client utilise l’interface d’invocation dynamique liée à
l’agent. Cette interface donne accès à une base de données contenant la description des
interfaces de tous les serveurs disponibles et la description des opérations possibles sur les
objets.
Aujourd’hui, les trois principaux services d’objets distribués sont CORBA, Java RMI et
DCOM. Chacun de ces services utilise un protocole réseau différent, mais ils accomplissent
tous la même chose : la transparence de la localisation. DCOM est principalement utilisé dans
l’environnement Microsoft Windows et il n’est pas bien supporté par les autres systèmes
d’exploitation. Sa forte intégration aux produits Microsoft en fait un bon choix pour les
systèmes uniquement Microsoft [MON2000].
CORBA n’est spécifique ni à un système d’exploitation ni à un langage. C’est donc le service
d’objets distribués le plus ouvert des trois. C’est un choix idéal quant on intègre des systèmes
développés dans plusieurs langages de programmation. Java RMI est une abstraction du
langage Java ou un modèle de programmation pour toute sorte de protocole à objets distribués.
De la même façon que l’API JDBC peut être utilisée pour accéder à toute base de données
relationnelle SQL, Java RMI est destiné à être utilisé avec presque tout protocole d’objets
distribués.
En pratique, Java RMI se limite à Java Remote Method Protocol (JRMP) –connu sous
le terme Java RMI au-dessus de JRMP- qui ne peut être utilisé qu’entre des applications
Java.
Récemment, une implémentation de Java RMI au-dessus de IIOP (Java RMI-IIOP),
c’est une version compatible CORBA de Java RMI, qui permet aux développeurs
d’exploiter la simplicité du modèle de programmation de Java RMI tout en tirant parti
du protocole IIOP de CORBA indépendant de la plate-forme et du langage.
Utiliser Java RMI au-dessus de DCOM semble un peu tiré par les cheveux, mais c’est
possible. La figure suivante illustre l’API EJB du langage Java supportée par différents
protocoles d’objets distribués [MON2000].
10
Chapitre 1 : Middleware
Fig 1.6. Vue du client Java supportée par les différents Middleware.
11
Chapitre 1 : Middleware
Facile à supporter. Les clients peuvent changer la politique de sécurité, par exemple, en
modifiant seulement le fichier descripteur sans que le code ne soit modifié.
1.10 Conclusion:
Avant de conclure ce chapitre on peut, tout d’abord, évoquer les problèmes que l’entreprise
rencontre à chaque évolution du marché d’une part, et à cause de la répartition géographique de
cette dernière en un ensemble d’agences dont la synchronisation et la communication doivent
être assurés d’autre part. Cette distribution peut être vue à différents niveaux : au niveau de
l’application, de la procédure, ou de l’objet tout en factorisant les aspects de communication
en un seul niveau qui est le bus de communication logiciel ou Middleware, dont CORBA
devient le fameux standard middleware objet. L'étude du middleware serait bien incomplète si
elle n’était limitée qu’aux technologies elles-mêmes. Les technologies, dans ce cas, ne valent
que dans la mesure où elles peuvent être reliées aux problèmes qu'elles permettent de résoudre.
La liaison entre les besoins de l’entreprise et le middleware qui est tout à fait possible et
importante, ce qui décuple l'intérêt de cet ensemble de technologies. Ces possibilités
architecturales, directement assujetties aux besoins de l'entreprise, offrent la flexibilité
indispensable à l'évolution des besoins. Cette liaison est réalisable grâce aux deux éléments
suivants :
1. Le concept d'interface qui caractérise chaque composant connecté au bus middleware. Ce
concept permet de décrire l'ensemble des services offerts par l'infrastructure.
2. La méthodologie orientée objet qui permet de construire un modèle d'interfaces répondant
aux besoins des utilisateurs. Ce faisant, cette méthodologie contribue à réduire le niveau de
complexité lié à la conception et à la gestion de systèmes distribués.
14