You are on page 1of 8

Modle Client-Serveur Partage du serveur entre clients

I I

Un serveur peut servir plusieurs clients Vu dun client particulier


requte

client
rponse

serveur

Vu du serveur
N Gestion des requtes (priorit) N Excution du service (squentiel, concurrent) N Mmorisation ou non de ltat du client

slection requtes file des requtes


S. Krakowiak

traitement

rponses

10 - 1

Ralisation de lappel de procdure distance


I

Gestion de processus ct serveur


N Sur le site serveur (site appel) la procdure distante est excute par un processus N Plusieurs schmas possibles O Dans tous les cas, un processus veilleurattend derrire une porte spcifie (le numro de la porte dpend du service appel) O Lappel se traduit par un message envoy au veilleur, contenant le nom de la procdure appele et les paramtres. L ou bien le veilleur excute lui-mme la procdure et renvoie les rsultats au processus client L ou bien le veilleur cre un nouveau processus excutant (lourd ou lger) pour excuter la procdure ; cest ce processus qui renverra les rsultats

veilleur

veilleur excutant

S. Krakowiak

10 - 2

Gestion des processus dans le serveur (1)


I

Processus serveur unique (excution des requtes par le veilleur)


while (true) { receive (client_id, message) ; extract (message, service_id, params) ; do_service[service_id] (params, results) ; send (client_id, results) ; };

slection

requtes

traitement

rponse

S. Krakowiak

10 - 3

Gestion des processus dans le serveur (2)


Processus veilleur
while (true) { receive (client_id, message) extract (message, service_id, params) ; work_to_do.put (client_id, service_id, params) ; };

Pool dexcutants
while (true) { work_to_do.get (client_id, service_id, params) ; do_service{service_id] (params, results) send (client_id, results) };

slection requtes work_to_do

traitement

rponse
S. Krakowiak 10 - 4

Gestion des processus dans le serveur (3)


Processus veilleur
while (true) { receive (client_id, message) extract (message, service_id, params) ; p=create_thread (client_id, service_id, params) ; }; cration slection requtes traitement

Cration dynamique des excutants


programme de p do_service{service_id] (params, results) send (client_id, results) exit ;

rponse
S. Krakowiak 10 - 5

Ralisation de lappel de procdure distance


I

Problmes didentification et de dsignation


N le client doit pouvoir dsigner le serveur (pour lui envoyer la requte) N le serveur doit pouvoir dsigner le client (pour lui renvoyer les rsultats)

Solutions possibles
N Dsignation du serveur par le client O le client connat (par convention gnrale ou par accord direct) le site et le numro du porte du serveur - le problme est rsolu O le client ne connat quun nom symbolique du service L dans ce cas, on passe par un service de dsignation, qui fournit le couple (site, numro de porte) corrspondant au nom symbolique du service L il faut connatre directement le site et le numro de porte du service de dsignation N Dsignation du client par le serveur O dans la requte, le client indique un site et un numro de porte vers lesquels renvoyer la rponse

Dans la pratique
N On utilise des noms symboliques, et les oprations de dsignation sont invisibles aux utilisateurs
S. Krakowiak 10 - 6

Ralisation de lappel de procdure distance en Tcl-DP (1)


I

Introduction T cl-DP
N Tcl-DP est un logiciel (middleware) qui ralise une extension rpartie de DP N Services fournis aux utilisateurs : appel de procdure distance et objets rpartis O galement : utilisation directe du protocole TCP (nous nen parlons pas)

Les oprations pour lappel de procdure distance (RPC)


N Phases prliminaires O ct serveur, le lancement dun processus veilleur qui attend derrire une porte spcifie, sur le site serveur L dp_MakeRPCServer numro_de_porte O ct client, une phase de connexion pralable du client au serveur dans laquelle se droule lidentification mutuelle (connaissance de la dsignation) L dp_MakeRPCClient machine numro_de_porte " rsultat de cette commande :un descripteur dont la valeur doit tre conserve ; on crit donc en gnral : " set serveur [dp_MakeRPCClient machine numro_de_porte] Plusieurs clients peuvent se connecter un mme serveur

N Une fois ces deux oprations ralises, le client peut appeler le serveur en utilisant lidentification mise en place L dp_RPC descripteur_de_serveur commande
S. Krakowiak 10 - 7

Ralisation de lappel de procdure distance en Tcl-DP (2)


I

Lancement du veilleur
N dp_MakeRPCServer numro_de_porte # excut chez le serveur N Le numro de porte doit tre choisi (>1024) ; si 0, c'est le systme qui alloue un numro

Connexion du client au serveur


N set serveur [dp_MakeRPCClient machine numro_de_porte] # excut chez le client N machine = site du serveur (nom symbolique ou adresse IP) ; numro_de_porte est celui avec lequel le veilleur a t lanc, il doit tre connu (convention entre serveur et client) N La variable serveur reoit un descripteur du serveur (les dtails nont pas tre connus de lutilisateur) N Attention : le veilleur doit avoir t lanc avant toute connexion de client

Appel de procdure proprement dit (ncessite connexion pralable)


N dp_RPC $serveur commande # excut chez le client O la commande est excute dans lespace du serveur (les variables qui y figurent sont totalement invisibles au client) O la commande peut tre toute procdure dclare dans lespace du serveur O effet de bord : une variable dp_rpcFile (dans lespace du serveur) reoit le descripteur du client (symtrie entre client et serveur, chacun peut maintenant appeler lautre sans connexion, avec dp_RPC)
S. Krakowiak 10 - 8

Rappels sur la programmation par objets


I

Motivations
N Amliorer la structuration et la rutilisabilit des programmes O facilit de comprhension et de modification, constructions gnriques rutilisables

Notions de base
N Encapsulation O Un objet encapsule un tat (ensemble de donnes), accessibles uniquement au moyen dun ensemble de fonctions (mthodes) qui constituent linterface de lobjet O Linterface dfinit tout ce qui est ncessaire lutilisation de lobjet ; on peut remplacer une ralisation par une autre, condition de respecter linterface N Classes et instances O O Un objet est un exemplaire (instance) dune classe ; les instances dune classe ont la mme interface mais diffrent par la valeur de ltat Les instances sont cres et dtruites dynamiquement

N Hritage O Dans beaucoup de cas, on peut dfinir une classe partir dune autre, par spcialisation, enrichissement, surcharge. La nouvelle classe hrite de lancienne. Intrt : rutilisation de leffort de conception et de la ralisation, meilleure organisation du logiciel N Polymorphisme O Dans certains cas, des mthodes acceptent des paramtres de plusieurs types et ont un comportement diffrent selon le type
S. Krakowiak 10 - 9

Objets rpartis
I

Motivations
N Fournir un mode dorganisation dapplications rparties privilgiant le partage dinformations rparties sur plusieurs sites entre des utilisateurs eux-mmes rpartis

Principes
N On dfinit un ensemble dobjets rpartis, utilisables via leurs mthodes, avec les conditions daccs suivantes O transparence de localisation : un objet est dsign par un nom logique indpendant de sa localisation physique (la localisation peut changer sans que le nom change) O transparence daccs : on accde un objet distant exactement de la mme manire qu un objet local

Utilisations possibles
N Applications mettant en uvre des donnes partages rparties que lon veut rendre globalement accessibles O dition cooprative O ingnierie cooprative (conception assiste par ordinateur avec partage de donnes) O autres formes de travail coopratif (tl-enseignement, tl-mdecine) O documentation

S. Krakowiak

10 - 10

Ralisation des objets rpartis en Tcl-DP


I

Principe
N Schma idal (organisation symtrique)
processus site A
interface objet

processus

site C

site B

N Schma rel (organisation autour dun serveur))


processus
porte veilleur

site A

interface objet

site C site B S. Krakowiak


reprsentant local de lobje t

serveur

10 - 11

Ralisation des objets rpartis en Tcl-DP


I

Organisation gnrale
N Pour chaque objet rpartir, on choisit un serveur responsable de cet objet, et on dfinit lorganisation de la classe de lobjet (composants de ltat, mthodes) N Sur chaque serveur : on cre le ou le objet(s) et on les initialise (on fixe la valeur initiale de ltat) N Sur chaque client (utilisateur) dun objet : on fait appel au serveur de lobjet pour le distribuer au client. Cette opration cre un reprsentant local de lobjet sur le site du client. Pour le client, tout se passe comme si le reprsentant tait lobjet N (facultativement) Chez le serveur et chez les clients : mise en place de dclencheurs : mcanisme qui associe une action chaque modification de ltat dun objet. Utile par exemple pour rafficher un objet chaque modification

Structure (de la classe) dun objet


N Ltat dun objet est un ensemble de champs (slots). Chaque champ a un nom et une valeur N Chaque objet possde un ensemble de mthodes. Il y a trois mthodes obligatoires (tout objet doit les possder) O configure : accs ltat de lobjet O slot-value : lecture de la valeur dun champ O destroy : dtruit lobjet (instance) N La cration dune instance est une procdure qui s'applique une classe
S. Krakowiak 10 - 12

Ralisation des objets rpartis en Tcl-DP


I

Primitives
N dp_objectCreateProc class object N dp_objectSlots object
N dp_objectConfigure class object ?args?

-- cr une instance -- renvoie la liste des champs de lobjet

N dp_objectSlotSet object slot value -- dfinit un champ dans un objet et linitialise -- configure un objet pour pouvoir y accder en particulier dfinit quels sont les champs de lobjet et fixe leur valeur initiale

N dp_distributeObject object processes makeObject distribue un objet (cr au pralable dans un serveur) un ensemble de processus processes = liste des descripteurs des processus makeObject = la procdure de cration associe la classe de lobjet cette procdure est excute par le serveur, la demande des clients N dp_setf object slot value N dp_getf objet slot N encore quelques autres primitives -- affecte une valeur un champ dun objet (et la distribue automatiquement) -- renvoie la valeur dun champ dun objet
-- met en place un dclencheur

N dp_SetTrigger when object slot trigger_list

S. Krakowiak

10 - 13

tapes de lutilisation dun objet rparti (simplifi)


crire le programme de la classe de lobjet, comprenant la procdure de cration (qui dfinit les champs de lobjet et les initialise) et les diffrentes mthodes de lobjet on utilise pour cela dp_ObjectCreateProc , dp_objectConfigure, et les procdures daccs aux champs crire les programmes du client et du serveur, et les programmes auxiliaires (graphiques, etc.) Sur le site serveur de lobjet : crer autant dinstances de lobjet que ncessaire initialement crer le processus serveur pour la classe de lobjet (comme un veilleur de RPC, avec une porte spcifie) placer si ncessaire les dclencheurs associs aux changements d'tat Sur chacun des sites clients de lobjet : appeler le serveur (par dp_RPC, sur la porte convenue) et lui demander de distribuer chacune des instances ce client (le serveur connat lidentit du client aprs le RPC) placer si ncessaire les dclencheurs associs aux changements d'tat Aprs ces tapes prliminaires, on peut utiliser indiffremment les objets sur nimporte quel site (serveur ou client) au moyen de leurs mthodes. Les ractions aux changements dtat sont excutes grce aux dclencheurs Dans beaucoup dapplications, lappel des mthodes est lui-mme associ (via bind) des oprations graphiques Voir exemples en TP
S. Krakowiak 10 - 14

tapes de lutilisation dun objet rparti

veilleur
Crer instances 1 avec valeurs initiales

4 demander distribution de 4 6
A1 lobjet A aux clients (on suppose que client 1 connat client 2)
reprsentant local de A

porte

client 1

2 Crer veilleur pour la classe


sur porte

appel aux mthodes de lobjet (via reprsentant local

3 Le veilleur est en attente 5 rponse demande de


programme du veilleur

lobjet A est distribu aux clients

distribution

A2

reprsentant local de A

client 2

7 (modif. ventuelle d e lobjet)


serveur

rponse appel de mthode

appel aux mthodes de lobjet (via reprsentant local

S. Krakowiak

10 - 15

Rsum de la sance 10

Applications client-serveur
N applications client-serveur utilisant lappel de procdure distance; principe, mise en uvre dans Tcl, exemples N introduction aux applications client-serveur base dobjets partags ; principe, mise en uvre dans Tcl, exemples

Plan de la suite
N applications client-serveur sur lInternet O Service de noms : DNS (sance 11) O World Wide Web : fonctionnnement et utilisations (sances 11 et 12)

S. Krakowiak

10 - 16

You might also like