Cours 6 : Les Web Services et UDDI Mars 2010 - Version 1.0 - Les technologies XML Cours 6 : Les Web Services et UDDI Mars 2010 - Version 1.0 -
Web Services – UDDI Même si la conjonction SOAP / WSDL permet d’invoquer des Web Services, il était nécessaire d’ajouter une fonctionnalité de recherche de services. Cette fonctionnalité c’est UDDI
Web Services - UDDI UDDI est une spécification définissant la manière de publier et de découvrir les Web Services sur un réseau. La description du service est faite en XML selon la spécification Un registre UDDI peut être accédé en SOAP mais aussi en XML-RPC ou Corba. La spécification ne limite pas l’utilisation au Web Service.
Web Services - UDDI L'annuaire UDDI est consultable de différentes manières : Les pages blanches comprennent la liste des entreprises ainsi que des informations associées à ces dernières. Les pages jaunes recensent les services Web de chacune des entreprises sous le standard WSDL. Les pages vertes fournissent des informations techniques précises sur les services fournis. Ces informations concernent les descriptions de services et d'information de liaison ou encore les processus métiers associés.
Web Services - UDDI Structure macroscopique d’un annuaire UDDI
Web Services - UDDI Le modèle UDDI comporte 5 structures de données principales: BusinessEntity : ensemble des informations sur l’entreprise proposant le service BusinessService : ensemble des informations sur les services publiés par l’entreprise BindingTemplate : ensemble des informations sur le lieu d’hébergement du service tModel : ensemble des informations sur le mode d’accès du service (WSDL) publisherAssertion : ensemble des informations contractuelles pour accéder au service
Web Services - UDDI Exemple Schéma BusinessEntity (pages blanches) <element name="businessEntity" type="uddi:businessEntity" /> <complexType name="businessEntity"> <sequence> <element ref="uddi:discoveryURLs" minOccurs="0" /> <element ref="uddi:name" maxOccurs="unbounded" /> <element ref="uddi:description" minOccurs="0" maxOccurs="unbounded" /> <element ref="uddi:contacts" minOccurs="0" /> <element ref="uddi:businessServices" minOccurs="0" /> <element ref="uddi:identifierBag" minOccurs="0" /> <element ref="uddi:categoryBag" minOccurs="0" /> </sequence> <attribute name="businessKey" type="uddi:businessKey" use="required" /> <attribute name="operator" type="string" use="optional" /> <attribute name="authorizedName" type="string" use="optional" /> </complexType>
Web Services - UDDI Exemple Schéma BusinessEntity (pages jaunes) <element name="businessService" type="uddi:businessService" /> <complexType name="businessService"> <sequence> <element ref="uddi:name" minOccurs="0" maxOccurs="unbounded" /> <element ref="uddi:description" minOccurs="0" maxOccurs="unbounded" /> <element ref="uddi:bindingTemplates" minOccurs="0" /> <element ref="uddi:categoryBag" minOccurs="0" /> </sequence> <attribute name="serviceKey" type="uddi:serviceKey" use="required" /> <attribute name="businessKey" type="uddi:businessKey" use="optional" /> </complexType>
Web Services - UDDI Exemple Schéma bindingTemplate (pages vertes) <element name="bindingTemplate" type="uddi:bindingTemplate" /> <complexType name="bindingTemplate"> <sequence> <element ref="uddi:description" minOccurs="0" maxOccurs="unbounded" /> <choice> <element ref="uddi:accessPoint" /> <element ref="uddi:hostingRedirector" /> </choice> <element ref="uddi:tModelInstanceDetails" /> </sequence> <attribute name="serviceKey" type="uddi:serviceKey" use="optional" /> <attribute name="bindingKey" type="uddi:bindingKey" use="required" /> </complexType>
Web Services - UDDI Exemple Schéma tModels <element name="tModel" type="uddi:tModel" /> <complexType name="tModel"> <sequence> <element ref="uddi:name" /> <element ref="uddi:description" minOccurs="0" maxOccurs="unbounded" /> <element ref="uddi:overviewDoc" minOccurs="0" /> <element ref="uddi:identifierBag" minOccurs="0" /> <element ref="uddi:categoryBag" minOccurs="0" /> </sequence> <attribute name="tModelKey" type="uddi:tModelKey" use="required" /> <attribute name="operator" type="string" use="optional" /> <attribute name="authorizedName" type="string" use="optional" /> </complexType>
Web Services - UDDI La norme UDDI 3.0.1 regroupe 9 schéma XML UDDI API Schema UDDI Custody Schema UDDI Subscription Schema UDDI Subscription listener Schema UDDI Replication Schema UDDI Value Set Validation Schema UDDI Value Set Catching UDDI Policy UDDI Policy Instance Parameters
Web Services - UDDI UDDI API Schema : http://uddi.org/schema/uddi_v3.xsd Le schéma de base avec les principaux types de données UDDI Custody Schema : http://uddi.org/schema/uddi_v3custody.xsd Schéma pour spécifier la pérennité des informations UDDI Subscription Schema : http://uddi.org/schema/uddi_v3subscription.xsd Schéma pour les messages de publication dans l’annuaire
Web Services - UDDI UDDI Subscription listener Schema http://uddi.org/schema/uddi_v3subscriptionListener.xsd UDDI Replication Schema : http://uddi.org/schema/uddi_v3replication.xsd Schéma pour les messages de réplication d’annuaire UDDI Value Set Validation Schema : http://uddi.org/schema/uddi_v3valueset.xsd Schéma pour les types de validation à effectuer sur les données reçues
Web Services - UDDI UDDI Value Set Catching : http://uddi.org/schema/uddi_v3valuesetcaching.xsd UDDI Policy : http://uddi.org/schema/uddi_v3policy.xsd Schéma pour la gestion des droits UDDI Policy Instance Parameters : http://uddi.org/schema/uddi_v3policy_instanceParms.xsd Schéma pour les politiques d’accès aux droits
Web Services - UDDI UDDI permet de classer et de rechercher des Web Services. Un annuaire UDDI contient : des informations techniques (documents WSDL) des informations à caractère général sur une entreprise On peut donc effectuer deux grandes familles d’actions sur un annuaire UDDI Publier un service Rechercher un service
Web Services - UDDI Primitives de recherche find_binding : récupère la liaison du service considéré. find_business : récupère l’identité de l’entreprise productrice du Web Service. find_relatedbusiness : récupère la liste des entreprises étant reliées (filiale, département, partenaire, …) à l’entreprise productrice du Web Service. find_service : récupère la définition du service. find_tmodel : récupère le modèle de données associé. get_bindingDetail : récupère, par une liaison précédemment établie par find_binding les champs individuels. get_businessDetail, get_businessDetailExt : récupère une entité précédemment établie par find_business les attributs individuels. get_serviceDetail : récupère un service précédemment établi par find_service les attributs individuels du service (prototypes des méthodes). get_tmodelDetail : récupère un modèle établie par find_tmodel les champs individuels.
Web Services - UDDI Primitives de publication save et delete : manipulation de service dans l’annuaire get_authToken et discard_authToken : Authentification des commandes par jeton joint_ventures : Ajout de relations inter entreprises
Web Services – WS Inspection Devant la complexité grandissante de UDDI et peu d’implémentation, IBM et Microsoft on proposé une norme moins ambitieuse WS Inspection. Comme pour UDDI le but est de permettre la « découverte » de services WEB. Ces services sont aussi décrits à l’aide de WSDL WS-Inspection est basé sur le langage XML WSIL (Web Service Inspection Language)
Web Services – WS Inspection Les descriptions des services sont stockées avec les services, et les demandes d'informations sont acheminées vers les sites qui offrent les services. WS-Inspection est un format XML qui permet à une application appelante d'interroger un site connu pour obtenir les services disponibles proposés. Elle définit une série de règles spécifiant de quelle manière les sites doivent exposer leurs informations aux systèmes appelants qui émettent une requête.
Web Services – WS Inspection <?xml version="1.0"?> <inspection xmlns="http://schemas.xmlsoap.org/ws/2001/10/inspection/"> <service> <description referencedNamespace="http://schemas.xmlsoap.org/wsdl/" location="http://ws.com/weatherservice.wsdl" /> </service> <service> <description referencedNamespace="urn:uddi-org:api"> <wsiluddi:serviceDescription location="http://ws.com/uddi/inquiry"> <wsiluddi:serviceKey>52946BB0-BC28-11D5-A432-0004AC49CC1E</wsiluddi:serviceKey> </wsiluddi:serviceDescription> </description> <link referencedNamespace="http://schemas.xmlsoap.org/ws/2001/10/inspection/" location="http://ws.com/secondarysiteservices.wsil"/> </inspection>
Web Services – WS Inspection L’exemple précédent montre : Une exposition directe d’un service par sa description WSDL Une exposition à travers un annuaire UDDI Une référence à une autre description WSIL. On peut voir WS-Inspection comme un complément à UDDI en particuliers dans des solutions maîtrisées (intranet)