Introduction au Web Service Résumé 4D Notes techniques

Transcription

Introduction au Web Service Résumé 4D Notes techniques
Introduction au Web Service
Par
Frank CHANG, Technical Support, 4D Inc.
Note technique 4D-200401-01-FR
Version 1
Date 1 Janvier 2004
Résumé
Ce document constitue un guide pour les débutants dans l'utilisation des Services Web avec 4ème Dimension.
Son principal objectif vise à procurer une vue d’ensemble des services Web et de la manière dont cette
technologie permet à 4D de jouer un rôle majeur dans l’intégration et la communication entre applications en
environnement distribué.
4D Notes techniques
Copyright © 1985-2004 4D SA - Tous droits réservés
Tous les efforts ont été faits pour que le contenu de cette note technique présente le maximum de fiabilité possible.
Néanmoins, les différents éléments composant cette note technique, et le cas échéant, le code, sont fournis sans garantie d'aucune sorte.
L'auteur et 4D S.A. déclinent donc toute responsabilité quant à l'utilisation qui pourrait être faite de ces éléments, tant à l'égard de leurs
utilisateurs que des tiers.
Les informations contenues dans ce document peuvent faire l'objet de modifications sans préavis et ne sauraient en aucune manière engager
4D SA. La fourniture d u logiciel décrit dans ce document est régie par u n octroi de licence dont les termes sont précisés par ailleurs dans la
licence électronique figurant sur le support d u Logiciel et de la Documentation afférente. Le logiciel et sa documentation ne peuvent être
utilisés, copiés o u reproduits sur quelque support que ce soit et de quelque manière que ce soit, que conformément aux termes de cette
licence.
Aucune partie de ce document ne peut être reproduite o u recopiée de quelque manière que ce soit, électronique o u mécanique, y compris par
photocopie, enregistrement, archivage o u tout autre procédé de stockage, de traitement et de récupération d'informations, pour d'autres buts
que l'usage personnel de l'acheteur, et ce exclusivement aux conditions contractuelles, sans la permission explicite de 4D SA.
4D, 4D Calc, 4D Draw, 4D Write, 4D Insider, 4ème Dimension ®, 4D Server, 4D Compiler ainsi que les logos 4e Dimension, sont des marques
enregistrées de 4D SA.
Windows,Windows NT,Win 32s et Microsoft sont des marques enregistrées de Microsoft Corporation.
Apple, Macintosh, Power Macintosh, LaserWriter, ImageWriter, QuickTime sont des marques enregistrées o u des noms commerciaux de
Apple Computer,Inc.
Mac2Win Software Copyright © 1990-2002 est un produit de Altura Software,Inc.
4D Write contient des éléments de "MacLink Plus file translation", un produit de DataViz, Inc,55 Corporate drive,Trumbull,CT,USA.
XTND Copyright 1992-2002 © 4D SA. Tous droits réservés.
XTND Technology Copyright 1989-2002 © Claris Corporation.. Tous droits réservés ACROBAT © Copyright 1987-2002, Secret
Commercial Adobe Systems Inc.Tous droits réservés. ACROBAT est une marque enregistrée d'Adobe Systems Inc.
Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires
respectifs.
1 / 12
Introduction aux services Web
Introduction
Au fur et à mesure que se développent les besoins d’interopérabilités et de communication entre applications,
se répand de plus en plus l’usage des services Web en réponse à ces besoins. Un service Web est un système
logiciel conçu pour procurer une interaction entre machines au travers d’un réseau. Il dispose d’une interface
décrite dans un format analysable par une machine : le WSDL (Web Service Description Language). Les autres
applications interagissent avec les services Web par l’intermédiaire de messages SOAP formatés en XML et
transportés par HTTP. SOAP (Simple Object Access Protocol) est un protocole conçu pour échanger de
l’information en environnement décentralisé et distribué et constitue un aspect fondamental des services Web.
Ce document constitue un guide pour les débutants dans l'utilisation des Services Web avec 4ème Dimension.
Son principal objectif vise à procurer une vue d’ensemble des services Web et de la manière dont cette
technologie permet à 4D de jouer un rôle majeur dans l’intégration et la communication entre applications en
environnement distribué.
Qu’est-ce qu’un service Web ?
Les services Web sont constitués de ressources logicielles ou composants pouvant être invoqués par une URI
(Uniform Resource Identifier) Internet. Les services Web respectant le standard se fondent sur XML pour
interagir, ce qui leur permet de converser à la demande en recourant à un couplage lâche. Les services Web sont
constitués d’applications modulaires, autonomes et auto-descriptives pouvant être publiées, localisées et
invoquées au travers du Web. Les services Web s’acquittent de tâches qui peuvent aller de simples requêtes
jusqu’à des processus métiers complexes. Une fois qu’un service Web est déployé, les autres applications (et
les autres services Web) peuvent le découvrir et invoquer automatiquement le service publié.
La définition d’un service Web peut également se considérer sous deux aspects :
• Aspect technologique
Les services Web accèdent à des fonctions de programmes au travers de protocoles utilisant XML et HTTP.
Ils procurent un mécanisme pour invoquer des méthodes à distance.
• Aspect métier
Un service Web publie une fonctionnalité extraite des processus métiers d’une entreprise et la rend accessible
au travers d’Internet.
Bénéfices
Interopérabilité
2 / 12
Les services Web fournissent un lien entre applications, services et machines. Des applications utilisant des
technologies différentes peuvent ainsi envoyer et recevoir des données au travers d’un protocole
compréhensible par tout le monde.
Java, Visual Basic, 4D et beaucoup d’autres applications peuvent maintenant communiquer entre elles grâce aux
services Web.
Indépendance de plate-forme
Comme les services Web utilisent XML et HTTP pour transférer des données, ils éliminent les restrictions de
dépendance de plateforme. En grande partie comme un site Web, les services Web peuvent être publiés et
consommés depuis n’importe quelle plateforme. L’information qui est envoyée et reçue par l’application est
structurée et transmise à sa destination sous forme de document XML.
Une voie aisée pour mélanger des systèmes existants avec de nouvelles applications et services.
Les services Web représentent la manière la plus efficace de partager des ressources et des fonctionnalités entre
les sociétés. Ils réduisent le temps de réalisation en permettant de tirer directement parti de services existants.
Du côté métier, les services Web accélèrent la collaboration entre sociétés, fournisseurs, partenaires et clients et
étendent la portée de votre offre.
Il peut par exemple exister un service Web pour la réservation d’hôtel, l’achat de billet d’avion et la location de
voiture.Vous pouvez alors construire une application unique qui permet à l’utilisateur de constituer son achat
ou sa réservation de voyage sous forme d'un service intégré, tout-en-un, accessible au travers d’une seule
application.
Voici un échantillon de services Web commerciaux déjà disponibles :
• Fed-EX – le service Web Fed-EX offre le suivi de vos envois.
• Amazon – le service Web d’Amazon fournit la possibilité de rechercher un livre ou un film.
• BabelFish – le service Web BabelFish propose une traduction dans différentes langues.
Vous pouvez trouver quelques exemples d’intégration de ces services Web dans des applications 4D ici :
http://www.4d.com/2003/integration.html
3 / 12
http://www.4d.fr/support/learning/databasesample2003.html#webservices
Pour une liste plus complète des services Web disponibles, consultez le site :
http://www.xmethods.net/
Réduire le temps et le coût d’implémentation
Le processus de réalisation peut prendre du temps pour certaines solutions. Beaucoup de services Web étant
déjà disponibles sur Internet, vous gagnerez du temps et de l’argent à implémenter une fonctionnalité qui existe
déjà et se trouve proposée sous la forme de service Web par une autre société.
Indépendance de langage
Les services Web peuvent être implémentés et intégrés avec quasiment n’importe quel langage.
Une amélioration globale de l’expérience du consommateur
Les services Web se dégagent du concept de web interactif pour se diriger vers le web programmable. Les
restrictions d’affichage et de navigation dues à l’HTML peuvent alors être évitées. Les développeurs peuvent
maintenant proposer une navigation plus intuitive et riche afin d'améliorer l’expérience de l’utilisateur final.
Solutions possibles
Voici quelques exemples de solutions pouvant être proposées sous la forme de service Web.
• Demande d’information sur un vol – Ce peut être un service retournant l’heure de départ et d’arrivée du vol.
• Service de réservation – (pour les hôtels, restaurants, transports). Permet à l’utilisateur de réserver une
chambre d’hôtel et d’acheter des billets de transport ou même d’effectuer une réservation pour un restaurant.
• Blogging - (Web Log) Etant donné que le texte est un type de donnée standard, vous pouvez créer un service
Web permettant à n’importe qui de partager des notes et des commentaires.
• Enchère – les enchères interactives en direct offrent la possibilité à l’utilisateur de suivre l’évolution du cours
d’un objet.
• La vente de livres, billets et d’autres produits – la vente en ligne est la clé du commerce moderne. Les services
Web peuvent aider à accélérer énormément ces processus.
• Cartographie et aide à la navigation - Étant donné qu’un service Web peut transférer la plupart des types de
données, vous pouvez maintenant créer un service qui fournit une carte sous la forme d’une image et une aide à
la navigation à la demande d’une manière particulièrement efficace.
• 4D-4D ou 4D vers d’autres applications – les services Web peuvent être utilisés à la place de plug-ins de
connectivité comme 4D Open ou 4D ODBC.
ARCHITECTURE
4 / 12
Les services Web reposent sur un petit nombre de spécifications, en voici les deux principales :
Simple Object Access Protocol (SOAP)
SOAP décrit le mécanisme de message formaté en XML qui permet le transfert d’information structurée entre
des systèmes hétérogènes. Le protocole définit qu’une enveloppe de message SOAP comprend une entête
(Header) et un corps (Body). L’entête permet d’ajouter des informations optionnelles (méta-données) relatives
au message. Le corps contient les données applicatives qui doivent être délivrées à destination. Le protocole
SOAP ajoute une couche entre l’application et le mécanisme de transport sous-jacent (habituellement HTTP)
chargé de délivrer le message. Nous présenterons les bases de SOAP un peu plus loin dans cette note technique.
Web Services Description Language (WSDL)
WSDL est une description XML des services proposés par un service Web. Il décrit les opérations et les
paramètres d’entrée et de sortie associés à ces opérations.
Un WSDL peut être utilisé pour générer automatiquement du code proxy dans 4D afin d’appeler un service
Web. L’illustration ci-dessus présente un WSDL généré par 4D. Comme vous pouvez le constater, ce fichier
décrit les méthodes publiées. La seule méthode disponible est « Reservation_LivreRequest ». Cette méthode
attend trois paramètres de type chaîne et entier, ceci étant précisé dans l'élément <message> d'attribut
« Reservation_LivreRequest ». La valeur retournée par la méthode est de type Chaîne, comme l’indique
l'élément d'attribut « Reservation_LivreResponse ».
5 / 12
Le WSDL fournit toute l’information nécessaire à un client pour appeler les services offerts par le serveur. En
utilisant 4D comme client de service Web, le WSDL sera analysé et une méthode proxy sera générée pour
réaliser l’appel spécifique vers ce service.
On appelle découverte le processus d'analyse du WSDL d'un service Web.
SOAP
Il s’agit de la spécification qui définit le format XML des messages. Un message SOAP se constitue d’un
fragment XML bien-formé inclus dans un couple d’éléments SOAP. Vous pourriez imprimer un message
SOAP, le faxer à un utilisateur distant, ou le saisir au clavier sur la machine distante sans enfreindre le standard
SOAP. Vous transmettrez plus vraisemblablement un message SOAP grâce à HTTP. Il n’existe pas d'obligation
dans le standard concernant le mode de transport d’un message : SOAP ne se préoccupe pas de la couche de
transport. Quoique le standard SOAP ne pré-suppose pas de méthode de transport, il s’agit pratiquement
toujours d’HTTP.
Les styles de service Web
Il existe deux types de service Web : style RPC (Remote Procedure Call) et DOC (Document).
Style RPC
Appel de Procédure à distance (RPC) – Ces services Web sont synchrones, les clients invoquent le service Web
en lui passant des paramètres et attendent que la méthode retourne des valeurs avant de poursuivre. Les
services Web de style RPC sont étroitement couplés car les paramètres d’entrée et de sortie sont contenus
explicitement dans le corps du message SOAP (SOAP Body). Ces paramètres sont décrits dans le WSDL.
Style Doc
Les services Web de style DOC sont faiblement couplés et orientés document. Le client envoie ses paramètres
au service sous forme de document XML, au lieu d’une liste finie de paramètres typés. À la différence des
services Web de style RPC, les services Web de style DOC ne suivent pas un schéma requête/réponse. Le
service Web reçoit un document entier, l’analyse et il peut ou non retourner un message de réponse.
Les documents XML échangés peuvent être décrits dans le WSDL.
Le corps du message SOAP en style DOC comprend un ou plusieurs documents XML. Le protocole ne définit
aucune contrainte quant à la structure que doit respecter le document, celle-ci étant totalement gérée par la
couche applicative. Les services Web de style DOC suivent un processus asynchrone.
SOAP avec 4D
A partir de la version 2003, 4ème Dimension apporte à vos applications le support direct des services Web, tant
en publication (aspect serveur) qu'en consommation (aspect client). Quoiqu'il ait été plusieurs fois fait mention
d'XML dans cette note, vous n'avez pas besoin de connaître XML pour utiliser les services Web avec 4ème
Dimension. L'interaction entre 4D et XML s'effectue en interne. Cela signifie que le développeur n'aura à gérer
les services Web qu'au plus haut niveau (Interface).
4D serveur SOAP
6 / 12
La publication d'un service Web avec 4ème Dimension s'effectue simplement en fixant des options dans les
propriétés de la méthode. Une fois qu'un service Web a été publié, il peut être trouvé et découvert par n'importe
quelle autre application.
Imaginez que vous ayez déjà la fonction suivante qui effectue une réservation de livre dans votre base de
données 4D.
C_TEXTE($1) ` Auteur
C_TEXTE($2) ` Titre
C_ENTIER LONG($3) ` Member ID
C_TEXTE($0) ` Confirmation Message
CHERCHER([Emprunteur];[Emprunteur]ID_Emprunteur=$3)
Si (Enregistrements trouves([Emprunteur]))
CHERCHER([Librairie];[Librairie]Nom_Auteur=$1;*)
CHERCHER([Librairie]; & ;[Librairie]Titre=$2;*)
CHERCHER([Librairie]; & ;[Librairie]Quantité_en_Stock>0)
Si (Enregistrements trouves([Librairie])>0)
[Librairie]Quantité_en_Stock:=[Librairie]Quantité_en_Stock-1
STOCKER ENREGISTREMENT([Librairie])
CREER ENREGISTREMENT([Réservation])
[Réservation]ID_Livre:=[Librairie]ID_Livre
[Réservation]Réservé_par:=$3
[Réservation]ID_réservation:=[Réservation]ID_Livre+Sous chaine([Réservation]Réservé_par;1;3)
STOCKER ENREGISTREMENT([Réservation])
$0:="Réservation n° "+[Réservation]ID_réservation+" faite."
Sinon
$0:="Le livre demandé n'est pas en stock. Merci de revérifier plus tard."
Fin de si
Sinon
$0:="Votre ID d'abonné n'est pas valide. Merci de réessayer."
Fin de si
Avant de publier votre méthode en tant que service Web, il est intéressant d'inclure une description indiquant la
manière d'utiliser cette méthode. La description de la méthode se rédige dans la fenêtre de commentaire de
méthode de l'Explorateur.
7 / 12
Vous pouvez rendre cette fonction disponible pour d'autres applications (Java, Excel, ColdFusion, Oracle, etc.)
en la publiant en tant que service Web. Pour autoriser le serveur à répondre à une requête de service Web,
ouvrez les préférences de la base de données et cochez "Autoriser requêtes Web Services".
Cette option n'a besoin d'être activée qu'une seule fois. L'étape suivante consiste à publier la méthode comme
service Web. Depuis l'éditeur de méthode (éditant la méthode que vous désirez rendre disponible), choisissez
les propriétés de la méthode depuis le menu Méthode. Cochez "Offert comme Web Service" pour permettre
une requête de service Web vers cette méthode. Cochez "Publiez dans WSDL" pour permettre à un client de
service Web de découvrir cette méthode.
8 / 12
La dernière étape consiste à démarrer le serveur Web pour rendre possible l'accès au travers d'Internet.
4D comme client SOAP
Souscrire à un service Web depuis 4ème Dimension se fait facilement en ayant recours à l'assistant de service
Web. Dans la plupart des cas, l'assistant se révélera suffisant pour vous permettre d'utiliser le service Web.
L'assistant de service Web permet aux développeurs 4D de découvrir rapidement un service Web et de créer une
méthode SOAP au sein de leur application 4D sans avoir besoin de se pencher sur l'analyse bas-niveau des
messages XML.
La création d'une méthode cliente de service Web sera enregistrée comme une méthode projet (cf. ci-dessous).
` proxy_Reservation_Livre
` url: 127.0.0.1/4dwsdl
` Méthode générée automatiquement par l'assistant Web Services de 4D.
`
9 / 12
` ---------------------------------------------------------------C_TEXTE($1)
C_TEXTE($2)
C_ENTIER LONG($3)
C_TEXTE($0)
FIXER PARAMETRE WEB SERVICE("FourD_arg1";$1)
FIXER PARAMETRE WEB SERVICE("FourD_arg2";$2)
FIXER PARAMETRE WEB SERVICE("FourD_arg3";$3)
APPELER WEB SERVICE("http://127.0.0.1/4DSOAP/";"A_WebService#Reservation_Livre";
"Reservation_Livre";"http://www.4d.com/namespace/default";Web Service dynamique )
Si (OK=1)
LIRE RESULTAT WEB SERVICE($0;"FourD_arg0";*) ` Libération de la mémoire après retour de la valeur.
Fin de si
Une fois qu'une méthode de service Web a été découverte et créée dans votre application 4D, vous pouvez
l'appeler de la même façon qu'une méthode projet ou qu'une commande 4D.
$result:=proxy_Reservation_Livre (vNomAuteur;vTitreLivre;vIDMembre)
Types de données supportés :
•
•
•
•
•
•
•
•
•
Booléen
Blob
Date
Entier
Entier long
Réel
Chaîne
Texte
Temps
• Tableaux
- Booléen
- Date
- Entier
- Entier long
- Réel
- Chaîne
- Texte
Pour déclarer les types des paramètres d'entrée et de sortie, vous pouvez utiliser la commande Compiler ou la
commande DECLARATION SOAP. Voici quelques exemples :
Exemple 1 : Cet exemple montre comment déclarer un paramètre d'entrée et de sortie pour une méthode grâce
aux commandes du compilateur. Dans ce cas, vous pouvez déclarer plusieurs entrées, mais vous êtes limités à
un seul retour.
` Méthode WebService :
C_TEXTE($1) ` Paramètre d'entrée - type Texte
C_BLOB($0) ` Paramètre de retour - type Blob
Exemple 2 : Cet exemple vous montre comment déclarer un paramètre d'entrée et de retour en utilisant la
commande DECLARATION SOAP. Cette commande définit une variable process 4D et la lie à un paramètre
d'entrée ou de sortie de la méthode SOAP. L'avantage de l'emploi de cette commande pour déclarer vos variables
consiste à vous permettre de disposer de plusieurs paramètres d'entrée ET de sortie.
10 / 12
` Méthode WebService :
DECLARATION SOAP(vtInput1;Est un texte;SOAP entrée;"TextInputVar1")
DECLARATION SOAP(vtInput2;Est un texte ;SOAP entrée ;"TextInputVar2")
DECLARATION SOAP(vNumOutput;Est un entier long ;SOAP sortie ;"NumberOutput")
DECLARATION SOAP(vblobOutput;Est un BLOB ;SOAP sortie ;"BlobOutput")
Note : déclarer un paramètre d'entrée avec la commande DECLARATION SOAP requiert que la variable soit déclarée au sein d'une
méthode Compiler_Web. Voici comment devrait se présenter dans la méthode Compiler_Web la variable utilisée ci-dessus :
` Méthode Compiler_Web :
C_TEXTE(vtInput1)
C_TEXTE(vtInput2)
C_ENTIER LONG(vNumOutput)
C_BLOB(vblobOutput)
SÉCURITÉ
Chaque méthode dans 4D dispose de ses propres options de publication comme service Web. Cela signifie que
la méthode ne sera pas automatiquement publiée, il faudra que vous le décidiez.
Le fait que les services Web utilisent le protocole HTTP pour transférer de l’information les rend faciles à
véhiculer au sein de tunnels au travers des pare-feux d’entreprise qui sont normalement configurés pour laisser
passer le trafic HTTP. Cependant, cette faculté entraîne une nécessité accrue de contrôle et d’authentification
des utilisateurs.
Authentification HTTP
(Nécessite le nom de l’utilisateur et le mot de passe pour chaque requête)
L’authentification HTTP procure une sécurité basique sous la forme du transfert du nom de l’utilisateur et de
son mot de passe vers le serveur. Dans 4D, cette authentification s’effectue dans la méthode base Sur
authentification Web.
Utiliser le système de mots de passe 4D
1) ne créez pas de méthode base Sur authentification Web.
2) Dans les préférences, activez Utiliser mots de passe et cochez Inclure les mots de passe 4D.
Utiliser la méthode Sur authentification Web
Voici un exemple de ce à quoi devrait ressembler la méthode Sur authentification Web.
C_TEXTE($1;$2;$3;$4;$5;$6)
C_BOOLEEN($0)
Si (Est une requete SOAP)
Si( SiUtilisateurAutorise($5;$6))
11 / 12
$0:=Vrai
Sinon
$0:=Faux
Fin de si
Fin de si
SSL (HTTPS)
Comme SOAP transmet simplement un message au-dessus d’HTTP, ce message peut être encrypté et sécurisé
par SSL. SSL constitue actuellement la méthode la plus sûre de sécurisation des transactions.
En utilisant SSL, toutes les données qui sont échangées entre le client du service Web et le serveur sont
encryptées. Cela signifie que si vous devez transmettre l’ID de l’utilisateur et son mot de passe dans une
requête SOAP, vous pouvez vous assurer que ces données seront sécurisées, tout comme l’intégralité du
message SOAP.
Supposez que vous soumettiez des informations privées comme un numéro de sécurité sociale ou de carte de
crédit. SLL vous permet de protéger cette information de toute tentative d’intrusion tout au long du transport.
12 / 12

Documents pareils