Professional Documents
Culture Documents
Middleware
Introduction
1. Modèle de programmation
Lionel Seinturier 1.1 Côté serveur
1.2 Communications
Université des Sciences et Technologies de Lille
2. Client/serveur orienté objet
Lionel.Seinturier@univ-lille1.fr
3. Bibliographie
25/09/08
Introduction Introduction
Problématique Vocabulaire
• application répartie
..... • exécutées par des plates-formes dite middleware (en français intergiciel)
Software
Permettre à un programme de s’exécuter sur plusieurs machines Middleware
(PC, mainframe, laptop, PDA, …) reliées par un réseau
- à large échelle (Internet) Middleware unifie l'accès à des machines hétérogènes
- local (intranet) en terme de
• CPU
Operating system
∩ de plusieurs domaines de l’informatique • OS
• langage de programmation
- système d’exploitation - système d’exploitation répartis Hardware • représentation des données en mémoire
- réseau - librairies de programmation réseau
- langage de programmation - langages de programmation étendus
« Middleware is
everywhere »
© IBM
Introduction Introduction
Problématique Problématique
requête retrait
prog. rés prog. prog. dépose Boîte à prog.
client eau serveur client message lettres serveur
réponse message
Introduction Introduction
Client/Serveur 2 tiers Client/Serveur 3 tiers
Caractéristiques Caractéristiques
• 1 gros serveur (mainframes) client • 1 serveur de données et 1 serveur de traitement
présentation
• n terminaux légers connectés au serveur • n PC avec IHM "évoluées"
Inconvénients Inconvénients
• modèle trop rigide qui n’assure pas l’évolutivité serveur • administration + compliquée
serveur • souvent solutions propriétaires fermés données • mise en oeuvre + compliquée
données • économiquement trop coûteux
+ traitement
Introduction Introduction
Envoi de messages Remote Procedure Call (RPC)
• primitives send & receive
• appel d'une procédure sur une machine distante
• conception des progs client et serveur en fonction messages attendus et à envoyer
• groupement de 2 messages : appel & retour
ports ports • adressage : @IP + nom fonction
socket
• définition des signatures des procédures
socket
• compilateur de souches client et serveur
@ IP @ IP
Exemple : RPC Sun
• socket : au-dessus des protocoles TCP & UDP
struct bichaine { char s1[80]; char s2[80]; };
• primitive bloquante vs non bloquante program CALCUL {
• fiabilité version V1 {
int multpar2(int) = 1;
• ordre des messages string concat(struct bichaine) = 2;
• contrôle de flux void plus_un() = 3;
• mode connecté vs non connecté } = 1;
} = 0x21234567;
Introduction Introduction
Composants et serveurs d'application Service
Service
Constat d'une trop grande hétérogénéité du middleware réintroduction des notions de composants et d'architecture logicielle
taille, OS, langage, cible matérielle, modèle de programmation • Enterprise Software Bus (par ex. Sun JBI)
Focalisation sur un PPCM (plus pétit commun dénominateur) • OSGi
• domotique (box, …)
d'où W3C Web Services = HTTP + XML + SOAP • embarqué (secteur automobile, …)
• modularité (voir Java 7), système à plugins (Eclipse, serveur d'applications)
adoption par Sun (Java EE), Microsoft (.NET) comme solution • SCA (Software Component Architecture)
pour l'intéropérabilité (interne et externe) • donner une structuration aux applications orientée services
• supporter différents
langages de programmation, protocoles de communication,
langages de définition d'interfaces, services non fonctionnels
Introduction Introduction
Concepts de base du middleware Concepts de base du middleware
Plusieurs mises en oeuvre possibles pour le traitement de la requête Plusieurs clients envoient des requêtes simultanément
mais le serveur n'en traite qu'une à la fois
• 1 activité unique
• 1 activité par requête → simple
• 1 pool d'activités → pas de risque de conflit de concurrence
→ suffisant dans certains cas
rq : activité = processus ou thread (ex. 1 requête toutes les 10s qui demande 2s de traitement)
Inconvénients
- un pool de processus inactifs consomme des ressources inutilement
- les pointes de traffic sont mal gérées
Middleware 31 Lionel Seinturier Middleware 32 Lionel Seinturier
1.1 Côté serveur 1.1 Côté serveur
Plusieurs clients simultanément - pool de processus Persistance des données
Problématique Problématique
Délimitation des communications entre un client et un serveur 2 requêtes successives d'un même client sont-elles indépendantes ?
→ faut-il sauvegarder des infos entre 2 requêtes successives d'un même client ?
Mode non connecté (le + simple)
• les messages sont envoyés “librement” Mode sans état (le + simple)
• example : NFS
• pas d'info sauvegardée
• les requêtes successives d'un même client sont indépendantes
• ex : NFS, HTTP
Mode connecté
• les messages sont
Types de requêtes envisageables
• précédés d’une ouverture de connexion Rq : la cx est le + souvent
- demande d'écriture du k-ième bloc de données d'un fichier
• suivis d’une fermeture de connexion liée au transport (TCP)
• facilite la gestion d'état plutôt qu'au protocole
Types de requêtes non envisageables
• permet un meilleur contrôle des clients applicatif lui-même
- demande d'écriture du bloc suivant
• ex : FTP, Telnet, SMTP, POP, JDBC, HTTP
Middleware 39 Lionel Seinturier Middleware 40 Lionel Seinturier
1.2 Communications 1.2 Communications
Gestion d'états du protocole de communication Représentation des données
Définitions couramment adoptée (au lieu de valeur/référence) pb : IN/OUT et OUT pas tjrs faciles à gérer dans les lang. de prog.
- mode IN (entrée) passage par valeur avec la requête
ex : Java
- mode OUT (sortie) passage par valeur avec la réponse
- mode IN/OUT (entrée/sortie) copie/restauration de la valeur - types simples (int, float, ...) transmis par valeur
- objets transmis par référence
IN
Ö comment transmettre en IN/OUT (ou OUT) un int ?
Ö ≡ comment implanter la copie/restauration non prévue par la VM ?
Serveur
Client
OUT
pb : IN/OUT et OUT pas tjrs faciles à gérer dans les lang. de prog. Solution
- pas possible de ne pas modifier les codes client et serveur
Illustration
- le client transmet un conteneur pour la valeur
4 4 4 class IntHolder { int x; }
Souche
Client
x=4;
x=5;
o.m(x);
4 4 4
5 5
Serveur
Souche
Souche
ih.x=4; Client
- la souche connaît simplement la valeur 4 o.m(ih);
ih.x=5;
- elle n'a pas la ref. de x
Ö elle ne peut pas la mettre à jour
ih.x=5 5 5
2ème comportement possible en présence de pannes : “au moins 1 fois” (1 fois ou n fois) 3ème comportement possible en présence de pannes
• deux objets ≠ sur le même site ou sur des sites ≠ Pour des raisons de sécurité, l’accès à certains objets peut être restreint
ne doivent pas avoir la même identité (on parle de référence)
- en fonction de l’identité de l’objet appelant
• la référence sert à «retrouver» l’objet pour pouvoir invoquer ses méthodes
ex : seuls les accès en provenance de l’intranet sont autorisés
• généralisation de la notion de pointeur à un environnement réparti
- à partir d’une liste de contrôle d’accès
ex : mot de passe, mécanismes de clés de session, ...
Deux techniques principales
• un ID sans rapport avec la localisation généré par une fonction mathématique La restriction peut
+ une table de translation entre l’ID et la localisation de l’objet
- interdire complètement l’accès à l’objet
• un ID en deux parties : son site de création + un numéro local unique
- fournir une vue «dégradée»
ex : autoriser les méthodes qui fournissent un service de consultation
Recherche d’un objet à partir de sa référence
mais interdire celles qui modifient l’état de l’objet
• annuaires de localisation centralisés ou répartis, ou diffusion
• interrogation du site contenu dans la référence + liens de poursuite Ö Nombreuses informations à ajouter aux objets