Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parGabrielle Legras Modifié depuis plus de 10 années
1
Découverte et description de services distribués Oussama KASSEM ZEIN
2
Y Kermarrec Introduction Les besoins dun objet de découvrir un autre objet dans les systèmes distribués. Plusieurs possibilités : Pages blanches : comme le serveur de nom de CORBA. Pages jaunes : comme le Trader de CORBA.
3
Y Kermarrec Le service de nommage Il définit un espace de désignation pour retrouver les objets ou les services à partir dun nom symbolique. Cet espace peut être structuré par un graphe de répertoires contenant des références sur les objets.
4
Y Kermarrec Le service de nommage Service de nommage de CORBA (Naming service). Lespace de désignation est organisé en graphes de contextes de nommage concaténés (NameComponent, Name, NamingContext). Chaque contexte maintient une liste dassociations entre les noms symboliques et des références dobjet. Graphe : nœuds = contextes, feuilles = objets.
5
Y Kermarrec Le service de nommage
6
Y Kermarrec Le service de nommage Un exemple dun nom dobjet : Les contextes sont équivalents à la notion de répertoire/sous-répertoire.
7
Y Kermarrec Le service de nommage Il fournit des opérations comme : bind et rebind : ajouter une association entre un nom et une référence. Bind_context et rebind_context : ajouter une contexte existante. resolve :retourne la référence de lobjet qui correspond à un contexte.
8
Y Kermarrec Le service de nommage Les fonctionnements :
9
Y Kermarrec Le service de nommage Comment savoir où est le serveur de nom ? Enregistrer ladresse du serveur de nom dans un fichier. Indiquer ladresse du serveur de nom dans une variable denvironnement. Indiquer ladresse dans un paramètres de service de nommage (ORBNaming) à lexécution.
10
Y Kermarrec Le service de nommage (Exemple ORBACUS) Nous lançons le serveur de nom par : java com.ooc.CosNaming.Server –i –OAport 10000 > nameservice.ior Côté Serveur : // on cherche la r é f é rence du serveur de nom org.omg.CORBA.Object objRef= orb.resolve_initial_references("NamingService"); NamingContextncRef=NamingContextHelper.narrow(objRef); //on d é finit un contexte à ajouter NameComponent[] mm=new NameComponent[1]; mm[0]=new NameComponent(); mm[0].id= « nom » ; mm[0].kind="";
11
Y Kermarrec Le service de nommage (Exemple ORBACUS) // pour ajouter un contexte ou un objet NamingContext ncc1 = ncRef.bind_new_context(mm); ncRef.rebind(mm,manRef) ou manRef est lobjet associé au contexte mm
12
Y Kermarrec Le service de nommage (Exemple ORBACUS) Côté Client : // on cherche la r é f é rence du serveur de nom org.omg.CORBA.Object objRef= orb.resolve_initial_references("NamingService"); NamingContextncRef=NamingContextHelper.narrow(objRef); //on d é finit un contexte à chercher NameComponent[] mm=new NameComponent[1]; nm[0]=new NameComponent(); nm[0].id= « nom » ; nm[0].kind=""; //pour chercher lobjet du serveur de nom org.omg.CORBA.Object ob=ncRef.resolve(nm);
13
Y Kermarrec Le service de courtage (exemple : Trader de CORBA) Il étend les possibilités du serveur de nom. Un annuaire de type pages jaunes qui permet à un service ou un objet dêtre découvert via une description basée sur des propriétés. Un serveur enregistre les services quil désire rendre disponibles au niveau du trader en les caractérisant par un ensemble de propriétés
14
Y Kermarrec Le service de courtage (exemple : Trader de CORBA) Un client qui désire un service offert interroge le trader en donnant les caractéristiques attendues. Le trader enregistre les services offerts dans ses bases de données. Les clients utilisent SQL ou bien un langage booléen pour interroger le trader.
15
Y Kermarrec Trader de CORBA (Type de Service) Type de service : chaque service est défini par un type. construisent les bases de données du trader. Chaque propriétés a un nom et un type. Lensemble de ces propriétés définissent les attributs des bases de données du trader.
16
Y Kermarrec Trader de CORBA (Type de Service) Un type de service est constitué de : Un nom : identifie dune façon unique le type de service. Un type dinterface : une interface IDL. Elle fournit lensemble dopérations quun client peut invoquer sur le service. Une collection de propriétés : définit les caractéristiques du type de service. Chaque propriété est constituée dun nom, dun type et dun mode.
17
Y Kermarrec Trader de CORBA (Service Offert) Service offert : est une instance dun type de service. Par exemple, il peut être un n-uplets dans les bases du trader. Un service offert a les caractéristiques suivantes: Nom du type de service. Un référence dobjet : fournit un pointeur qui permet à un client daccéder au service.
18
Y Kermarrec Trader de CORBA (Service Offert) Un ensemble de propriétés : qui sont des valeurs affectées à celles définies dans le type de service.
19
Y Kermarrec Trader de CORBA (Opération dImportation) Importation dun service : est une fonction utilisée par les clients pour interroger les services via le trader. Cette fonction prend plusieurs paramètres comme: Type de service : informe le trader par le type de service par lequel le client est intéressé.
20
Y Kermarrec Trader de CORBA (Opération dImportation) Contrainte : est une expression décrite dans un langage de contraintes. Elle permet e spécifier les critères de recherche. Par exemple, cette expression peut être une expression booléenne. Le trader évalue chaque service offert avec la contrainte. Si lexpression est vrai, alors loffre est considérée comme appropriée.
21
Y Kermarrec Trader de CORBA (Opération dImportation) Préférence : est une expression qui indique lordre par lequel le trader doit retourner les services offerts aux clients. Par exemple, le trader dORBACUS définit : Max expression : les services offerts doivent être retournés par ordre décroissant selon la valeur de lexpression (une propriété). Min expression : les offres sont triées par ordre croissant. With expression, random, first.
22
Y Kermarrec Trader de CORBA (Opération dExportation) Exportation dun service : est une fonction utilisée par les serveurs pour enregistrer des services offerts via le trader. Le serveur doit savoir le type de service, avoir une référence dobjet et des valeurs des propriétés définies dans le type de service.
23
Y Kermarrec Trader de CORBA (Opération de Modification) Modification et suppression dun service offert : un serveur peut modifier, supprimer et ajouter des propriétés dun service offert selon le mode et les droits daccès à ses propriétés. La référence dobjet associé à un service ne peut pas être modifiée.
24
Y Kermarrec Trader de CORBA (architecture) Architecture et interactions :
25
Y Kermarrec Trader de CORBA (quelques appels) addtype pour ajouter un nouveau type de service au trader. query pour interroger des services offerts via le trader. registre_if et exports pour enregistrer des services offerts dans le trader.
26
Y Kermarrec Trader de CORBA (Exemple) Exemple : une banque. Une banque peut être caractérisée par son nom, sa localisation, le nombre de guichets, etc. Nous lançons le serveur du trader en enregistrant sa référence par exemple dans le serveur de nom.
27
Y Kermarrec Trader de CORBA (Exemple) Nous déclarons le type de service « une banque » : nom (string). localisation (string). n_guichets (short). ouvre_dimanche (boolean). Nous ajoutons ce type au trader. Cette étape configure le schéma de base de données qui décrit les services de type « une banque ».
28
Y Kermarrec Trader de CORBA (Exemple) Le serveur peut créer un objet qui implémente linterface définie dans le type de service. Il peut définir un service qui inclut la référence de lobjet et des valeurs des propriétés définies dans le type de service. nom ==société générale, localisation==Brest,Ouvre_dimache=FALSE
29
Y Kermarrec Trader de CORBA (Exemple) Il ajoute ce service au trader qui lajoute dans la base de données associée au type de service « une banque ». Le client de son côté appelle le trader pour demander des services qui ont des propriétés précises.
30
Y Kermarrec Trader de CORBA (Exemple) Il indique ses contraintes et ses préférences. Par exemple : Contrainte : localisation ==Brest. Préférence : max(nom). Le trader retourne les services désirés au clients avec leurs références.
31
Y Kermarrec Trader de CORBA (ORBACUS) Classe Trader qui contient la configuration des bases de données du trader. Nous définissons les propriétés de chaque attribut dune base de données associée à un type de service. Les attributs sont définis par leurs noms, types, et mode. Nous utilisons le type PropStruct[] pour définir les attributs de bases de données
32
Y Kermarrec Trader de CORBA (ORBACUS) Exemple : PropStruct[] props = new PropStruct[4] Props[0].name=« nom »; Props[0].value_type=orb.get_primitive_tc(org.omg.CORBA. TCKind.tk_short); Props[0].mode=org.omg.CosTradingRepos.ServiceTypeRepositoryPa ckage.PRopertyMode.PROP_NORMAL; add_type(SERVICE_TYPE,..,Props,..)
33
Y Kermarrec Trader de CORBA (ORBACUS) Le serveur recherche la référence du trader via par exemple serveur de nom. Il déclare un objet et il ajoute la référence et les propriétés de cet objet au trader. Il utilise linterface register_if du trader et puis linterface export pour exporter les propriétés. Puis, il se met en attente pour répondre aux demandes des clients.
34
Y Kermarrec Trader de CORBA (ORBACUS) Le client recherche la référence du trader. Il initialise ses préférences et sa requête. Par exemple : Préférence : max(nom). constraint : ouv_dimanche==TRUE and localisation==Paris
35
Y Kermarrec Trader de CORBA (ORBACUS) Il utilise linterface query du trader pour interroger le service en donnant comme paramètres : le type de service, les préférences, les contraintes, etc. Il affiche les résultats et les services retournés. Ils utilisent le type org.omg.CosTrading.Property pour afficher les propriétés des services.
36
Y Kermarrec Description de services Lidée est de bien décrire le service pour pouvoir linterroger. Beaucoup dapproches ont été proposées comme DAML-S, WSFL, etc. Nous pouvons décrire un service par trois niveaux.
37
Y Kermarrec Description par de services Propriétés statiques : ceux sont les propriétés que nous utilisons souvent avec le trader de CORBA pour interroger les services. Elles définissent les caractéristiques de services. Propriétés dynamiques ou le comportement : elles indiquent ce que le service peut faire. Linterface : elle définit les moyens dinteractions avec le service.
38
Y Kermarrec Description par des propriétés statiques Propriétés statiques: Localisation du service : détermine la localisation du service comme une adresse URL, une adresse de compagnie, etc. Ladresse physique dune compagnie peut être constituée de : nom de la ville, nom de la rue, le code postal, etc.
39
Y Kermarrec Description par des propriétés statiques Fournisseur de service : son nom, sa localisation, son numéro de téléphone, son email, ladresse URL de sa page Web. Outils de demande et de livraison : indiquent les moyens par lesquels un client peut demander un service ou recevoir le résultat de l exécution dun service. Par exemple, un PDA, un téléphone portable, etc.
40
Y Kermarrec Description par des propriétés statiques Paiement : est le processus défini par le fournisseur pour recevoir le prix du service. Il peut être réalisé en utilisant différentes méthodes (carte bleue, chèque, virement bancaire, etc.). Il peut être fait avant la livraison, à la livraison, après la livraison, etc.
41
Y Kermarrec Description par interface La description de linterface signifie la description de ses opérations et leurs paramètres, ses attributs, etc. Elle permet aux clients de découvrir les opérations disponibles et de comprendre comment ils peuvent formuler et exécuter les requêtes dinvocation du service lors de lexécution.
42
Y Kermarrec Description par interface Linterface peut être décrite par : Un nom. Une liste dopérations. Une liste dexceptions. Une liste dattributs. etc.
43
Y Kermarrec Description par interface Une opération peut être décrite par : Un nom. Le type de retour. Le nombre de paramètres. Une liste de paramètres. Une liste dexceptions. etc.
44
Y Kermarrec Description par interface Un paramètre peut être décrit par : Un nom. Un type. Un mode : entrée (in), sortie (out), entrée/sortie (inout). Le nom de lopération à laquelle le paramètre est associé. Une position dans lopération : le premier paramètre, le deuxième paramètre, etc.
45
Y Kermarrec Description par interface Si un client découvre un service lors de lexécution et sil ne connaît pas son interface, alors cette description lui fournit les informations nécessaires pour quil puisse invoquer le service en utilisant par exemple linterface DII de CORBA. Un exemple sur cette description est linterface Repository de CORBA.
46
Y Kermarrec Description par comportement Le comportement du service indique ce que le service peut faire. Il détermine comment utiliser et invoquer le service. Il indique les ordres par lesquels les opérations du service peuvent être exécutées. Par exemple, un client ne peut pas appeler un service bancaire pour déposer un montant sans quil ait ouvert un compte.
47
Y Kermarrec Description par comportement La description du comportement inclut la description de fonctionnalités de chaque opération et la possibilité de la connecter à dautres opérations. Nous pouvons utiliser les automates pour décrire le comportement dun service.
48
Y Kermarrec Description par comportement Chaque opération peut être décrite par des entrées/sorties, c- à-d, ce que lopération peut prendre en entrée et ce quelle peut fournir en sortie. Les états de lautomate représentent les opérations du service. Deux états sont connectés sils ont une même entrée/sortie.
49
Y Kermarrec Description par comportement Une transition dun état S à un autre état T est faite en exécutant lopération représentée par létat S et en fournissant une sortie qui doit être une entrée à létat T.
50
Y Kermarrec Description par comportement Un exemple dun automate : Cet automate est composé de deux états : latex et dvips
51
Y Kermarrec Description par comportement Implémentation de lautomate : current-state = initial-state; input = wait (message); while(!end or exit) { if (input=« tex » and current-state=initial-state) { call latex; input = output(latex); if (input=« error ») input=« tex »; else current_state=« dvips »; } if (input=« dvi » and current-state=« dvips ») { call dvips; input=« ps »; current_state=final;} }
52
Y Kermarrec Description par comportement Description : comment un client peut interroger un service par son comportement? Boîte noire qui indique ce que le service peut prendre en entrée et peut fournir en sortie. Dans lexemple précédent : entrée (tex), sortie (error, dvi, ps )
53
Y Kermarrec Description par comportement Boîte blanche qui indique les chemins dinteractions entre les opérations pour fournir une sortie à partir dune entrée donnée.
54
Y Kermarrec Composition de services Plusieurs services peuvent être assemblés en un seul service ayant comme fonctionnalité la composition de celles de services composants. Lidée est de créer de nouveaux services en combinant des services existants pour répondre aux demandes des clients.
55
Y Kermarrec Composition de services La composition permet denrichir le modèle de services existants en créant de nouveaux services. Si un client demande un service en interrogeant son comportement et si ce service nexiste pas alors une combinaison des comportements de deux ou plusieurs services répond peut être à sa demande.
56
Y Kermarrec Composition de services Deux services peuvent être composés sils ont aux moins une même entrée/sortie. Exemple : un client qui demande un service qui transforme un fichier « tex » en un fichier « pdf ».
57
Y Kermarrec Composition de services Le service composé :
58
Y Kermarrec Composition de services Trois types de composition : Composition statique : permet de créer de nouveaux services offerts à partir des services existants à la compilation Composition semi-dynamique : permet de créer de nouveaux types de services à partir des types de services existants à la compilation Composition dynamique : permet de générer des services composés à partir des services existants à lexécution
59
Y Kermarrec Composition statique Un service composé est considéré comme un service offert qui est constitué de deux ou plusieurs services offerts Ce type est limité puisquun service composé doit être défini à la compilation Si un service offert est mis à jour à lexécution, alors le service composé doit être mis à jour manuellement et recompilé Ce type est limité aux services offerts
60
Y Kermarrec Composition semi-dynamique (1/2) La composition est au niveau types de services Chaque service offert dun type de service composé est considéré comme service composé Les clients ne sont pas limités à des services offerts précis mais ils utilisent les types de services Spécification de services
61
Y Kermarrec Composition semi-dynamique (2/2) Ce modèle est plus élaboré que la composition statique puisque les clients peuvent préciser les propriétés attendues des services à composer Exemple : dans le contexte de mobilité, si un client compose un service de type « météo » avec un service de type « cinéma » et si la localisation change, alors la composition sadapte à ce changement Ce type est limité au types de services définis à la compilation
62
Y Kermarrec Composition dynamique (1/3) Le modèle le plus élaboré Les services à composer sont définis au fur et à mesure en se basant sur la demande du client Le Trader retourne au client toutes les combinaisons possibles qui peuvent répondre à la demande du client en connectant les entrées/sorties Le client peut interroger les services composants en indiquant les caractéristiques attendues
63
Y Kermarrec Composition dynamique (2/3) Un client a la possibilité de composer des services définis à lexécution Le client peut invoquer les services en interrogeant leurs interfaces et en utilisant linterface DII de CORBA Si une interface dun service est mise à jour à lexécution, alors le code client na pas besoin dêtre mis à jour ou recompilé Dans ce modèle de composition, le client peut interroger les services par ses trois niveaux de description
64
Y Kermarrec Composition dynamique (3/3) Étapes de la composition : Le client découvre les plans des services à composer et peut en choisir un (en interrogeant la Boîte_noire) Pour chaque type de service composants dans le plan, le client peut interroger les services offerts (en utilisant les propriétés statiques) et peut en choisir un Le client découvre les chemins dinteractions entre les opérations de service choisi (Boîte_blanche) Pour invoquer le service, le client peut découvrir son interface pour invoquer ses opérations en suivant le chemin dinteraction sélectionné dans létape précédente Le client réitère avec les autres types de services composants dans le plan
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.