Escolar Documentos
Profissional Documentos
Cultura Documentos
Conception et Sécurisation
d'Applications à Objets Distribués
Clémentine Nebut – Franck Fleurey – Yves Le Traon
{cnebut
cnebut,, ffleurey , yletraon
yletraon}@
}@irisa
irisa.. fr
Objectifs
Ø Introduction aux techniques de
déploiement de systèmes logiciels
l % au modèle UML « idéal »
Ø Mise en pratique
Plan
Ø Introduction
Ø Architectures classiques des AOD
l Architecture client/serveur
client/serveur
l Architecture N-
N-tiers
l Architecture 3-
3-tiers
Ø Les principaux volets d’une AOD
l Gestion de la distribution
l Persistance
l Interface utilisateur
l Sécurisation
Ø Conclusion et plan du cours
1
Introduction
Ø Applications distribuées (ou réparties)
réparties )
l Définition : une application distribuée est :
• un ensemble de programmes,
• distribués sur un réseau de communication,
• qui collaborent pour assurer un service.
l Exemples :
• Une grappe de calculateurs
• Une application de commerce en ligne
• Un calendrier partagé
• ...
Introduction
Ø Pourquoi des applications distribuées ?
l Besoin intrinsèque de l'application
• Les utilisateurs sont répartis(ex
répartis (ex : site web)
• Les données sont réparties (ex : stations météos
météos))
• Partage de données
données//informations (ex :P2P – Kazaa
pour échange des fichiers
fichiers))
l Mais aussi
• Besoin de performances (ex : grappe de calcul
calcul))
• Besoin de « disponibilité » (ex : redondance
redondance))
l Et bien sûr
• Toutes les combinaisons possibles
CSAOD Introduction aux AOD 5
2
Couplage fort
Ø Inter-dépendance entre les composants de
Inter-
l’application
P1
Couplage faible
Ø Pas d’inter
d’inter--dépendance entre les composants
de l’application
P1
Architecture Client/Serveur
Réponse
Client
Requête
Requête Serveur
Client Réponse
3
Architecture client-
client- serveur
Ø Un client fait une requête
Ø Et reçoit une réponse du serveur
Ø Notion de session
l ensemble des requêtes et réponses pour un
même client
l nécessite l’identification du client
l ex: session yahoo
yahoo,, session telnet
telnet,, session
ftp…
ftp …
Architecture Client/Serveur
Ø Exemples :
l Client FTP/Serveur FTP
l Terminal X/Serveur d’exécution
l Navigateur Web
Web/Serveur
/Serveur de noms
l Navigateur Web
Web/Serveur
/Serveur Web
l …
Architecture Client/Serveur
Ø Points forts
l Couplage faible (le serveur n’a pas besoin des clients)
• La maintenance et l’administration du serveur sont simplifiées
• Souplesse : il est possible d’ajouter/suprimer
d’ajouter/suprimer dynamiquement
des clients sans perturber le fonctionnement de l’application
l Les ressources sont centralisées sur le serveur
• Sécurisation simple des données : 1 seul point d’entrée
• Pas de problème d’integrité
d’ integrité/cohérence
/cohérence des données
Ø Points faibles
l Un maillon faible : le serveur
l Coût élevé : le serveur doit être très performant pour
honorer tous les clients
4
Architecture Client/Serveur
Ø Les AOD construites sont de plus en plus complexes :
• Application de commerce en ligne
• Radio/télévision numérique interactive
• Moteur de recherche…
Ø Dans le modèle client/serveur toute la complexité est
concentrée dans le serveur
• Problème de performance/disponibilité
l Répartition de charge ( load balancing
balancing))
• Problème pour maîtriser la complexité
l Architectures multicouches (N-
(N- Tiers)
Répartition de charge
(load balancing )
Ø Un serveur traite simultanément les requêtes de
plusieurs clients
Répartition de charge
Les requêtes des clients passent par un répartisseur de
charge qui les répartit sur N serveursidentiques.
serveurs identiques.
« ferme de serveurs »
Réponse Serveur 1
Client
Requête
Répartisseur
Requête de Serveur 2
charge …
Client Réponse
… Serveur N
5
Le répartisseur de charge
Ø Rôle principal
l Diriger les requêtes des clients en fonction de la charge de
chacun des serveurs
Ø Rôle annexe
l Gérer les sessions des clients (2 solutions)
l Toutes les requêtes d’un client sont dirigées vers un seul serve ur
l Les données de session sont transmises avec la requête
l Ex: gestion des données concernant un client
l Gérer les défaillances :
l Ne plus diriger de requêtes sur un serveur « crashé »
l Assurer le passage à l’échelle (scalabilité
(scalabilité))
l Permettre l’ajout et le retrait de serveurs sans interruption de service
Répartition de charge
Ø Points forts
l Transparent pour les clients
l Scalable : le nombre de serveurs peut être adapté à la
demande
l Tolérant aux défaillances : la défaillance d’un serveur
n’interrompt pas le service
l Plus besoin de machines très chères : il suffit d’en mettre
plus
Ø Point faible
l Les données ne sont plus centralisées mais dupliquées
l Le répartiteur de charge devient le « maillon faible »
6
Maîtriser la complexité :
les architectures multicouches
(N-- tiers)
(N
Ø L’application devient complexe :
l Difficile à développer
l Difficile à tester
l Difficile à maintenir
l Difficile à faire évoluer
Couche 1 (Client)
Sens des
« Serveur »
requêtes
Couche 2
Couche 4
CSAOD Introduction aux AOD 21
7
Les architectures multicouches
Ø La plupart des applications développées se ressemblent
et se composent :
l De données
l De traitements (sur ces données)
l De présentation (des données et des résultats des traitements)
On distingue
généralement 3
grandes couches
dans une application
Database
Serveur Web
XML
8
Les architectures à 3 couches
Ø Points forts
l Découplage logique applicative
applicative/interface
/interface
• Ce ne sont généralement pas les même équipes de
développement.
• Possibilité de changer ou d’avoir plusieurs UI sans toucher à
l’application elle-
elle- même.
l Découplage données/logique applicative
• Possibilité d’utiliser des données existantes sans
complexifier le modèle métier.
• Possibilité de changer le mode de stockage des données
sans modifier la logique métier.
l Favorise la réutilisation puisque toute la logique
propre à l’application est concentrée dans le modèle
métier
CSAOD Introduction aux AOD 25
Gestion de la distribution
Ø Communication entre les couches basses
l Appel de méthode à distance (RPC)
9
Appel de méthodes distantes
Ø Dans le paradigme objet, les communications
sont déjà sur le modèle client serveur :
• Requête : Appel de méthode
• Réponse : Valeur de retour
Requête
UnObjet
Réponse
Réseau
UnObjet
Réponse
10
Appel de méthodes distantes
Ø Comment transférer des instances d’une
couche à l’autre (ex: callback avec en
retour un objet)
l La couche qui reçoit un objet doit avoir
connaissance de sa classe (2 solutions) :
• La classe est transmise avec l’objet
l Charge réseau importante : il faut transmettre tout l’arbre
d’héritage
• Toutes les couches ont une copie des classes
qu’elles sont amenées à manipuler
l Moins souple, mais plus économique pour le réseau
CSAOD Introduction aux AOD 31
11
Communications par Serveur Web
l Utilisation du protocole HTTP
• passe partout : Permet de transmettre les données sur de longues
distances : le protocole HTTP est toléré par tous les firewalls
firewalls..
• compris partout: Tous le monde a un client HTTP : le navigateur
web..
web
• La gestion de session « web » est prise en charge par le serveur
web
l Permet de créer des interfaces utilisateur (HTML)
• compris partout: Un navigateur web suffit pour utiliser l’application
: pas de problème d’administration, de mise à jour des clients !
l Permet à des applications de communiquer
(Services Web
Web))
• Permet de définir et utiliser des API tout en étant
indépendant du langage utilisé.
La persistance
12
La persistance
Ø Par exemple :
l Stockage sur disque des objets
l Bases de données relationnelles
l Système de fichiers
l Bases de données objets
l …
Ø La couche d’accès aux données doit
rendre transparente la technologie utilisée
pour la couche métier et assure l’intégrité
des données
CSAOD Introduction aux AOD 37
Transaction
Ø Un mécanisme de transaction permet de rendre atomique un
ensemble d’actions
l Exemple :
• Début de transaction
l Charger les deux comptes bancaires
l Débiter le montant du compte source du virement
l Créditer le compte destination
l Enregistrer les comptes avec leur nouveau montant
• Si tout va bien : Valider la transaction (Commit)
• Si il se produit une erreur : Annuler la transaction (Rollback
(Rollback))
l Si il y a une erreur, toute les modifications réalisées dans le corps de
la transaction sont annulées.
l L’état du système reste ainsi cohérent même si une
erreur se produit.
13
Serveur d’application
Ø Objectifs
l Prendre en charge les problèmes récurrents rencontrés lors du
développement d’AOD (Persistance, Accès à distance,
transaction, session,…)
Ø Exemple :
l Plateforme J2EE
l Plateforme .NET
Ø Point fort
l Permet au dévelopeur de se concentrer sur la logique métier.
Ø Point faible
l Comme toute application qui propose de tout prendre en charge,
les serveur d’application sont assez difficile à maîtriser…
Interface utilisateur
(couche présentation)
l Interface Web : pas de traitements locaux
• Client léger (= le même client pour se connecter à tous les
services-- il n’y a rien à installer chez les clients - (navigateur
services
web:: Internet explorer, netscape …)
web
• Communication via serveur Web
l Programme client dédié à l’application (traitements
locaux)
• Possibilité d’adapter le client à l’application (ex: calendar
interne à un réseau local, Objecteering : interface trop
complexe)
• Mode de communications au choix
l Serveur web (en utilisant des service web
web))
l RPC (RMI, CORBA,…)
• Déploiement et maintien plus difficile
La technologie doit être choisie en fonction du
CSAOD nombre et du statutaux
Introduction des
AODutilisateurs. 42
14
Les architectures multicouches
Ø Problèmes génériques
Cryptage et Authentification
Ø Les AOD sont généralement multi -utilisateurs et peuvent
manipuler des données sensibles
l Exemple : les numéros de carte de crédit pour les applications
de commerce en ligne.
Ø Il est donc nécessaire de prendre en compte très tôt la
sécurité des données et des échanges.
Ø Plusieurs problèmes
l La personne qui m’envoie une requête est-
est- elle bien la personne
qu ’elle prétend être ?
• Authentification
l Comment être sûr que personne ne va intercepter les messages
échangés ?
• Cryptage
Cryptage/Authentification -
exemple
Do-- this
Do
John
Ø Zéro-- knowledge
Zéro
CSAOD Introduction aux AOD 45
15
Cryptage – les fils d’Ali-
d’Ali - Baba
Ø Ali- Baba a eu au moins un fils
Ali-
Ø Il a un trésor accessible par des mots de passe
dans un grotte
Ø Ali
Ali-- Baba est mort
Ø Quelqu’un prétend être son fils et donc détenir
les mots de passe
Ø Comment convaincre la population sans livrer
les mots de passe ?
trésor
Cryptage - exemple
Ø Zéro--knowledge
Zéro
Do-- this
Do
1
Who are you (2, 3) ?
1
16
Cryptage - exemple
Ø Zéro--knowledge
Zéro grotte
Fils Ali-
Ali- Baba Do-- this
Do
1
V=x^n mod p
n= secret (mdp
(mdp)) Who are you (2, 3) ?
Opt:: p aussi secret
Opt 1 V=x^n mod p
(CB) V = fct du protocole
Who are you (3, 3) ? n= secret (mdp
(mdp))
population
Conclusion
Ø La construction d’une application à objets
distribués nécessite :
l D’en élaborer l’architecture
• Modèle métier
• Quel objet est distribué ? Persistant ?
• Comment les différentes composantes
communiquent--elles ?
communiquent
l De définir des stratégies de sécurité
l De choisir les technologies adéquates
17
Le cours de CSAOD
Ø Buts :
l Familiarisation avec les concepts des applications
distribuées
l Connaître les principales technologies sous-
sous-jacentes
• Java : RMI pour la communication, JDO pour la persistance,
Swing pour le graphique (client lourd), JSP (client léger).
• Web services avec communication basée sur Soap Soap..
Ø Moyens :
l Utilisation d’un exemple : une vidéothèque
l Application des grands principes vus en cours
l Assemblage progressif en TP de plusieurs briques
formant une AOD
CSAOD Introduction aux AOD 52
Le travail à fournir
Ø A l’issue de chaque cours:
l Lire la documentation pour le TP suivant quand
demandé
Ø Pour les TPs:
l Ne pas prendre de retard
l Profiter des mercredi libres (c’est volontaire)
l Respecter les interfaces et les consignes données
l Validation des TPs par des jeux de test prédéfinis
l Livrables à rendre régulièrement
Plan du cours
Ø Élaboration du modèle métier de la vidéothèque,
et architecture de l’application
Ø XML : principes et outils
l Utilisé dans la plupart des technologies liées à la
communication entre applications
Ø La persistance d’objets
Ø Les objets distribués :
l RMI, Corba
Ø Les services web
l Et côté client ? L’exemple des JSP
18
Plan des TPs
Ø Implémentation du modèle métier
Ø Implémentation d’un module d’import/export
XML
Ø Rendre la vidéothèque persistante
Ø Elaboration d’une interface interne à la
vidéothèque de gestion des données
Ø Publication d’un service web pour la consultation
des ouvrages
Ø Utilisation du service web publié :
implémentation d’un client
19