23/11/2013 Service web et structure de données H. Meziane 1
Grammaire d’un document WSDL (2/3) WSDL est une grammaire XML pour la description du service web. La spécification est divisée en éléments principaux suivants : • Définitions ….. • Types ….. • Message …. • Les opérations …. • les types de ports ….. • Les liaisons (Binding) définit un format de message et les détails d’un protocole pour les opérations et les messages définis par un type de port donné. • Les ports (ports) : ce sont les nœuds de communication particuliers, chacun étant défini comme une combinaison entre une liaison et une adresse réseau. • Les services : il s’agit de l’ensemble des ports exposés pour permettre l’accès aux services correspondants. . 23/11/2013 Service web et structure de données H. Meziane 2 Binding (1/3)
La description de la relation entre les opérations définies dans
un type de port et les protocoles et formats de message qui prendront en charge les échanges ainsi définis est effectuée par l’intermédiaire de la définition d’éléments de liaison (Binding). Les liaisons peuvent être disponible à travers multiple transport incluant HTTP GET, HTTP POST, or SOAP. En réalité nous pouvons spécifier plusieurs bindings pour un portType donnée. Dans la grammaire d’une liaison, l’élément binding spécifie les éléments et attributs suivants :
Service web et structure de données H. Meziane
23/11/2013 3 Binding (2/3) <wsdl : binding name="Hello_Binding" type="tns:Hello_PortType"> <wsdl : operation name="sayHello"> <wsdl : input ...>………</ wsdl : input> <wsdl : output …>…….</wsdl : output> <wsdl : Fault …>…….</ wsdl : Fault> </ wsdl : operation> </ wsdl : binding> L’attribut name définit un nom unique pour chaque liaison employée dans le document WSDl. L’attribut type permet à la liaison de faire référence au portType qu’elle relie. Dans notre exemple l’élément binding reference tns:Hello_PortType. L’élément opération dans une liaison spécifie les informations de liaison pour l’opération avec le même nom que dans le portType de la liaison. 23/11/2013 Service web et structure de données H. Meziane 4 Binding (3/3) <wsdl : binding name="Hello_Binding" type="tns:Hello_PortType"> <wsdl : operation name="sayHello"> <wsdl : input ...>………</ wsdl : input> <wsdl : output …>…….</wsdl : output> <wsdl : Fault …>…….</ wsdl : Fault> </ wsdl : operation> </ wsdl : binding> Les éléments input, output, sont présents ou non selon le type d’interaction mis en œuvre par l’opération. L’ élément fault éventuel relatif aux messages n’est présent que pour les interactions de type requête/réponse ou demande de réponse. Deux règles importantes peuvent être retenues :
Une liaison ne peut mettre en œuvre qu’un et un seul protocole ;
Aucun URI ne doit être référencé dans une liaison.
23/11/2013 Service web et structure de données H. Meziane
5 Exemple WSDL : HelloService.wsdl <binding name="Hello_Binding" type="tns:Hello_PortType"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="sayHello"> <soap:operation soapAction="sayHello"/> <input> <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:examples:helloservice" use="encoded"/> </input> <output> <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:examples:helloservice" use="encoded"/> </output> </operation> </binding> 23/11/2013 Service web et structure de données H. Meziane 6 Port Un port définit un nœud de communication, et donc un URI, pour une liaison particulière. Uun port spécifie l’adresse d’une liaison. Dans un document WSDL, cet élément se décrit ainsi :
<WSDL : definition ……>
<WSDL : Service ……> <WSDL : port name="nmtoken" binding="qname"> </WSDL port> ….. L’attribut name fournit un nom unique parmi tous les ports définis dans le document WSDL. L’attribut binding (de type Qname) se rapporte à une liaison.
À cet élément s’appliquent également deux règles importantes :
un port ne doit pas comporter plus d’un URI ; aucune information de liaison autre qu’une adresse ne peut être fournie. 23/11/2013 Service web et structure de données H. Meziane 7 service • L’élément service spécifie la localisation du service . • Un service est un ensemble de port. Il est matérialisé dans un document WSDL de la manière suivante : <service name="nmtoken"> <port .... /> </service> L’attribut name fournit un nom unique parmi tous les services définis dans le document WSDL. Un service peut regrouper plusieurs ports. Dans cette situation, les ports ne peuvent communiquer entre eux, c’est-à-dire que la sortie d’un port ne peut constituer l’entrée d’un autre port.
23/11/2013 Service web et structure de données H. Meziane
8 Exemple WSDL : HelloService.wsdl <service name="Hello_Service"> <documentation>WSDL File for HelloService </documentation> <port name="Hello_Port" binding="tns:Hello_Binding" > <soap:address location="http://localhost:8080/soap/servlet/rpcrouter"/> </port> </service> Dans notre exemple, le service Web nommé Hello_Service propose un port nommé Hello_Port, associé à la liaison nommée Hello_Binding. Ce port correspond au point d’accès Internet http://localhost:8080/soap/servlet/rpcrouter"/ Note : L’élément service inclut l’élément documentation pout fournir une documentation lisible par humain
23/11/2013 Service web et structure de données H. Meziane