SOAP et les RPC XML SOAP WSDL RPC
Rappels sur le XML Langage avec des balises Très lisible Pour stocker des données Séparation entre contenu et présentation du document
Les faiblesses de XML Les DTD ne sont pas en XML donc on ne peut pas les parser avec un parseur XML classique Pas d’espace de nommage dans les balises Typage limité des données
XML NameSpaces Résous les ambiguïtés des noms de balise Qu’est ce qu’un NameSpace ? Exemple
Exemple XML NameSpaces <bonDeCommande :expedition xmlns : bonDeCommande= « »> 61 bd. Saint Germain Paris <contacts:serviceClient xmlns : contacts= «intranet/contacts/xml»>
XML Schema Définition de types de données + imbrication des éléments entre eux Création de types de données personnalisés Héritage Support de XML NameSpaces Description de tout type de structures de données
Exemple XML Schema
SOAP Protocole de transmission de messages basé sur le XML Souvent utilisé avec HTTP Indépendant du langage et de la plate-forme Message constitué d’une enveloppe comprenant une en tête et un corps
Message SOAP : l’enveloppe Racine du document XML Définit 2 namespaces SOAP-ENV (pour l’enveloppe) et SOAP-ENC (pour le typage des données)
Message SOAP : l’en tête Facultative Transports de données complémentaires Attribut mustUnderstand Attribut Actor pour les intermédiaires SOAP
Message SOAP : le corps Élément Fault (code + string + factor + detail) Transport des données
Codage des données Référence à des balises définies dans SOAP- ENC. Types simples directement entre les balises sauf exception
Les types simples Les chaînes de caractères Les énumérations Les tableaux d’octets
Exemple de types simples
Les types composés Les structures Les tableaux Les transmissions partielles de données
Exemples de tableau et d’une structure Tableau : 3 4 Structure : Henry Ford Prefatory text This is a book.
SOAP et les RPC Utilisation de HTTP Pourquoi HTTP ? – Simple – Présent sur toutes les plate formes – Evite les problèmes des proxys et des firewalls Message SOAP inclus dans la requête HTTP de type POST La réponse HTTP => Si code de retour = 500 alors élément Fault doit être présent dans la réponse HTTP
Exemple de requête HTTP contenant un message SOAP POST HTTP/1.1 Content-Type: text/xml SOAPAction: interfaceURI#Add Content-Length:
SOAP et les RPC Informations contenues dans le message SOAP pour effectuer un RPC Corps d’un message SOAP RPC – Structure : son nom est le nom de la procédure appelée – Passage des paramètres En tête d’un message SOAP RPC
WSDL Description de services Web Basé sur le XML Indépendant du langage et de la plate forme Structure du document WSDL
WSDL : définition des types de données et des messages Définition des types de données qui seront employés dans le document Se base sur XML Schema Les messages sont les données qui seront passées en paramètres à un service Web ou retournées par un service Web. Encore indépendants du protocole de transport
Exemple de messages WSDL
WSDL : les types de port Collection d’opérations abstraites Dans ces opérations on spécifie les messages input et output Différents types d’opérations Analogie avec des langage de programmation
Exemple de type de port WSDL
WSDL : les liaisons Définit les messages concrets Spécifie le protocole utilisé (SOAP dans notre cas) Différentes balises à définir pour SOAP
WSDL : le port et le services Le port fait le lien entre une liaison et une adresse réseau Un service est constitué d’un ensemble de ports WSDL.
Fonctionnement en mode client / serveur en PHP Un client qui appelle un service Web Le serveur exécute le service et renvoie le résultat Utilisation d’une librairie spécifique : NuSOAP Tout le travail est effectué par la librairie.
Interfaçage SPIRIT / SOAP Définir les différents service Web dont on a besoin Identifier les paramètres d’entrée et de sortie Les implémenter Créer le fichier WSDL Développer le client et le serveur en PHP Utiliser le client avec une interface graphique
Conclusion SOAP est de plus en plus employé Le plus souvent utilisé avec HTTP WSDL pour définir les services Web En PHP le gros du travail est effectué par la librairie