Accueil
Rechercher:
sur developpez.com sur les forums
Forums | Tutoriels | F.A.Q's | Participez | Hébergement | Contacts
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi MS-Office SQL & SGBD Oracle  4D  Business Intelligence
FORUMS DELPHI F.A.Q DELPHI TUTORIELS DELPHI LIVRES COMPOSANTS SOURCES DEFI TELECHARGEZ DELPHI TV

WebServices avec Delphi 6 Entreprise

Date de publication : 30/08/2001

Date de mise a jour : 25/07/2004

Par Antony ZANETTI (TeamB-FR) (autres contributions)
 

Les WebServices - Une technologie Client/Serveur révolutionnaire pour Internet


1. Introduction
2. Création d'un serveur de WebService et de son client
Etape #1: Préparation
Etape #2: Ecriture du WebService
Etape #3: Installation du WebService
Etape #4: Création d'un client pour notre WebService


1. Introduction


WebServices est une des nouvelles révolution de l'Internet d'aujourd'hui.

Cette technologie propose un nouveau modèle de communication Client/Serveur.

Ce modèle dispose d'une grande souplesse de mise en oeuvre, basé sur 2 standards :

  • SOAP: Simple Object Access Protocol qui définit la structure des messages XML utilisés par les applications pour dialoguer entre elles ;
  • WSDL: un format de description des méthodes et des paramètres des services invocables par le biais des messages aux formats SOAP.

Les applications clientes et le serveur de WebServices utilisent le protocole HTTP pour transporter les requêtes et les réponses.

Les applications clientes peuvent être de toutes natures (Windows, Linux, Applications Web ISAPI, CGI, ...) et écrites avec différents langages.

Comme son nom l'indique un WebService est conçu pour rendre un service.

Prenons le cas d'un site dont son contenu change régulièrement, comme un journal. Ce site peut proposer un WebService permettant de retrouver le sommaire du jour.
Ce sommaire sera dépourvu de tout "design" ou charte graphique du journal, permettant ainsi de n'avoir que les données brutes. Ces données pourront etre traitées comme bon vous semble.
Vous pouvez par exemple les intégrer sur votre propre site avec votre charte graphique, concevoir un logiciel qui présentera le sommaire du journal,...

Après cette brève introduction, parlons de Delphi.

La nouvelle mouture de Delphi (version 6) permet de créer des serveurs et des clients WebServices avec une simplicité extrême.
Des composants spécialisés encapsulent tous les mécanismes de SOAP et WSDL, qui sont complètement transparents.
Les développeurs peuvent alors se focaliser tranquillement sur l'essence du WebService et écrire les méthodes principales du service.


2. Création d'un serveur de WebService et de son client



Etape #1: Préparation


Le WebService que nous allons réaliser dans cet article ne va implémenter qu'un service.

Ce service ne fera qu'une chose, nous dire Bonjour ;-).

Menu File | New > Other..., dans la boite de dialogue New Items cliquez sur l'onglet WebServices puis double-cliquer sur l'icone Soap Server Application.

Delphi crée un WebModule (TWebModule) avec 3 composants :

  • HTTPSoapDispatcher1 (THTTPSoapDispatcher), permet de dispatcher les messages entrant vers les composants qui vont traiter les messages ;
  • HTTPSoapPascalInvoker1 (THTTPSoapPascalInvoker), permet de convertir les messages SOAP entrants et sortants ;
  • WSDLHTMLPublish1 (TWSDLHTMLPublish), permet de publier simplement les services gérés par le serveur.

(Pour plus d'informations sur ces composants vous pouvez consulter l'aide de Delphi)


Etape #2: Ecriture du WebService


Chaque service est représenté par une interface implémentée par le serveur.

Cette interface dérive de l'interface de base IInvokable.

Nous devons donc déclarer les méthodes de cette interface puis implémenter ses méthodes.

Borland offre un outil pour créer le corps des unités d'interfaçage et d'implémentation pour les utilisateurs enregistrés de Delphi 6.

Vous pouvez bien entendu écrire les 2 unités suivantes directement "à la main" si vous n'avez pas souhaité vous enregistrer.

Unité HelloIntf.pas - Définition de l'interface du service :
unit HelloIntf; interface uses Types, XSBuiltIns; type IHello = interface(IInvokable) ['{AEFF18AD-0C30-4609-BE49-B52933DCA8DE}'] function SayHello: String; stdcall; // Une méthode de notre service Hello end; implementation uses InvokeRegistry; initialization InvRegistry.RegisterInterface(TypeInfo(IHello), '', ''); end.
Unité HelloImpl.pas - Implémentation des méthodes de IHello :
unit HelloImpl; interface uses HelloIntf, InvokeRegistry; type THello = class(TInvokableClass, IHello) public function SayHello: String; stdcall; end; implementation { THello } function THello.SayHello: String; begin result := 'Hello World!'; end; initialization InvRegistry.RegisterInvokableClass(THello); end.
Rien de bien sorcier ! Vous n'avez plus qu'à compiler le projet et votre premier WebService sera créé !


Etape #3: Installation du WebService


Vous devez copier le fichier compilé dans un répertoire virtuel de votre site Web.
Ce répertoire doit avoir des droits d'éxécution.

Bien entendu la plateforme doit être de type Windows (2000 Server et IIS5 sont parfaits).

Vous pouvez afficher le fichier WSDL du WebService pour vérifier que l'appel au service fonctionne.

Il suffit simplement de lancer votre navigateur Web et d'entrer l'URL du WebService.

En local, avec ma configuration le résultat dans Internet Explorer 5 est le suivant :

Vous pouvez consulter en ligne ce même fichier : http://www.zanetti-dev.com/scripts/WSHello.exe/wsdl/IHello.

Le but de cet article est d'expliquer la structure du fichier WSDL. Je vous conseille de visiter le site www.w3.org pour les spécifications officielles de WSDL.


Etape #4: Création d'un client pour notre WebService


Créer tout simplement une application avec une seule form.

Puis dans le menu File | New > Other... sélectionnez, toujours dans la palette WebServices, WebServices Importer.

Entrer l'URL de votre WebServices (voir au dessus).

Si vous n'avez pas créé le WebService auparavant vous pouvez fabriquer le client en utilisant l'URL de mon WebService à l'adresse : http://www.zanetti-dev.com/scripts/WSHello.exe/wsdl/IHello

Cet assistant crée pour vous, une unité avec l'interface complète du WebService.

Unité Unit2.pas - Interface IHello générée par l'assistant :
Unit Unit2; interface uses Types, XSBuiltIns; type IHello = interface(IInvokable) ['{271C7063-6D09-4497-9A28-FD55F5ACE45E}'] function SayHello: WideString; stdcall; end; implementation uses InvokeRegistry; initialization InvRegistry.RegisterInterface(TypeInfo(IHello), 'urn:HelloIntf-IHello', ''); end.
Puis, placez un composant THTTPRIO (palette WebServices) sur votre form1.

Modification des propriétés de HTTPRIO1:

  • Renseignez la propriété WSDLLocation de HTTPRIO1 avec la même URL que précédement.
  • Sélectionnez le service IHelloService dans la liste de la propriété Service de HTTPRIO1.
  • Sélectionnez le port du service IHelloPort dans la liste de la propriété Port de HTTPRIO1.

Ces informations ont été fournies automatiquement par le fichier WSDL de notre WebService.

Ajoutons un bouton (Button1) sur la form1 et plaçons le code suivant dans l'évènement OnClick.

Unité Unit1.pas - Source de la form principale :
uses Unit2; // Unité de l'interface procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage((HTTPRIO1 as IHello).SayHello); end;
Compilez et exécutez le projet. Puis cliquez sur le bouton "Say Hello".

Vous devez voir apparaitre une boite de dialogue avec le message "Hello World!".

Le composant HTTPRIO1 s'est connecté au WebService lui a demandé de fournir un service (SayHello), puis a récupéré l'information.

Et tout cela sans le moindre effort ! Merci Delphi !

Notre exemple de WebService est très simple.

Vous pouvez trouver une liste de WebServices sur le site www.xmethods.com.

Ce site présente une liste de Webservice variés et gratuits que vous pouvez implémenter dans vos applications !

Vous pouvez simplement refaire l'étape 4 pour implémenter ces services.

Je suis à votre disposition pour répondre à toutes questions relatives à cet article à l'adresse a.zanetti@zanetti-dev.com.


Lidste de mes articles :
Tableau comparatif des fonctionnalités de Delphi 3 à Delphi 7
WebServices avec Delphi 6 Entreprise


Ce document est issu de http://www.developpez.com et reste la propriété exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.
Responsables bénévoles de la rubrique Delphi : Nono40 et Pedro - Contacter par EMail :
Vos questions techniques : forum d'entraide Delphi - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Copyright © 2000-2008 www.developpez.com - Legal informations.