1 / 64

Découverte et description de services distribués

Découverte et description de services distribués. Oussama KASSEM ZEIN. 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.

Télécharger la présentation

Découverte et description de services distribués

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

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

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

  5. Le service de nommage

  6. Le service de nommage • Un exemple d’un nom d’objet : • Les contextes sont équivalents à la notion de répertoire/sous-répertoire.

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

  8. Le service de nommage • Les fonctionnements :

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

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

  12. 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);

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

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

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

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

  18. 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. 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é.

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

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

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

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

  24. Trader de CORBA (architecture) • Architecture et interactions :

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

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

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

  32. 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,..)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  50. Description par comportement • Un exemple d’un automate : • Cet automate est composé de deux états : latex et dvips

More Related