Génération automatique du WSDL de définition du Web Service hébergé sur un serveur PHP
Par placeoweb, mardi 2 octobre 2007 à 00:06 :: PHP :: #82 :: rss
Depuis PHP5 il est facile de construire un client de Web Service (Ws), mais pour ce qui est de la génération du fichier WSDL c'est une toute autre histoire, voici mon retour sur les différentes possibilités rencontrées.
Construction du web service serveur
Construire un service web en PHP 5 grâce à l'extension SOAP
Introduction
SOAP est un protocole basé sur XML, qui permet l'échange de données structurées entre applications. PHP 5 fournit une nouvelle extension, permettant de créer aisément des clients et serveurs SOAP, basée sur un ensemble de classes de bas niveau. Nous allons donc voir comment créer un service web simple (un serveur SOAP ) et comment interroger ce serveur (un client SOAP ). Notre service web sera décrit dans un fichier WSDL.
Conclusion
Encore une fois, PHP 5 nous apporte ici une nouvelle fonctionnalité très intéressante, qui simplifie grandement les choses en matière d'interrogation ou de création de service web. Le même résultat aurait demandé quelques centaines de lignes de code en PHP 4.
WSDL Writer 0.3-katy.1 : Génération Automatique de WSDL en PHP 5
L'outil WSDL Writer by katy est le prolongement du projet WDSL-Writer (par Giffin.org et abandonné de son auteur David Griffin). Premièrement, il fonctionne très bien. Ensuite même les types complexes (classes) sont bien gérés et générés dans le WSDL. Son utilisation est simple et relative à la PhpDoc. Le site de Katy illustre et résout des exemples d'utilisation. Ce générateur de WSDL semble correspondre parfaitement à ce que je cherchais, bilan : merci Katy !
Un seul souci rencontré : undefined ReflectionProperty::getDocComment() La cause provenait de ma version de PHP : 5.0.4 et la résolution s'est faite en compilant le Wsdl sur un PHP 5.2.0
Construire ses classes avec Dia et le plugin uml2php5
Créer un service web avec uml2php5
Introduction
uml2php5 est un plugin destiné à se greffer sur Dia, application de modélisation UML fonctionnant sous linux et windows, permettant de générer automatiquement les squelettes des classes PHP à partir des diagrammes. Ce plugin est basé sur XSLT. Depuis la version 2.0, uml2php5 intègre une nouvelle fonctionnalité fort intéressante, la génération de services web basés sur SOAP et WSDL. Le plugin génèrera la totalité des fichiers nécessaires au fonctionnement de votre service web, à savoir, le serveur SOAP, le fichier WSDL décrivant le service web et le squelette de la (ou des) classe(s) de gestion des requêtes envoyées au service. Nous allons voir comment s'en servir.
Conclusion
Cette nouvelle fonctionnalité, arrivée avec la version 2.0 de uml2php5 est purement et simplement un régal ! La génération de service web devient d'une facilité déconcertante, notamment grâce à la génération automatique du fichier WSDL décrivant le service web, qui restait quand même la tâche la plus fastidieuse.
Conclusion personnelle
Après 2 heures de découverte de Dia et du plugin uml2php5, il est facile de construire le WSDL pour des retours de type primitifs tels que string,int,boolean. Par contre pour retourner des types complexes tels que des objets, il faudrait obtenir la documentation du plugin. Dia est un bon outil, il est même gratuit. Le plugin aussi est gratuit excepté sa documentation qui ne semble pas encore écrite.
Class: PHP WSDL Generator : Generate WSDL from PHP class' code
Le générateur de WSDL à partir de classes PHP écrit par Protung Dragos fût un échec total, car la génération de l'exemple fournit n'ajoutait me pas les méthodes attendues.
Class: Soap Discovery : Generate WSDL for SOAP Web service with reflection
Ce générateur de WSDL à partir de classes PHP écrit par Braulio José Solano Rojas a généré quelque chose de valide, mais semble générer que du type string en retour. Il est donc incomplet.
Commentaires
1. Le mardi 13 mai 2008 à 08:18, par O_be_one
2. Le vendredi 16 mai 2008 à 11:52, par katy
Ajouter un commentaire
Les commentaires pour ce billet sont fermés.