64
Découverte et description de services distribués Oussama KASSEM ZEIN

Découverte et description de services distribués Oussama KASSEM ZEIN

Embed Size (px)

Citation preview

Page 1: Découverte et description de services distribués Oussama KASSEM ZEIN

Découverte et description de services distribués

Oussama KASSEM ZEIN

Page 2: Découverte et description de services distribués Oussama KASSEM ZEIN

Y Kermarrec

Introduction

Les besoins d’un 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.

Page 3: Découverte et description de services distribués Oussama KASSEM ZEIN

Y Kermarrec

Le service de nommage

Il définit un espace de désignation pour retrouver les objets ou les services à partir d’un nom symbolique.

Cet espace peut être structuré par un graphe de répertoires contenant des références sur les objets.

Page 4: Découverte et description de services distribués Oussama KASSEM ZEIN

Y Kermarrec

Le service de nommage

Service de nommage de CORBA (Naming service).• L’espace de désignation est organisé en graphes de

contextes de nommage concaténés (NameComponent, Name, NamingContext).

• Chaque contexte maintient une liste d’associations entre les noms symboliques et des références d’objet.

• Graphe : nœuds = contextes, feuilles = objets.

Page 5: Découverte et description de services distribués Oussama KASSEM ZEIN

Y Kermarrec

Le service de nommage

Page 6: Découverte et description de services distribués Oussama KASSEM ZEIN

Y Kermarrec

Le service de nommage

Un exemple d’un nom d’objet :

Les contextes sont équivalents à la notion de répertoire/sous-répertoire.

Page 7: Découverte et description de services distribués Oussama KASSEM ZEIN

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 l’objet qui correspond à un contexte.

Page 8: Découverte et description de services distribués Oussama KASSEM ZEIN

Y Kermarrec

Le service de nommage

Les fonctionnements :

Page 9: Découverte et description de services distribués Oussama KASSEM ZEIN

Y Kermarrec

Le service de nommage

Comment savoir où est le serveur de nom ?

• Enregistrer l’adresse du serveur de nom dans un fichier.

• Indiquer l’adresse du serveur de nom dans une variable d’environnement.

• Indiquer l’adresse dans un paramètres de service de nommage (ORBNaming) à l’exécution.

Page 10: Découverte et description de services distribués Oussama KASSEM ZEIN

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="";

Page 11: Découverte et description de services distribués Oussama KASSEM ZEIN

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 l’objet associé au contexte mm

Page 12: Découverte et description de services distribués Oussama KASSEM ZEIN

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 l’objet du serveur de nom org.omg.CORBA.Object ob=ncRef.resolve(nm);

Page 13: Découverte et description de services distribués Oussama KASSEM ZEIN

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 qu’il désire rendre disponibles au niveau du trader en les caractérisant par un ensemble de propriétés

Page 14: Découverte et description de services distribués Oussama KASSEM ZEIN

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.

Page 15: Découverte et description de services distribués Oussama KASSEM ZEIN

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. L’ensemble de ces propriétés définissent les attributs des bases de données du trader.

Page 16: Découverte et description de services distribués Oussama KASSEM ZEIN

Y Kermarrec

Trader de CORBA (Type de Service)

Un type de service est constitué de :• Un nom : identifie d’une façon unique le type de service.

• Un type d’interface : une interface IDL. Elle fournit l’ensemble d’opérations qu’un 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 d’un nom, d’un type et d’un mode.

Page 17: Découverte et description de services distribués Oussama KASSEM ZEIN

Y Kermarrec

Trader de CORBA (Service Offert)

Service offert : est une instance d’un 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 d’objet : fournit un pointeur qui permet à un client d’accéder au service.

Page 18: Découverte et description de services distribués Oussama KASSEM ZEIN

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.

Page 19: Découverte et description de services distribués Oussama KASSEM ZEIN

Y Kermarrec

Trader de CORBA (Opération d’Importation)

Importation d’un 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é.

Page 20: Découverte et description de services distribués Oussama KASSEM ZEIN

Y Kermarrec

Trader de CORBA (Opération d’Importation)

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 l’expression est vrai, alors l’offre est considérée comme appropriée.

Page 21: Découverte et description de services distribués Oussama KASSEM ZEIN

Y Kermarrec

Trader de CORBA (Opération d’Importation)

Préférence : est une expression qui indique l’ordre par lequel le trader doit retourner les services offerts aux clients.

Par exemple, le trader d’ORBACUS définit :• Max expression : les services offerts doivent être

retournés par ordre décroissant selon la valeur de l’expression (une propriété).

• Min expression : les offres sont triées par ordre croissant.• With expression, random, first.

Page 22: Découverte et description de services distribués Oussama KASSEM ZEIN

Y Kermarrec

Trader de CORBA (Opération d’Exportation)

Exportation d’un 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 d’objet et des valeurs des propriétés définies dans le type de service.

Page 23: Découverte et description de services distribués Oussama KASSEM ZEIN

Y Kermarrec

Trader de CORBA (Opération de Modification)

Modification et suppression d’un service offert : un serveur peut modifier, supprimer et ajouter des propriétés d’un service offert selon le mode et les droits d’accès à ses propriétés.

La référence d’objet associé à un service ne peut pas être modifiée.

Page 24: Découverte et description de services distribués Oussama KASSEM ZEIN

Y Kermarrec

Trader de CORBA (architecture)

Architecture et interactions :

Page 25: Découverte et description de services distribués Oussama KASSEM ZEIN

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.

Page 26: Découverte et description de services distribués Oussama KASSEM ZEIN

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.

Page 27: Découverte et description de services distribués Oussama KASSEM ZEIN

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 ».

Page 28: Découverte et description de services distribués Oussama KASSEM ZEIN

Y Kermarrec

Trader de CORBA (Exemple)

Le serveur peut créer un objet qui implémente l’interface définie dans le type de service.

Il peut définir un service qui inclut la référence de l’objet 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

Page 29: Découverte et description de services distribués Oussama KASSEM ZEIN

Y Kermarrec

Trader de CORBA (Exemple)

Il ajoute ce service au trader qui l’ajoute 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.

Page 30: Découverte et description de services distribués Oussama KASSEM ZEIN

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.

Page 31: Découverte et description de services distribués Oussama KASSEM ZEIN

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 d’une 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

Page 32: Découverte et description de services distribués Oussama KASSEM ZEIN

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.ServiceTypeRepositoryPackage.PRopertyMode.PROP_NORMAL;

add_type(SERVICE_TYPE,..,Props,..)

Page 33: Découverte et description de services distribués Oussama KASSEM ZEIN

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 l’interface register_if du trader et puis l’interface export pour exporter les propriétés. Puis, il se met en attente pour répondre aux demandes des clients.

Page 34: Découverte et description de services distribués Oussama KASSEM ZEIN

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’

Page 35: Découverte et description de services distribués Oussama KASSEM ZEIN

Y Kermarrec

Trader de CORBA (ORBACUS)

Il utilise l’interface 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.

Page 36: Découverte et description de services distribués Oussama KASSEM ZEIN

Y Kermarrec

Description de services

L’idée est de bien décrire le service pour pouvoir l’interroger.

Beaucoup d’approches ont été proposées comme DAML-S, WSFL, etc.

Nous pouvons décrire un service par trois niveaux.

Page 37: Découverte et description de services distribués Oussama KASSEM ZEIN

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.

L’interface : elle définit les moyens d’interactions avec le service.

Page 38: Découverte et description de services distribués Oussama KASSEM ZEIN

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. L’adresse physique d’une compagnie peut être constituée de : nom de la ville, nom de la rue, le code postal, etc.

Page 39: Découverte et description de services distribués Oussama KASSEM ZEIN

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, l’adresse 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 d’un service. Par exemple, un PDA, un téléphone portable, etc.

Page 40: Découverte et description de services distribués Oussama KASSEM ZEIN

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.

Page 41: Découverte et description de services distribués Oussama KASSEM ZEIN

Y Kermarrec

Description par interface

La description de l’interface 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 d’invocation du service lors de l’exécution.

Page 42: Découverte et description de services distribués Oussama KASSEM ZEIN

Y Kermarrec

Description par interface

L’interface peut être décrite par :

• Un nom.

• Une liste d’opérations.

• Une liste d’exceptions.

• Une liste d’attributs.

• etc.

Page 43: Découverte et description de services distribués Oussama KASSEM ZEIN

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 d’exceptions.

• etc.

Page 44: Découverte et description de services distribués Oussama KASSEM ZEIN

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 l’opération à laquelle le paramètre est associé.• Une position dans l’opération : le premier paramètre, le

deuxième paramètre, etc.

Page 45: Découverte et description de services distribués Oussama KASSEM ZEIN

Y Kermarrec

Description par interface

Si un client découvre un service lors de l’exécution et s’il ne connaît pas son interface, alors cette description lui fournit les informations nécessaires pour qu’il puisse invoquer le service en utilisant par exemple l’interface DII de CORBA.

Un exemple sur cette description est l’interface Repository de CORBA.

Page 46: Découverte et description de services distribués Oussama KASSEM ZEIN

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 qu’il ait ouvert un compte.

Page 47: Découverte et description de services distribués Oussama KASSEM ZEIN

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 à d’autres opérations.

Nous pouvons utiliser les automates pour décrire le comportement d’un service.

Page 48: Découverte et description de services distribués Oussama KASSEM ZEIN

Y Kermarrec

Description par comportement

Chaque opération peut être décrite par des entrées/sorties, c-à-d, ce que l’opération peut prendre en entrée et ce qu’elle peut fournir en sortie.

Les états de l’automate représentent les opérations du service. Deux états sont connectés s’ils ont une même entrée/sortie.

Page 49: Découverte et description de services distribués Oussama KASSEM ZEIN

Y Kermarrec

Description par comportement

Une transition d’un état S à un autre état T est faite en exécutant l’opération représentée par l’état S et en fournissant une sortie qui doit être une entrée à l’état T.

Page 50: Découverte et description de services distribués Oussama KASSEM ZEIN

Y Kermarrec

Description par comportement

Un exemple d’un automate :

Cet automate est composé de deux états : latex et dvips

Page 51: Découverte et description de services distribués Oussama KASSEM ZEIN

Y Kermarrec

Description par comportement

Implémentation de l’automate : 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;}

}

Page 52: Découverte et description de services distribués Oussama KASSEM ZEIN

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 l’exemple précédent : entrée (tex), sortie (error, dvi, ps)

Page 53: Découverte et description de services distribués Oussama KASSEM ZEIN

Y Kermarrec

Description par comportement

Boîte blanche qui indique les chemins d’interactions entre les opérations pour fournir une sortie à partir d’une entrée donnée.

Page 54: Découverte et description de services distribués Oussama KASSEM ZEIN

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.

L’idée est de créer de nouveaux services en combinant des services existants pour répondre aux demandes des clients.

Page 55: Découverte et description de services distribués Oussama KASSEM ZEIN

Y Kermarrec

Composition de services

La composition permet d’enrichir 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 n’existe pas alors une combinaison des comportements de deux ou plusieurs services répond peut être à sa demande.

Page 56: Découverte et description de services distribués Oussama KASSEM ZEIN

Y Kermarrec

Composition de services

Deux services peuvent être composés s’ils 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 ».

Page 57: Découverte et description de services distribués Oussama KASSEM ZEIN

Y Kermarrec

Composition de services

Le service composé :

Page 58: Découverte et description de services distribués Oussama KASSEM ZEIN

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 à l’exécution

Page 59: Découverte et description de services distribués Oussama KASSEM ZEIN

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é puisqu’un service composé doit être défini à la compilation

Si un service offert est mis à jour à l’exécution, alors le service composé doit être mis à jour manuellement et recompilé

Ce type est limité aux services offerts

Page 60: Découverte et description de services distribués Oussama KASSEM ZEIN

Y Kermarrec

Composition semi-dynamique (1/2)

La composition est au niveau types de services

Chaque service offert d’un 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

Page 61: Découverte et description de services distribués Oussama KASSEM ZEIN

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 s’adapte à ce changement

Ce type est limité au types de services définis à la compilation

Page 62: Découverte et description de services distribués Oussama KASSEM ZEIN

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

Page 63: Découverte et description de services distribués Oussama KASSEM ZEIN

Y Kermarrec

Composition dynamique (2/3)

Un client a la possibilité de composer des services définis à l’exécution

Le client peut invoquer les services en interrogeant leurs interfaces et en utilisant l’interface DII de CORBA

Si une interface d’un service est mise à jour à l’exécution, alors le code client n’a 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

Page 64: Découverte et description de services distribués Oussama KASSEM ZEIN

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 d’interactions 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 d’interaction sélectionné dans l’étape précédente

• Le client réitère avec les autres types de services composants dans le plan