You are on page 1of 60

Module 13 : Utilisation

et création de services
Web XML
Table des matières

Vue d'ensemble 1
Leçon : Présentation des services
Web XML 2
Leçon : Appel d'un service Web XML
à l'aide de HTTP TP 13
Leçon : Utilisation d'un proxy pour
appeler un service Web XML 18
Leçon : Création d'un service Web XML 30
Contrôle des acquis 40
Atelier 13 : Utilisation et création de
services Web XML 42
Les informations contenues dans ce document, y compris les adresses URL et les références à des
sites Web Internet, pourront faire l'objet de modifications sans préavis. Sauf mention contraire, les
sociétés, les produits, les noms de domaine, les adresses de messagerie, les logos, les personnes,
les lieux et les événements utilisés dans les exemples sont fictifs et toute ressemblance avec des
sociétés, produits, noms de domaine, adresses de messagerie, logos, personnes, lieux et
événements existants ou ayant existé serait purement fortuite. L'utilisateur est tenu d'observer la
réglementation relative aux droits d'auteur applicable dans son pays. Sans limitation des droits
d'auteur, aucune partie de ce manuel ne peut être reproduite, stockée ou introduite dans un système
d'extraction, ou transmise à quelque fin ou par quelque moyen que ce soit (électronique,
mécanique, photocopie, enregistrement ou autre), sans la permission expresse et écrite de
Microsoft Corporation.

Les produits mentionnés dans ce document peuvent faire l'objet de brevets, de dépôts de brevets en
cours, de marques, de droits d'auteur ou d'autres droits de propriété intellectuelle et industrielle de
Microsoft. Sauf stipulation expresse contraire d'un contrat de licence écrit de Microsoft, la
fourniture de ce document n'a pas pour effet de vous concéder une licence sur ces brevets,
marques, droits d'auteur ou autres droits de propriété intellectuelle.

 2002 Microsoft Corporation. Tous droits réservés.

Microsoft, MS-DOS, Windows, Windows NT, Active Directory, ActiveX, BizTalk, Hotmail,
IntelliSense, Jscript, MSN, MSDN, PowerPoint, Visio, Visual Basic, Visual C++, Visual C#,
Visual J#, Visual Studio, Win32 et Windows Media sont soit des marques déposées de Microsoft
Corporation, soit des marques de Microsoft Corporation, aux États-Unis d'Amérique et/ou dans
d'autres pays.

Les autres noms de produit et de société mentionnés dans ce document sont des marques de leurs
propriétaires respectifs.
Module 13 : Utilisation et création de services Web XML 1

Vue d'ensemble

! Présentation des services Web XML


! Appel d'un service Web XML à l'aide de HTTP
! Utilisation d'un proxy pour appeler un service
Web XML
! Création d'un service Web XML

********************Document à l'usage exclusif de l'instructeur********************

Introduction Internet a contribué à améliorer les communications au sein des entreprises et


entre elles, en offrant un accès rapide aux informations. Toutefois, pour de
nombreuses organisations, naviguer dans des pages pilotées par des données ne
satisfait pas toujours leurs besoins professionnels. Des sites Web
programmables qui relient directement des organisations, des applications et
des services répondraient mieux à leurs besoins. C'est le service Web XML
(Extensible Markup Language) qui joue ce rôle de liaison directe des
applications. En liant vos sites et applications Web aux services Web XML,
vous avez la possibilité de développer la fonctionnalité que votre site Web
propose aux utilisateurs.
Dans ce module, vous apprendrez à appeler directement un service Web XML à
l'aide d'un navigateur et d'un proxy à partir d'un formulaire Web. Vous
apprendrez également à créer et à publier des services Web XML avec
Microsoft® Visual Studio® .NET.
Objectifs À la fin de ce module, vous serez à même d'effectuer les tâches suivantes :
! décrire l'objectif, et le processus sous-jacent, d'appel d'un service Web XML
à partir d'un formulaire Web ;
! appeler directement un service Web XML dans un navigateur à l'aide du
protocole HTTP ;
! créer un proxy de référence Web pour une méthode de service Web XML et
appeler cette méthode à partir d'un formulaire Web ;
! utiliser les modèles de Visual Studio .NET pour créer un service Web XML.
2 Module 13 : Utilisation et création de services Web XML

Leçon : Présentation des services Web XML

! Qu'est-ce qu'un service Web XML ?


! Utilité des services Web XML
! Recherche d'un service Web XML
! Présentation multimédia : Modèle d'exécution
des services Web XML

********************Document à l'usage exclusif de l'instructeur********************

Introduction L'un des enjeux auquel vous pouvez être confronté lors de la création de sites
Web riches en fonctionnalités est l'intégration d'applications. Il est en effet
fréquent d'avoir à regrouper de nombreuses applications dans une solution
unique et conviviale. Le problème pour y parvenir est que les applications à
réunir se trouvent souvent sur une multitude de plates-formes exécutant
chacune des systèmes d'exploitation distincts. En outre, les applications sont
souvent écrites dans des langages de programmation différents.
Les services Web offrent un modèle normalisé simple et souple pour relier des
applications entre elles via Internet. Ils vous permettent également de tirer parti
de l'infrastructure Internet existante et de lier des applications, quelles que
soient les plates-formes, les langages de programmation ou les modèles d'objets
qui ont servi à les implémenter.
Dans cette leçon, vous découvrirez l'objectif, et le processus sous-jacent,
d'appel d'un service Web XML à partir d'un formulaire Web.
Objectifs de la leçon À la fin de cette leçon, vous serez à même d'effectuer les tâches suivantes :
! définir un service Web XML ;
! expliquer l'utilité des services Web XML pour les développeurs
d'applications Web ;
! décrire le moyen de trouver les services Web XML existants ;
! identifier le processus d'intégration des services Web XML dans les sites
Web.
Module 13 : Utilisation et création de services Web XML 3

Qu'est-ce qu'un service Web XML ?

! Logique programmable accessible par


l'intermédiaire des protocoles Web standard
" Permet aux applications d'envoyer et de
recevoir des informations sur Internet
" Indépendant des langages, des protocoles et
des plates-formes
" Architecture sans état
" Peut être asynchrone
! Basé sur une norme W3C évolutive

********************Document à l'usage exclusif de l'instructeur********************

Introduction À l'instar des composants, les services Web XML représentent des
fonctionnalités de boîte noire que les utilisateurs peuvent utiliser pour ajouter
des fonctionnalités dans un formulaire Web, des applications Microsoft
Windows®, voire un autre service Web XML, sans se préoccuper de la façon
dont le service de support doit être implémenté.
Communication entre Les services Web XML sont conçus pour interagir directement avec d'autres
deux applications sur applications sur Internet. Ils n'ont donc pas d'interface utilisateur. En revanche,
Internet ils disposent d'interfaces standard définies, appelées contrats, qui décrivent les
services fournis.
Un service Web XML peut être utilisé en interne par une seule application ou
en externe par de nombreuses applications qui y accèdent via Internet.
Indépendant des Il est possible d'écrire une connexion à un service Web XML dans l'importe
langages quel langage de programmation basé sur Microsoft .NET. Du fait de cette
souplesse, il n'est pas nécessaire d'apprendre un nouveau langage à chaque
utilisation d'un service Web XML.
Indépendant des À la différence des technologies actuelles fondées sur les composants, les
protocoles services Web XML n'utilisent pas de protocoles spécifiques à certains modèles
objet comme DCOM (Distributed Component Object Model). Ils
communiquent avec des protocoles Web et des formats de données standard tels
que HTTP, XML et SOAP (Simple Object Access Protocol). Tout serveur
prenant en charge ces standards Web peut accéder aux services Web XML ou
les héberger.
Indépendant des Dans la mesure où les services Web XML sont accessibles via une interface
plates-formes standard, ils permettent à des systèmes distincts de communiquer entre eux. Les
serveurs prenant en charge les formulaires Web prennent également en charge
les services Web XML.
4 Module 13 : Utilisation et création de services Web XML

Architecture sans état Le modèle de service Web XML repose sur une architecture de services sans
état. Les architectures sans état sont généralement plus évolutives que les
architectures avec état. Chaque réponse provenant du service Web XML est un
nouvel objet avec un nouvel état. À moins que les services Web XML utilisent
les services de gestion d'état Microsoft ASP.NET pour conserver l'état entre les
demandes, l'état de la réponse est perdu sur le serveur de services Web XML.

Remarque Pour plus d'informations sur l'enregistrement de l'état, consultez le


module 14, « Gestion d'état » du cours 2333A, Développement d'applications
Web Microsoft ASP.NET à l'aide de Visual Studio .NET.

Asynchrone Les services Web XML sont asynchrones car la demande issue de l'application
cliente et la réponse issue du service Web XML sont des enveloppes SOAP
uniques qui ne nécessitent pas de connexion partagée. Les interactions entre
l'application cliente et le service Web XML pourront être subdivisées par la
suite en une première demande/réponse pour démarrer la méthode Web XML,
puis en une seconde pour collecter les résultats. La communication asynchrone
permet à la fois à l'application appelante et au service Web XML de poursuivre
le traitement pendant l'interaction.
Services Web XML Les services Web XML reposent sur un standard du W3C (World Wide Web
basés sur le W3C Consortium) évolutif. Leurs fonctionnalités génériques sont donc fixées, ce qui
n'empêche pas l'ajout éventuel de nouvelles fonctionnalités par la suite.

Remarque Pour plus d'informations sur le standard relatif au service


Web XML du W3C, consultez le site Web officiel du W3C à l'adresse
http://www.w3.org/dom.
Module 13 : Utilisation et création de services Web XML 5

Utilité des services Web XML

Site de voyage de
Northwind Traders
ServiceWeb
ServiceWeb XML
XML
Choisissez votre Redmond Météorologie
Météorologie
destination :

Bulletins
météorologiques :
Pluie

Internet Taux
Taux de
de change
change
Service
Service Web
Web XML
XML
Taux de change : $1.56

Nous vous proposons un vol


au tarif spécial de :
$1 999.98
Service
Service Web
Web XML
XML
Tarif
Tarif aérien
aérien
Base
Base de
de données
données
Tarif
Tarif aérien
aérien

********************Document à l'usage exclusif de l'instructeur********************

Introduction Les services Web XML permettent de partager des fonctionnalités et une
logique de programmation avec de nombreuses applications Web et Windows
et des applications s'exécutant sur d'autres plates-formes. Un service Web XML
est en fait un composant pouvant exposer ses méthodes sur le Web.
Les services Web XML reposent également sur les standards du W3C. Ils
reposent sur des protocoles Web standard et offrent la prise en charge des outils
disponibles dans Visual Studio .NET. Avec Visual Studio .NET, les services
Web XML sont extrêmement simples à développer et à utiliser.
Ajout de services On peut imaginer un nombre infini de services Web XML permettant d'ajouter
Web XML dans des des fonctionnalités dans vos applications Web. Voici quelques suggestions dans
applications Web le tableau ci-dessous.
Service Web XML Fonctionnalités
Services Fournit l'authentification des utilisateurs.
d'authentification Par exemple, Microsoft Passport.
Bulletins Donne les dernières prévisions météorologiques pour les
météorologiques zones sélectionnées.
Par exemple, un site Web pourrait publier des bulletins
météorologiques locaux pour une région ou une ville donnée
en utilisant un service météo Web XML.
Taux de change Fournit des taux de change actualisés dans toutes les
devises.
Par exemple, un site Web de voyages pourrait proposer des
taux de change pour des destinations de vacances
potentielles établies d'après des profils utilisateur, en
utilisant un service Web XML de conversion monétaire.
6 Module 13 : Utilisation et création de services Web XML

(suite)
Service Web XML Fonctionnalités
Tarifs aériens Fournit des tarifs aériens mis à jour provenant d'une ou de
plusieurs compagnies aériennes.
Par exemple, un site Web de voyages pourrait proposer
automatiquement des prix dégriffés venant de compagnies
aériennes sélectionnées en utilisant un service Web XML de
tarifs aériens.
Cotations boursières Fournit les cotations boursières actualisées.
Par exemple, une entreprise pourrait publier ses propres
cotations sur son site Web en utilisant un service Web XML
de cotations en bourse.
Services de partenariat Fournit aux partenaires professionnels la possibilité
d'accéder à vos services à partir de leur site Web.
Par exemple, des sites d'organisation de conférences peuvent
proposer des services de réservation d'hôtels.
Actualités Fournit des informations mises à jour.
Par exemple, une entreprise pourrait publier sur son site
Web les nouveautés de son secteur d'activité en utilisant un
service Web XML de journaux.
Suivi des commandes Fournit l'état des commandes en reliant des systèmes ERP
(Enterprise Resource Management) existants à des sites
Web internes et externes.
Par exemple, l'association des résultats issus des
applications ERP internes avec des services Web XML de
suivi de commandes des fournisseurs et des sociétés de
transport donnerait à la clientèle une vue globale de l'état de
ses commandes.
Exemple de service L'illustration ci-dessus montre un site Web de voyages fictif qui s'appuie sur
Web XML des services Web XML pour offrir plusieurs prestations. Dans ce scénario,
l'utilisateur saisit le nom d'une ville de destination que le formulaire Web utilise
ensuite comme paramètre pour appeler plusieurs services Web XML. Du point
de vue de l'utilisateur, ce site Web de voyages est particulièrement riche. Du
point de vue du code, il est bien plus qu'une interface graphique regroupant
plusieurs services Web XML provenant d'entreprises distinctes.
Grâce aux services Web XML, le site Web de voyages est intéressant tant pour
le site Web consommateur que pour les services Web XML :
! Avantages pour le site Web :
• Les applications auxquelles l'agence de voyages a accès ne sont pas
limitées par les compétences, la disponibilité ou l'expertise des
développeurs de l'agence.
• L'agence de voyages ne prend pas en charge les coûts de maintenance
élevés liés à la tenue à jour des données comme les bulletins
météorologiques ou les taux de change.
• Les services Web XML utilisant Internet, l'agence de voyages n'a pas
besoin de créer ou de maintenir des connexions dédiées pour proposer le
service.
Module 13 : Utilisation et création de services Web XML 7

• Les services Web XML sont indépendants des plates-formes, des


protocoles et des langages. Par conséquent, les développeurs de l'agence
de voyages ne sont pas tenus de connaître les modalités de génération et
de déploiement du service Web XML pour pouvoir l'utiliser.
• Le site Web peut facturer aux fournisseurs de services Web XML le
droit d'offrir des services à la base cliente du site Web de l'agence de
voyages.
! Avantages pour les fournisseurs de services Web XML :
La création d'applications en tant que services Web XML ainsi que la mise à
jour d'applications existantes avec des services Web XML sont très
intéressantes pour les fournisseurs de services :
• Le fournisseur de services Web XML peut facturer au site Web
l'utilisation du service.
• En offrant une application (telle qu'un convertisseur de taux de change)
comme un service Web XML, une banque peut accéder à la base cliente
de nombreuses agences de voyages.
• Le fournisseur de services Web XML ne prend pas en charge le coût
élevé de développement et de commercialisation d'un site Web sur le
marché.
• Comme les services Web XML utilisent Internet pour communiquer, les
fournisseurs de services n'ont pas besoin de connexions dédiées
onéreuses pour proposer votre service.
• Les services Web XML sont indépendants des langages, des protocoles
et des plates-formes. Une très large palette d'applications peut donc les
utiliser.
8 Module 13 : Utilisation et création de services Web XML

Recherche d'un service Web XML

11 Publication de l'URL d'un service Web XML


et description

22 Découverte d'un service Web XML UDDI


33 Recherche de l'URL d'un service Web XML
44 Description de Read .wsdl

55 Liaison d'un service Web XML au Proxy 22 11


66 Appel d'un
service Web 33 .disco
Formulaire
XML à partir du Web
formulaire Web 44 .wsdl
par Proxy
55 66
Proxy
Proxy Service Web

********************Document à l'usage exclusif de l'instructeur********************

Introduction Vous pouvez trouver des services Web XML existants pour enrichir votre site
Web en utilisant un ou plusieurs services de découverte. Ces services évolutifs
changent rapidement à mesure que les services Web XML trouvent une
légitimité dans la communauté Internet.
Recherche d'un service Le processus de recherche et de liaison d'un service Web XML est le suivant :
Web XML
1. Les développeurs de services Web XML publient les descriptions et les
emplacements Web de leurs services Web XML sur un site Web UDDI
(Universal Description, Discovery, and Integration).
2. Vous interrogez le site Web UDDI pour trouver les services Web XML qui
vous intéressent. Le site Web UDDI fournit une liste de services Web XML
comprenant les URL des documents DISCO (Discovery) relatifs à ces
services.
3. Vous sélectionnez un service Web XML et accédez à un document DISCO
pour repérer l'URL correspondante et les URL associées des
documents WSDL (Web Services Description Language).
4. Vous générez un objet proxy à partir du document WSDL.
Une classe proxy est du code qui ressemble exactement à la classe qu'elle
est censée représenter, mais qui ne contient pas la logique de l'application.
Elle comprend à la place la logique du transport et le marshaling. Un objet
proxy permet à un client d'accéder à un service Web XML comme s'il était
un objet COM local.
5. Vous utilisez l'objet proxy pour lier le service Web XML.
6. Vous appelez le service Web XML à partir du formulaire Web à l'aide du
proxy.
Module 13 : Utilisation et création de services Web XML 9

UDDI La spécification UDDI définit une méthode de publication et d'obtention


d'informations sur les services Web XML et les entreprises qui les fournissent.
Les entreprises enregistrent individuellement les informations relatives aux
services Web XML qu'elles proposent ailleurs. Une fois enregistrées, les
données sont accessibles à toute personne souhaitant découvrir les services
Web XML exposés par une entreprise donnée.

Remarque Pour plus d'informations sur UDDI, consultez le site Web UDDI à
l'adresse http://www.uddi.org ou le site Web UDDI Microsoft à l'adresse
http://uddi.microsoft.com.

Fichiers DISCO Les fichiers de découverte (DISCO) regroupent des services communs sur un
serveur Web. Les fichiers DISCO .disco et .vsdisco sont des fichiers XML
contenant des liens sous forme d'URL vers des ressources qui fournissent des
informations de découverte sur un service Web XML. Ils permettent d'obtenir
par programme des services Web XML. Les exemples suivants montrent la
différence entre des fichiers de découverte statiques et dynamiques :
! fichiers .disco :
documents XML statiques qui contiennent des liens vers d'autres ressources
décrivant des services Web XML. Ils sont générés automatiquement
lorsqu'un utilisateur accède au service Web XML à l'aide d'une URL
contenant ?DISCO dans la chaîne de requête.
Le code suivant montre un exemple de fichier .disco :
<?xml version="1.0"?>
<disco:discovery
xmlns:disco="http://schemas.xmlsoap.org/disco"
xmlns:wsdl="http://schemas.xmlsoap.org/disco/wsdl">
<wsdl:contractRef
ref="http://MyWebServer/UserName.asmx?WSDL"/>
</disco:discovery>

! fichiers .vsdisco :
documents de découverte dynamiques que Visual Studio .NET génère
automatiquement lors de la phase de développement d'un service
Web XML.
Un fichier .vsdisco est un fichier XML doté d'un nœud racine appelé
<dynamicDiscovery>. Ce nœud peut contenir des nœuds <exclude>.
Chaque nœud <exclude> contient un chemin d'accès que le processus de
découverte dynamique ne doit pas rechercher.

Attention Pour garder le contrôle sur ce que les clients des services
Web XML peuvent découvrir, utilisez la découverte dynamique uniquement
sur les serveurs de développement Web.
10 Module 13 : Utilisation et création de services Web XML

Le code suivant montre un exemple de fichier vs.disco :


<?xml version="1.0" encoding="utf-8"?>
<dynamicDiscovery xmlns="urn:schemas-
dynamicdiscovery:disco.2000-03-17">
<exclude path="_vti_cnf" />
<exclude path="_vti_pvt" />
<exclude path="_vti_log" />
<exclude path="_vti_script" />
<exclude path="_vti_txt" />
<exclude path="Web References" />
</dynamicDiscovery>

Fichiers WSDL Un fichier WSDL définit la grammaire XML qui permet de communiquer avec
un service Web XML. Visual Studio .NET s'en sert pour générer des objets
proxy afin de communiquer avec un service Web XML.
Les fichiers WSDL contiennent les informations suivantes sur un service
Web XML :
! emplacement de l'URL ;
! méthodes et propriétés de service Web XML ;
! types de données utilisés ;
! protocoles de communication.

Remarque Pour plus d'informations sur les fichiers DISCO et WSDL,


consultez la section « Découverte des services Web XML » dans la
documentation Visual Studio .NET.
Module 13 : Utilisation et création de services Web XML 11

Présentation multimédia : Modèle d'exécution des services


Web XML

********************Document à l'usage exclusif de l'instructeur********************

Introduction Dans cette animation, vous découvrirez comment les services Web XML
fonctionnent en interaction avec des navigateurs et d'autres formulaires Web.
Modèle du service
Web XML
! Pour créer un service Web XML
1. Créez le fichier .asmx comprenant l'espace de noms, les classes, les
propriétés et les méthodes Web de service Web XML.
2. Déclarez les méthodes en tant que méthodes de service Web XML
accessibles sur Internet.
Accès à partir d'un L'accès direct à un service Web XML implique qu'un utilisateur envoie la
navigateur demande d'URL au format HTTP à l'aide d'un navigateur. Ce service répond
avec une liste des méthodes et des propriétés conçues au format XML.
L'utilisateur a ensuite la possibilité d'envoyer directement une demande au
service Web XML et de recevoir les résultats au format XML.
Si la procédure d'accès direct est déconseillée dans des conditions normales
d'utilisation, elle permet toutefois de tester la fonctionnalité du service
Web XML.

! Pour accéder directement à un service Web XML


1. Appelez le service Web XML à partir du navigateur pour déterminer les
méthodes disponibles.
Vous accédez alors à la page de description HTML qui répertorie les
méthodes comprises dans le service Web XML. Le protocole utilisé ici est
HTTP, les données étant retournées au format XML.
2. Appelez une méthode de service Web XML à partir du navigateur.
Le protocole utilisé est HTTP, les données étant retournées au format XML.
12 Module 13 : Utilisation et création de services Web XML

Accès à partir d'un Vous pouvez également appeler des méthodes de service Web XML en utilisant
formulaire Web du code dans un formulaire Web.

! Pour appeler un service Web XML à partir d'un formulaire Web


1. Identifiez les services Web XML disponibles.
Il faut pour cela trouver l'URL du service Web XML.
2. Créez une référence Web (WebReference) au service Web XML.
Cette opération crée un fichier .vb ou .cs contenant le code source du proxy
tel qu'il a été créé par Visual Studio .NET.
3. Compilez le projet qui, à son tour, compile le proxy.
Le proxy est compilé dans l'assembly de l'application Web figurant dans le
dossier /bin.
4. Ouvrez un formulaire Web.
5. Créez une instance de la référence Web.
6. Appelez les méthodes du service Web XML.
7. Utilisez les données retournées par le service Web XML.
Module 13 : Utilisation et création de services Web XML 13

Leçon : Appel d'un service Web XML à l'aide de HTTP

! Appel d'un service Web XML à l'aide de HTTP


! Application pratique : Appel d'un service Web
XML à l'aide de HTTP

********************Document à l'usage exclusif de l'instructeur********************

Introduction Dans cette leçon, vous apprendrez à accéder directement à un service


Web XML dans un navigateur à l'aide du protocole HTTP-GET. Ce processus,
appelé accès direct, est généralement utilisé par les développeurs au moment du
design pour identifier et tester les services Web XML. Grâce à l'accès direct, les
développeurs affichent les méthodes, les propriétés et le résultat d'un service
Web XML dans un environnement qui leur est familier.
Objectifs de la leçon À la fin de cette leçon, vous serez à même d'effectuer les tâches suivantes :
! appeler un service Web XML dans un navigateur à l'aide de l'accès direct
via HTTP-GET ;
! identifier les méthodes Web disponibles à partir d'un service Web XML ;
! appeler des méthodes Web à partir d'un service Web XML à l'aide de l'accès
direct via HTTP_GET, et afficher la réponse.
14 Module 13 : Utilisation et création de services Web XML

Appel d'un service Web XML à l'aide de HTTP

11 Accès à l'URL du service Web XML


22 Sélection d'une
méthode de
service
Web XML
33 Appel de la
méthode
du service
Web XML
44 Affichage de
la réponse
au format
XML

********************Document à l'usage exclusif de l'instructeur********************

Introduction Lorsque vous accédez directement à un service Web XML avec un navigateur,
vous arrivez d'abord dans la page de description HTML
DefaultWsdlHelpGenerator.aspx. Cette page permet de sélectionner les
méthodes de service Web XML disponibles et d'appeler la méthode au moyen
de paramètres. Vous recevrez ensuite une réponse au format XML.
Pour accéder à un service Web XML, vous pouvez également recourir au
protocole HTTP-POST. Vous n'accéderez pas à la page par défaut,
DefaultWsdlHelpGenerator.aspx, mais la réponse finale émanant du service
Web XML sera identique à celle d'une requête HTTP-GET.
Accès à l'URL du Lorsque vous avez trouvé un service Web XML sur UDDI, utilisez l'URL
service Web XML .asmx pour accéder à la page de description HTML. Cette page HTML donne
des informations relatives au type de service Web proposé, les méthodes Web
disponibles que ce service contient, les paramètres de la méthode Web ainsi que
les réponses. Elle permet en outre de tester les fonctionnalités du service
Web XML.
L'illustration suivante montre la vue du navigateur du service Web XML
Stocks qui est utilisé dans les démonstrations de ce module.
Module 13 : Utilisation et création de services Web XML 15

Sélection d'une méthode Lorsque vous accédez à la page de description HTML d'un service Web XML,
de service Web XML le navigateur affiche les méthodes de service Web XML disponibles. Cliquez
sur une méthode Web afin de consulter ses paramètres.
L'illustration suivante montre la vue du navigateur résultant de la sélection de la
méthode Web GetRating du service Web XML Stocks.

Vous pouvez également cliquer sur le lien Description du service, situé en


haut de la page de description HTML, pour consulter le contrat WSDL qui
comprend une description XML du service Web XML et de son contenu.
Appel de la méthode du Pour appeler une méthode Web, complétez le formulaire et cliquez sur
service Web XML Appeler. Le formulaire Web passe le nom de la méthode, les paramètres requis
et les valeurs de paramètres à l'URL du service Web XML.
Affichage de la réponse Les services Web XML retournent toujours des données au format XML.
au format XML L'illustration suivante montre la vue du navigateur résultant de l'appel du
service Web XML Stocks à l'aide du paramètre Contoso.
16 Module 13 : Utilisation et création de services Web XML

Application pratique : Appel d'un service Web XML à l'aide de HTTP

Les stagiaires devront :


! Saisir l'URL d'un service Web XML sur
l'ordinateur de l'instructeur
! Sélectionner la méthode de service
Web XML à appeler
! Entrer les valeurs des paramètres
! Afficher le code XML renvoyé
Durée approximative : 5 minutes

********************Document à l'usage exclusif de l'instructeur********************

Introduction Dans cette application pratique, vous accéderez à un service Web XML sur
l'ordinateur de l'instructeur et testerez les trois méthodes Web disponibles.

! Pour accéder à ce service Web XML


1. Ouvrez http://ordinateur_instructeur/Mod13VB/WeatherService.asmx
ou http://ordinateur_instructeur/Mod13CS/WeatherService.asmx dans
un navigateur.
Appel de la méthode 2. Cliquez sur WeatherByCity.
Web WeatherByCity
3. Dans le champ City, tapez le nom d'une ville, telle que Seattle, dont vous
souhaitez connaître le bulletin météorologique du lendemain.
4. Cliquez sur Appeler.
Entrez la réponse XML sur les lignes suivantes.

____________________________________________________________

____________________________________________________________

5. Appelez de nouveau la méthode Web WeatherByCity, cette fois en passant


le nom d'une autre ville, Paris par exemple, en tant que paramètre dans le
champ City.
Notez la réponse XML.
Notez également qu'avec les villes autres que Seattle, vous recevrez un
bulletin météorologique aléatoire portant sur sun (ensoleillé), cloudy
(nuageux) ou rain (pluvieux). Lorsque Seattle est indiqué dans le champ
City, vous recevrez toujours le bulletin météorologique correspondant à
sun.
Module 13 : Utilisation et création de services Web XML 17

Appel de la méthode 6. Revenez dans la page introductive de http://ordinateur_instructeur/


Web TemperatureByCity Mod13VB/WeatherService.asmx ou http://ordinateur_instructeur/
Mod13CS/WeatherService.asmx.
7. Cliquez sur TemperatureByCity.
8. Dans le champ City, tapez le nom d'une ville dont vous souhaitez connaître
la température.
9. Cliquez sur Appeler.
La valeur résultat sera une valeur aléatoire comprise entre 31 et 60 degrés
Fahrenheit (de 0 à 16 degrés Celsius environ).
Appel de la méthode 10. Revenez dans la page introductive de http://ordinateur_instructeur/
Web TravelAdviceByCity Mod13VB/WeatherService.asmx ou http://ordinateur_instructeur/
Mod13CS/WeatherService.asmx.
11. Cliquez sur TravelAdviceByCity.
12. Dans le champ City, tapez le nom d'une ville, telle que Seattle, pour
laquelle vous souhaitez des conseils de voyage.
13. Cliquez sur Appeler.
Notez la réponse XML.
14. Appelez de nouveau la méthode Web TravelAdviceByCity, cette fois en
passant le nom d'une autre ville, Paris par exemple, en tant que paramètre
dans le champ City.
15. Notez la réponse XML.
18 Module 13 : Utilisation et création de services Web XML

Leçon : Utilisation d'un proxy pour appeler un service


Web XML

! Utilisation de serveurs proxy pour appeler des


services Web XML
! Utilisation d'un proxy pour appeler un service
Web XML
! Application pratique dirigée : Utilisation d'un
proxy pour appeler un service Web XML
! Gestion des erreurs du service Web XML
! Démonstration : Test de la disponibilité d'un
service Web XML

********************Document à l'usage exclusif de l'instructeur********************

Introduction Pour appeler par programme un service Web XML à partir d'un formulaire
Web, vous devez créer un proxy pour traiter l'appel. Dans cette leçon, vous
apprendrez à créer un proxy de référence Web pour une méthode de service
Web XML et appellerez la méthode Web à partir d'un formulaire Web.
Objectifs de la leçon À la fin de cette leçon, vous serez à même d'effectuer les tâches suivantes :
! décrire comment un proxy appelle un service Web XML ;
! créer un proxy pour appeler un service Web XML ;
! incorporer le contenu d'un service Web XML dans un site Web ;
! gérer les erreurs à partir d'un service Web XML ;
! tester la disponibilité d'un service Web XML.
Module 13 : Utilisation et création de services Web XML 19

Utilisation de serveurs proxy pour appeler des services Web XML


! Présentation identique à celle de la classe d'origine,
mais ne contient pas la logique d'application
! Utilisation de SOAP pour interagir avec le service
Web XML
! Créé à partir du fichier ServiceName.asmx.wsdl
! Ajout de membres pour gérer les interactions avec
le service Web XML et prise en charge des appels
asynchrones

Formulaire
Web Internet Service Web
Web
XML
XML
SOAP
Proxy
Proxy

********************Document à l'usage exclusif de l'instructeur********************

Introduction Pour appeler un service Web XML à partir d'un formulaire Web, vous devrez
créer une référence Web au service dans votre projet d'application Web. Cette
référence crée l'objet proxy qui permet de communiquer avec le service
Web XML via SOAP.
Qu'est-ce qu'un proxy ? Une classe proxy est du code qui ressemble exactement à la classe qu'elle est
censée représenter, mais qui ne contient pas la logique de l'application. Elle
comprend à la place la logique du transport et le marshaling. Un objet proxy
permet à un client d'accéder à un service Web XML comme s'il était un objet
COM local. Le proxy doit se trouver sur l'ordinateur sur lequel l'application
Web est installée.
Lorsque vous ajoutez une référence Web à un service Web XML,
Visual Studio .NET crée automatiquement un proxy nommé reference.vb ou
reference.cs. Lorsque vous créez la référence Web, Visual Studio .NET crée le
fichier de référence qui est en fait du code proxy.
20 Module 13 : Utilisation et création de services Web XML

Interaction avec SOAP Les serveurs proxy et les services Web XML fonctionnent en interaction via
SOAP, un protocole XML d'échange d'informations typées et structurées.

Remarque Pour afficher un aperçu des messages SOAP provenant d'un service
Web XML, accédez directement à l'URL du service, puis examinez le code qui
s'inscrit dans la page de description HTML.

Le processus permettant d'accéder à un service Web XML à l'aide d'un proxy


est le suivant :
1. L'utilisateur envoie une demande d'URL à un formulaire Web qui appelle un
service Web XML.
2. Le formulaire Web instancie le proxy qui appelle ensuite le service
Web XML à l'aide de SOAP.
Voici une demande SOAP pour la méthode Web GetRating d'un service
Web XML Stocks qui passe l'argument Contoso :
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-
instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetRating xmlns="http://tempuri.org/">
<Ticker>Contoso</Ticker>
</GetRating>
</soap:Body>
</soap:Envelope>

3. Le service Web XML envoie une réponse au proxy à l'aide de SOAP.


Voici la réponse SOAP émanant du service Web XML GetRating :
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/
XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/
XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/
envelope/">
<soap:Body>
<GetRatingResponse xmlns="http://tempuri.org/">
<GetRatingResult>Buy</GetRatingResult>
</GetRatingResponse>
</soap:Body>
</soap:Envelope>

4. Le formulaire Web ASP.NET utilise la réponse du service Web XML.


Proxy créé à partir du Visual Studio .NET crée automatiquement un proxy lorsque vous sélectionnez
fichier .asmx.wsdl l'option Ajouter une référence Web dans le menu Projet et entrez l'URL du
service Web XML. Le fichier .asmx.wsdl qui se trouve sur le serveur du service
Web XML permet d'identifier les méthodes et paramètres Web disponibles du
service Web XML.
Module 13 : Utilisation et création de services Web XML 21

Ajoute des membres Lorsque vous créez un proxy à l'aide de Visual Studio .NET, un certain nombre
pour gérer les de méthodes et de propriétés prenant en charge l'accès par programme au
interactions avec le service Web XML sont disponibles. Voici quelques-uns des membres mis à la
service Web XML et la disposition d'un proxy :
prise en charge des
appels asynchrones ! Les membres intégrés au proxy.
L'infrastructure permettant d'effectuer des appels asynchrones d'un
formulaire Web vers un service Web XML est intégrée à la classe proxy que
Visual Studio .NET crée automatiquement lors de l'ajout d'une référence
Web. Les méthodes BeginNomMéthodeWeb et EndNomMéthodeWeb sont
créées automatiquement dans le proxy pour chaque méthode Web du service
Web XML :
• BeginNomMéthodeWeb
La méthode Begin démarre une communication asynchrone avec une
méthode de service Web XML NomMéthodeWeb.
• EndNomMéthodeWeb
La méthode End met fin à une communication asynchrone avec une
méthode de service Web XML NomMéthodeWeb, puis récupère la
réponse complète de la méthode.
Par exemple, la création d'une référence Web au service Web XML Stocks
crée un proxy comportant deux méthodes supplémentaires :
BeginGetRating et EndGetRating.

Remarque Pour plus d'informations sur l'appel asynchrone d'un service


Web XML, consultez la section « Communication asynchrone avec les
services Web XML » dans la documentation Visual Studio .NET.

! Les membres hérités de SoapHttpClientProtocol.


Un proxy hérite d'un certain nombre de méthodes et de propriétés provenant
de la classe System.Web.Services.Protocols.SoapHttpClientProtocol,
dont l'objectif est de gérer les interactions avec le service Web XML. Voici
quelques-unes des propriétés du proxy :
• Timeout
La propriété Timeout indique la durée, en millisecondes, pendant
laquelle un client du service Web XML attend la réalisation d'une
demande de service Web XML synchrone.
• Url
La propriété Url obtient ou définit l'URL de base du service Web XML
que le client demande.

Remarque Pour plus d'informations sur les membres de la classe


SoapHttpClientProtocol, consultez la section « SoapHttpClientProtocol,
membres » dans la documentation Visual Studio .NET.
22 Module 13 : Utilisation et création de services Web XML

Utilisation d'un proxy pour appeler un service Web XML

11 Création d'une référence Web pour le service


Web XML
22 Création d'une instance du service Web XML
33 Appel des méthodes Web du service Web XML
44 Génération de l'application Web ASP.NET

Sub
Sub Button1_Click(s
Button1_Click(s As
As Object,
Object, ee As
As EventArgs)...
EventArgs)...
Dim
Dim ProxyGetStocks
ProxyGetStocks As As New
New __
GetStocks.localhost.Service1()
GetStocks.localhost.Service1()
lblResults.Text
lblResults.Text == __
ProxyGetStocks.GetRating("Contoso")
ProxyGetStocks.GetRating("Contoso")
End
End Sub
Sub

Exemple de code C#
********************Document à l'usage exclusif de l'instructeur********************

Introduction Pour utiliser un service Web XML à partir d'un formulaire Web créé dans
Visual Studio .NET, vous devez au préalable identifier l'URL du service
Web XML, puis créer une référence Web.

! Pour créer un proxy afin d'appeler un service Web XML à partir d'un
formulaire Web
1. Ouvrez l'application Web et le formulaire Web à partir desquels vous
appellerez le service Web XML, puis créez une référence Web pour le
service Web XML :
a. Dans le menu Projet, cliquez sur Ajouter une référence Web.
b. Dans le champ Adresse de la boîte de dialogue Ajouter une référence
Web, tapez l'URL du service Web XML auquel vous accédez, appuyez
sur ENTRÉE, puis cliquez sur Ajouter la référence.
Visual Studio .NET crée une référence Web au service Web XML qui
comporte le nom du serveur hébergeant le service Web XML.
Si, par exemple, vous créez une référence Web au fichier
http://localhost/Stocks/Service1.asmx, Visual Studio .NET nommera la
référence Web localhost par défaut.

Remarque Visual Studio .NET est optimisé pour les services Web XML
qui sont créés par Visual Studio .NET. Il se peut qu'ASP.NET ne puisse pas
lire les fichiers .wsdl créés par d'autres programmes, si ces derniers
contiennent des chaînes qui s'achèvent par des valeurs null.
Module 13 : Utilisation et création de services Web XML 23

2. Dans une procédure d'événement du formulaire Web, créez une instance du


proxy du service Web XML.
Par exemple, si vous disposez d'un bouton pour appeler la méthode
GetRating du service Web XML Stocks, utilisez le code suivant dans la
procédure d'événement Click :
Visual Basic .NET Dim ProxyGetStocks As New GetStocks.localhost.Service1()

C# GetStocks.localhost.Service1 ProxyGetStocks =
new GetStocks.localhost.Service1();

GetStocks est le nom de l'application Web, localhost le nom de la référence


Web et Service1 le nom du service Web.
3. Appelez les méthodes Web du service Web XML :
Visual Basic .NET Label1.Text = ProxyGetStocks.GetRating("Contoso")

C# Label1.Text = ProxyGetStocks.GetRating("Contoso");

Le code complet d'une procédure d'événement button_Click ressemblerait à


ce qui suit :
Visual Basic .NET Sub Button1_Click(s As Object, e As EventArgs) _
Handles Button1.Click
Dim ProxyGetStocks As New _
GetStocks.localhost.Service1()
lblResults.Text = ProxyGetStocks.GetRating("Contoso")
End Sub

C# private void Button1_Click(object sender,


System.EventArgs e)
{
GetStocks.localhost.Service1 ProxyGetStocks = new
GetStocks.localhost.Service1();
lblResults.Text = ProxyGetStocks.GetRating("Contoso");
}

4. Générez le projet d'application Web ASP.NET.


Compilez l'application Web en cliquant sur Générer dans le menu
Génération.
24 Module 13 : Utilisation et création de services Web XML

Application pratique dirigée : Utilisation d'un proxy pour appeler un


service Web XML

! Création d'un nouveau projet


d'application Web ASP.NET
! Création d'un proxy pour un service
Web XML
! Test avec un navigateur
! Affichage du fichier reference.vb ou
reference.cs

********************Document à l'usage exclusif de l'instructeur********************

Introduction Dans cette application pratique, vous utiliserez un proxy pour appeler un
service Web XML.

! Pour exécuter l'application pratique dirigée


Création d'un projet 1. Dans Visual Studio .NET, créez un projet d'application Web ASP.NET,
appelé GetWeatherVB ou GetWeatherCS.
Création d'un proxy 2. Ajoutez une référence Web au service Web XML qui se trouve à l'adresse
http://localhost/Mod13VB/WeatherService.asmx ou
http://localhost/Mod13CS/WeatherService.asmx
La référence Web ajoutée créera un proxy et une nouvelle référence Web
appelée localhost dans l'Explorateur de solutions.
Vous constatez que le proxy est créé dans le langage de programmation du
projet. Si vous utilisez Microsoft Visual Basic®, le proxy sera créé en
Visual Basic.
3. Dans l'Explorateur de solutions, consultez les fichiers que
Visual Studio .NET a créés automatiquement pour vous.
4. Dans l'Explorateur de solutions, renommez la référence Web en
WeatherWebRef.
5. Ouvrez la page Webform1.aspx par défaut en mode design, puis ajoutez un
contrôle Text Box (Zone de texte), Button (Bouton) et Label (Étiquette) au
formulaire Web. Conservez les propriétés par défaut de chaque contrôle.
Module 13 : Utilisation et création de services Web XML 25

6. Cliquez sur une procédure d'événement Click pour le bouton Button1, puis
ajoutez le code suivant :
Visual Basic .NET Private Sub Button1_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Dim ProxyGetWeather As New _
GetWeatherVB.WeatherWebRef.WeatherService()
Label1.Text = _
ProxyGetWeather.WeatherByCity(TextBox1.Text)
End Sub

C# private void Button1_Click(object sender,


System.EventArgs e)
{
GetWeatherCS.WeatherWebRef.WeatherService
ProxyGetWeather = new
GetWeatherCS.WeatherWebRef.WeatherService();
Label1.Text =
ProxyGetWeather.WeatherByCity(TextBox1.Text);
}

Tests avec un 7. Générez et parcourez la page Webform1.aspx.


navigateur
8. Pour tester le service Web XML, tapez Seattle dans la zone de texte, puis
cliquez sur le bouton. Maintenant, tapez dans la zone de texte le nom d'une
autre ville, Paris par exemple, puis cliquez de nouveau sur le bouton.
En principe, la saisie de Seattle aboutit à des prévisions météorologiques
ensoleillées (sun).
La saisie du nom d'une autre ville doit aboutir à des prévisions
météorologiques aléatoires comportant les critères : sun, cloudy ou rain.
Affichage du fichier de 9. Affichez le fichier Reference.vb ou Reference.cs. Pour les trouver, cliquez
référence sur Afficher tous les fichiers dans l'Explorateur de solutions, puis
développez Web References, WeatherWebRef et Reference map.
Le fichier de référence est le code source du proxy que Visual Studio .NET
a généré automatiquement. Le proxy dispose des méthodes Begin et End
pour l'appel asynchrone de chaque méthode Web du service Web XML.
26 Module 13 : Utilisation et création de services Web XML

Gestion des erreurs du service Web XML

! Service non disponible


GetStocks.StockWebRef.Service1
GetStocks.StockWebRef.Service1 ProxyGetStocks
ProxyGetStocks == new
new
GetStocks.StockWebRef.Service1();
GetStocks.StockWebRef.Service1();
ProxyGetStocks.Timeout
ProxyGetStocks.Timeout == 10000;
10000;
try
try
{{
lblMessage.Text
lblMessage.Text ==
ProxyGetStocks.GetRating(TextBox1.Text);
ProxyGetStocks.GetRating(TextBox1.Text);
}}
catch
catch (Exception
(Exception err)
err)
{{
lblMessage.Text
lblMessage.Text == err.Message;
err.Message;
}}

! Exceptions SOAP à partir des services Web


XML

Exemple de code Visual Basic .NET


********************Document à l'usage exclusif de l'instructeur********************

Introduction Trois principales sources d'erreur peuvent survenir lors de l'utilisation d'un
service Web XML : l'indisponibilité du service, la longueur des délais de
réponse et des erreurs internes au service Web XML provoquent des messages
d'erreur qui émanent du service sous la forme d'exceptions SOAP. Votre
formulaire Web doit pouvoir identifier ces trois types d'erreurs et les traiter.
Service Web XML non Pour tester la disponibilité d'un service Web XML à partir d'un formulaire
disponible ASP.NET, il vous faut définir un délai d'attente pour le proxy du service
Web XML. Pour cela, utilisez une instruction Try…Catch…Finally pour gérer
l'exception de délai d'attente :
! Définissez le paramètre de délai d'attente dans le proxy.
Affectez à la propriété Timeout du service Web XML une valeur en
millisecondes, comme l'illustre le code suivant :
Nom_proxy.Timeout = valeur en millisecondes

! Gérez toutes les exceptions de délai d'attente.


Le code suivant appelle le service Web XML, piège les exceptions et affiche
un message d'erreur dans Label1 :
Visual Basic .NET Try
'appelle le service Web XML
Catch err As Exception
Label1.Text = err.Message
End Try
Module 13 : Utilisation et création de services Web XML 27

C# try
{
//appelle le service Web XML
}
catch (Exception err)
{
Label1.Text = err.Message;
}

Exceptions SOAP à Si un service Web XML n'est pas en mesure de traiter une demande, il peut
partir des services renvoyer un message d'erreur à l'aide d'une instance de l'objet SoapException
Web XML de la classe System.Web.Services. Pour gérer ces exceptions, vous devez
utiliser une instruction Try…Catch…Finally.
Le code suivant piège l'exception et affiche un message d'erreur dans Label1 :
Visual Basic .NET Try
'appelle votre service Web XML
Catch err As SoapException
Label1.Text = "Impossible de traiter votre demande"
End Try

C# try
{
//appelle votre service Web XML
}
catch (SoapException err)
{
Label1.Text = "Impossible de traiter votre demande";
}
28 Module 13 : Utilisation et création de services Web XML

Démonstration : Test de la disponibilité d'un service Web XML

! Définition d'une instruction Try…Catch


de gestion des erreurs de dépassement
de délai
! Ralentissement du service Web XML
! Test de l'exception

********************Document à l'usage exclusif de l'instructeur********************

Introduction Dans cette démonstration, vous apprendrez à tester la disponibilité du service


Web XML.

! Pour exécuter la démonstration


1. Rouvrez le projet GetWeather évoqué dans la précédente application
pratique dirigée.
Définition du délai 2. Dans le code du gestionnaire d'événements du bouton, définissez un délai
d'attente Try…Catch d'attente de 10 secondes (10 000), puis encadrez l'appel au service
Web XML d'une instruction Try…Catch.
Votre code doit ressembler à ce qui suit :
Visual Basic .NET Private Sub Button1_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Dim ProxyGetWeather As New _
GetWeatherVB.WeatherWebRef.WeatherService()
ProxyGetWeather.Timeout = 10000
Try
Label1.Text = _
ProxyGetWeather.WeatherByCity(TextBox1.Text)
Catch err As Exception
Label1.Text = err.Message
End Try
End Sub
Module 13 : Utilisation et création de services Web XML 29

C# private void Button1_Click(object sender,


System.EventArgs e)
{
GetWeatherCS.WeatherWebRef.WeatherService
ProxyGetWeather = new
GetWeatherCS.WeatherWebRef.WeatherService();
ProxyGetWeather.Timeout = 10000;
try
{
Label1.Text =
ProxyGetWeather.WeatherByCity(TextBox1.Text);
}
catch (Exception err)
{
Label1.Text = err.Message;
}
}

3. Générez et parcourez la page Webform1.aspx.


4. Pour tester le service Web XML, entrez Seattle dans la zone de texte et
cliquez sur le bouton pour vérifier que l'application fonctionne comme
avant.
Ralentissement du 5. Ouvrez le projet Mod13 dans la solution 2333Demos contenant le service
service Web XML Web XML.
6. En haut de la page WeatherService.asmx.vb ou WeatherService.asmx.cs,
ajoutez l'instruction Import suivante :
Visual Basic .NET Imports System.Threading

C# using System.Threading;

7. Au début de la méthode WeatherByCity, ajoutez le code suivant pour


ralentir la réponse à 40 secondes :
Visual Basic .NET Thread.Sleep(40000)

C# Thread.Sleep(40000);

Ce code va forcer le service Web XML à ralentir nettement dans le but de


simuler un service Web XML qui n'est pas en ligne ou qui fonctionne très
lentement.
Test de l'exception 8. Générez l'application Web en cliquant avec le bouton droit sur le projet
Mod13VB ou Mod13CS dans l'Explorateur de solutions, puis en cliquant
sur Générer.
9. Dans le projet GetWeather, affichez la page WebForm1.aspx dans le
navigateur.
10. Pour tester le service Web XML, tapez Seattle dans la zone de texte, puis
cliquez sur le bouton.
Au bout de 10 secondes, le message « Le délai d'attente de l'opération est
dépassé » doit s'afficher dans l'étiquette.
30 Module 13 : Utilisation et création de services Web XML

Leçon : Création d'un service Web XML

! Procédure de création d'un service Web XML


! Code du service Web XML
! Application pratique dirigée : Création d'un
service Web XML

********************Document à l'usage exclusif de l'instructeur********************

Introduction Visual Studio .NET fournit les modèles qui simplifient le développement des
services Web XML. Dans cette leçon, vous apprendrez à vous en servir pour
créer un service Web XML.
Objectifs de la leçon À la fin de cette leçon, vous serez à même d'effectuer les tâches suivantes :
! créer un service Web XML à l'aide de Visual Studio .NET ;
! décrire les classes et structures utilisées dans un projet de service Web XML
construit à l'aide d'ASP.NET ;
! expliquer le code généré lors de la création d'un projet de service Web XML
à l'aide d'ASP.NET.
Module 13 : Utilisation et création de services Web XML 31

Procédure de création d'un service Web XML

11 Création d'un nouveau projet de service Web XML


dans Visual Studio .NET
22 Déclaration des fonctions WebMethod
33 Génération du projet de service Web XML
44 Test dans un navigateur

********************Document à l'usage exclusif de l'instructeur********************

Introduction Visual Studio .NET propose des modèles et une méthode de service Web XML
par défaut qui vous permettront de créer des services Web XML.

! Pour créer un service Web XML dans Visual Studio .NET


1. Ouvrez Visual Studio .NET, puis créez un projet de service Web ASP.NET.
Visual Studio .NET créera automatiquement les dossiers et fichiers requis,
ainsi que la page du service Web XML. Il est recommandé d'affecter un
nouveau nom au projet et au service Web XML pour faciliter l'identification
et le suivi du projet et des fichiers.
2. Déclarez les fonctions pouvant être appelées par le Web.
Visual Studio .NET crée une fonction « Hello World » par défaut sur la
page du service Web XML. Pour l'activer, vous pouvez supprimer les
balises de commentaires.
Il est possible d'écrire presque tous les types de fonctions sous la forme
d'une fonction de méthode de service Web XML, qu'il s'agisse d'un simple
calcul local ou d'une requête complexe de base de données.
3. Générez le projet de service Web ASP.NET.
Une fois toutes les fonctions écrites, il vous faut générer le service Web
avant de pouvoir tester la logique. À l'instar des formulaires Web, ASP.NET
compile le service Web XML en MSIL (Microsoft Intermediate Language)
en vue d'une exécution ultérieure.
32 Module 13 : Utilisation et création de services Web XML

4. Faites des tests avec un navigateur.


Pour vérifier que les fonctions fonctionnent correctement, vous pouvez les
tester en accédant directement au service Web XML avec un navigateur. À
partir de Visual Studio .NET, cliquez avec le bouton droit sur Service
Web XML dans l'Explorateur de solutions, puis cliquez sur Générer et
parcourir.
Vous pouvez aussi tester le service Web XML avec un navigateur à
distance. Pour cela, à partir de Visual Studio .NET, cliquez avec le bouton
droit sur Service Web XML dans l'Explorateur de solutions et cliquez sur
Naviguer avec, ou bien ouvrez le navigateur et tapez l'URL du service
Web :
http://servername/WebService1/Service1.asmx
Module 13 : Utilisation et création de services Web XML 33

Code du service Web XML

! Page .asmx
<%@
<%@ WebService
WebService Language="vb"
Language="vb"
Codebehind="Service1.asmx.vb"
Codebehind="Service1.asmx.vb"
Class="XMLWebServiceName.Service1"
Class="XMLWebServiceName.Service1" %>
%>
! Page .asmx.vb
Imports
Imports System
System
Imports
Imports System.Web.Services
System.Web.Services

Class
Class Service1
Service1
<WebMethod()>
<WebMethod()> Public
Public Function
Function function1()
function1() As
As type
type
'function_here
'function_here
End
End Function
Function
End
End Class
Class

Exemple de code C#
********************Document à l'usage exclusif de l'instructeur********************

Introduction Lorsque vous créez un service Web XML avec Visual Studio .NET, deux
principaux fichiers comprenant le service Web XML sont créés : le fichier
.asmx et le fichier .asmx.vb ou .asmx.cs. Le fichier .asmx identifie la page Web
comme un service Web XML, tandis que le fichier .asmx.vb ou .asmx.cs, connu
également sous le nom de page code-behind, contient la logique du service.
Page .asmx Comme un service Web XML ne dispose d'aucune interface, la page .asmx
contient uniquement les informations de types de fichiers ainsi qu'une directive
de la page code-behind.
Le code d'une page .asmx se présente ainsi :
Visual Basic .NET <%@ WebService Language="vb" Codebehind="Service1.asmx.vb"
Class="XMLWebServiceName.Service1" %>

C# <%@ WebService Language="c#" Codebehind="Service1.asmx.cs"


Class="XMLWebServiceName.Service1" %>

Les attributs des pages .asmx sont les suivants :


! @ Web Service
L'attribut @ Web Service identifie le fichier comme un service Web XML.
! Langage
L'attribut Language définit le langage d'écriture du script sur la page Web.
Ses valeurs sont notamment les suivantes : vb, c# et JScript™.
34 Module 13 : Utilisation et création de services Web XML

! Page Codebehind
L'attribut Codebehind identifie le nom et l'emplacement de la page
code-behind .asmx.vb ou .asmx.cs qui contient la logique du service
Web XML.
! Class
L'attribut Class identifie la classe de base qui prend en charge cette instance
d'un service Web XML.
Dans le fichier .asmx, vous devez définir une classe qui encapsule la
fonctionnalité du service Web XML. Il doit s'agir d'une classe de type
« public » qui hérite de la classe de base du service Web XML.
La classe par défaut du service Web XML est la suivante :
Visual Basic .NET Class Service1

C# class Service1

Page code-behind Le fichier code-behind est la page qui contient la logique du service Web XML.
Le code par défaut d'une page code-behind est le suivant :
Visual Basic .NET Imports System.Web.Services

<WebService(Namespace := "http://tempuri.org/")> _
Public Class Service1
Inherits System.Web.Services.WebService

'<WebMethod()> Public Function HelloWorld() As String


' HelloWorld = "Hello World"
' End Function

End Class
Module 13 : Utilisation et création de services Web XML 35

C# using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Web;
using System.Web.Services;

namespace Service1
{
public class Service1 : System.Web.Services.WebService
{
public Service1()
{
//CODEGEN: 'Cet appel est requis par le Concepteur des
services Web ASP.NET.
InitializeComponent();
}

// [WebMethod]
// public string HelloWorld()
// {
// return "Hello World";
// }
}
}

Les attributs des pages code-behind sont les suivants :


! Espaces de noms
Visual Basic .NET Les services Web XML importent les espaces de noms System et
System.Web.Services.
• Imports System
L'espace de noms System ASP.NET contient les classes qui prennent en
charge les classes ASP.NET générales.
• Imports System.Web.Services
L'espace de noms Web.Services ASP.NET contient les classes des
méthodes et propriétés qui prennent en charge les services Web XML.
36 Module 13 : Utilisation et création de services Web XML

C# Les services Web XML importent les espaces de noms System et


System.Web.Services.
• using System
L'espace de noms System ASP.NET contient les classes qui prennent en
charge les classes ASP.NET générales.
• using System.Web.Services
L'espace de noms Web.Services ASP.NET contient les classes des
méthodes et propriétés qui prennent en charge les services Web XML.
• using System.Collections
• using System.ComponentModel
• using System.Data
• using System.Diagnostics
• using System.Web
! Class
L'attribut Class identifie la classe de base qui prend en charge cette instance
d'un service Web XML.
La classe par défaut du service Web XML est Service1.
! Méthodes de service Web XML
Chaque méthode exposée par le service Web XML doit être précédée d'un
indicateur, en l'occurrence un attribut personnalisé <WebMethod()>. La
présence de cet attribut est requise pour créer une méthode pouvant être
appelée par le Web. Si la méthode ne dispose pas de l'attribut personnalisé
<WebMethod()>, elle ne sera pas exposée par le service Web XML.
Visual Studio .NET crée une méthode Web « Hello World » par défaut que
vous pouvez activer en supprimant les balises de commentaires sur la page
du service Web XML. Vous pouvez modifier la fonction par défaut ou
ajouter vos propres fonctions.
Le code suivant est la méthode de service Web XML de Visual Studio .NET
par défaut :
Visual Basic .NET <WebMethod()> Public Function HelloWorld() As String
HelloWorld = "Hello World"
End Function

C# [WebMethod]
public string HelloWorld()
{
return "Hello World";
}
Module 13 : Utilisation et création de services Web XML 37

Application pratique dirigée : Création d'un service Web XML

! Création d'un service Web XML


! Test du service Web
! Modification de l'espace de noms

********************Document à l'usage exclusif de l'instructeur********************

Introduction Dans cette application pratique, vous créerez un service de cotation des actions
simple. Le service de cotation retourne une valeur Buy si le nom de l'entreprise
Contoso est le paramètre d'entrée. Tous les autres noms d'entreprise doivent
retourner une valeur Sell.

! Pour exécuter cette application pratique


Création d'un service 1. Créez un projet de service Web ASP.NET dans Visual Studio .NET, puis
Web XML spécifiez l'emplacement du service Web comme suit :
Visual Basic .NET http://localhost/StocksVB
C# http://localhost/StocksCS.
Un dossier StocksVB ou StocksCS est créé automatiquement dans le dossier
\Inetpub\wwwroot.
2. Ouvrez le fichier .asmx par défaut, Service1.asmx, en mode Code en
cliquant avec le bouton droit sur le fichier dans l'Explorateur de solutions et
en cliquant sur Afficher le code.
Notez que le nom par défaut de la classe est Service1 et que
Visual Studio .NET a automatiquement ouvert le fichier code-behind
Service1.asmx.vb ou Service1.asmx.cs.
38 Module 13 : Utilisation et création de services Web XML

3. Créez une fonction GetRating de la manière suivante :


Visual Basic .NET <WebMethod()> Public Function GetRating( _
ByVal Ticker As String) As String
If Ticker ="Contoso" Then
Return "Buy"
Else
Return "Sell"
End If
End Function

C# [WebMethod]
public string GetRating(String Ticker)
{
if (Ticker == "Contoso")
return "Buy";
else
return "Sell";
}

4. Enregistrez le fichier.
Test du service 5. Générez et parcourez le service Web XML dans Microsoft Internet Explorer
Web XML en affichant la page suivante :
Visual Basic .NET http://localhost/StocksVB/Service1.asmx.
C# http://localhost/StocksCS/Service1.asmx.
Pour ouvrir le service Web XML, vous pouvez également cliquer avec le
bouton droit sur Service1.asmx dans l'Explorateur de solutions, puis cliquer
sur Afficher dans le navigateur.
Un commentaire sur l'espace de noms apparaît.
6. Cliquez sur GetRating.
7. Dans le champ Ticker, tapez le nom d'une entreprise pour laquelle vous
souhaitez obtenir une cotation, telle que Contoso ou Northwind Traders,
puis cliquez sur Appeler.
Modification ou ajout de Pour empêcher le commentaire de l'espace de noms d'apparaître lorsque
l'espace de noms vous parcourez le service Web XML, vous devez modifier l'URL de l'espace
de noms. Si vous utilisez Visual Studio .NET, modifiez l'URL par défaut
que fournit Visual Studio .NET. Si vous utilisez C#, Visual Studio .NET ne
génère pas d'espace de noms par défaut. Vous devez alors lui ajouter un
attribut WebService, puis la directive de l'espace de noms.
Module 13 : Utilisation et création de services Web XML 39

8. Ajoutez l'attribut WebService ou modifiez-le.


Visual Basic .NET Modifiez la directive de l'espace de noms dans Service1.asmx.vb pour
utiliser http://microsoft.com/webservices/ :
<WebService(Namespace:= _
"http://microsoft.com/webservices/")> _

C# Ajoutez l'attribut WebService et la directive d'espace de noms sous les


informations récapitulatives dans Service1.asmx.cs.
Votre code C# doit ressembler à ce qui suit (avec le nouveau code que vous
devez ajouter en gras) :
/// Description récapitulative de WeatherService
/// </summary>
///
[WebService(Namespace="http://microsoft.com/webservices/")]
public class Service1 : System.Web.Services.WebService

9. Enregistrez le fichier et régénérez-le.


10. Accédez au service Web dans Internet Explorer en affichant ce qui suit :
Visual Basic .NET http://localhost/StocksVB/Service1.asmx.
C# http://localhost/StocksCS/Service1.asmx.
Le commentaire sur l'espace de noms disparaît.
Ajout d'une description 11. Ajoutez une description de l'attribut Class. Votre code doit ressembler à ce
à la classe et à la qui suit :
méthode Web

Visual Basic .NET <WebService(Namespace:= _


"http://microsoft.com/webservices/", _
Description:="Ma description de classe...")> _

C# [WebService(Namespace=
"http://microsoft.com/webservices/",
Description="Ma description de classe...")]

12. Ajoutez une description à la directive WebMethod. Votre code doit


ressembler à ce qui suit :
Visual Basic .NET <WebMethod(Description:="Description de ma méthode
Web...")>

C# [WebMethod(Description="Description de ma méthode Web...")]

13. Enregistrez le fichier et régénérez-le.


14. Dans Internet Explorer, accédez au service Web à la recherche de :
Visual Basic .NET http://localhost/StocksVB/Service1.asmx.
C# http://localhost/StocksCS/Service1.asmx.
et vérifiez la présence des descriptions.
40 Module 13 : Utilisation et création de services Web XML

Contrôle des acquis

! Présentation des services Web XML


! Appel d'un service Web XML à l'aide de HTTP
! Utilisation d'un proxy pour appeler un service
Web XML
! Création d'un service Web XML

********************Document à l'usage exclusif de l'instructeur********************

1. Un service Web XML possède-t-il une interface utilisateur ?

2. Où rechercher des informations sur les services Web XML disponibles ?

3. Comment tester rapidement un service Web XML pour voir les méthodes et
les paramètres disponibles ?

4. Comment accéder à un service Web XML à partir d'un formulaire Web ?


Module 13 : Utilisation et création de services Web XML 41

5. Comment procéder pour vérifier si un service Web XML est disponible au


moment de l'exécution ?

6. Quel est le protocole utilisé pour communiquer entre un proxy et un service


Web XML ?

7. Quel attribut ajouter aux méthodes que vous voulez exposer sur le Web à
partir de votre service Web XML ?

8. Quelle est la différence qui existe entre les fichiers .asmx et .asmx.vb (ou
.asmx.cs) ?
42 Module 13 : Utilisation et création de services Web XML

Atelier 13 : Utilisation et création de services Web XML


Page
Page de
de
connexion
connexion
Login.aspx
Login.aspx Page
Page
d'accueil
d'accueil En-tête
En-tête
Coho
Winery
Avantages
Avantages de
de page
page ASPState
Default.aspx
Default.aspx Header.ascx
Header.ascx
Composant
Composant
Inscription
Inscription du
du menu
menu
Register.aspx
Register.aspx Class1.vb
Class1.vbou
ou Class1.cs
Class1.cs Web.
config tempdb

Assurance Plans
Plans Assurance
Assurance Soins
Soins
Assurance vie
vie de
de retraite
retraite maladie
maladie dentaires
dentaires
Life.aspx
Life.aspx
Retirement.aspx
Retirement.aspx Medical.aspx
Medical.aspx Dental.aspx
Dental.aspx

Prospectus Médecins Contrôle


Contrôle Service
Service Web
Web
Prospectus Médecins utilisateur
utilisateur XML
Application Prospectus.aspx
Prospectus.aspx Doctors.aspx
Doctors.aspx
namedate.ascx
namedate.ascx
XML
Web de dentalService1.asmx
dentalService1.asmx
l’atelier

Fichiers
XML Doctors Dentists

********************Document à l'usage exclusif de l'instructeur********************

Objectifs À la fin de cet atelier, vous serez à même d'effectuer les tâches suivantes :
! créer un service Web XML qui retourne des types de données complexes ;
! tester un service Web XML à l'aide d'un navigateur.
Conditions préalables Pour aborder cet atelier, vous devez disposer de connaissances élémentaires
dans les domaines suivants :
! connaissances de la procédure d'ajout d'une table Microsoft® SQL Server™
dans un projet ;
! maîtrise de Microsoft ADO.NET ;
! connaissances de la procédure d'ajout d'une référence Web dans un
formulaire Web ;
! connaissances des modalités d'emploi du contrôle DataGrid ;
! connaissances de la procédure de création des procédures d'événement pour
les contrôles de serveur.
Scénario Coho Winery offre de nombreux avantages à ses employés. Dans les ateliers du
cours 2333A, Développement d'applications Web Microsoft ASP.NET à l'aide
de Visual Studio .NET, vous créerez un site Web qui permettra aux employés de
sélectionner et de définir les avantages qu'ils auront choisis.
Dans cet atelier, vous :
! créerez un service Web XML qui vous permettra d'extraire la liste de tous
les dentistes utilisés par Coho Winery ;
! extrairez la liste des dentistes correspondant à un code postal donné ;
! utiliserez le service Web à partir de la page dental.aspx.
Durée approximative de
cet atelier :
60 minutes
Module 13 : Utilisation et création de services Web XML 43

Exercice 0
Mise en place de l'atelier
Pour réaliser cet atelier, vous devez avoir créé un projet d'application Web
intitulé Benefits et un projet de bibliothèque de classes intitulé BenefitsList. Ces
projets peuvent être créés à l'aide de Microsoft Visual Basic® .NET ou de
Microsoft Visual C#™ .NET.
Si vous ne les avez pas encore créés, procédez comme suit :

! Création de la solution ApplicationAtelier2333


Important Effectuez cette procédure uniquement si vous n'avez pas encore créé
le fichier de solution ApplicationAtelier2333.

• À l'aide de Microsoft Visual Studio® .NET, créez une solution que vous
nommerez ApplicationAtelier2333 :
a. Dans le menu Fichier, pointez sur Nouveau, puis cliquez sur Nouvelle
solution.
b. Dans la boîte de dialogue Nouveau projet, dans la zone de texte Nom,
tapez ApplicationAtelier2333 puis cliquez sur OK.

! Création du projet Benefits


Important Effectuez cette procédure uniquement si vous n'avez pas encore créé
le projet Benefits ou si vous avez supprimé ce projet conformément aux
instructions de l'annexe A, « Récupération d'un atelier », du cours 2333A,
Développement d'applications Web Microsoft ASP.NET à l'aide de Visual
Studio .NET.

• Créez un projet d'application Web Microsoft ASP.NET, appelé BenefitsVB


ou BenefitsCS, dans la solution ApplicationAtelier2333 :
a. Dans le menu Fichier, pointez sur Nouveau, puis cliquez sur Projet.
b. Dans la boîte de dialogue Nouveau projet, dans la liste Types de
projets, cliquez sur Projets Visual Basic ou sur Projets Visual C#.
c. Dans la liste Modèles, cliquez sur Application Web ASP.NET.
Définissez l'Emplacement à http://localhost/BenefitsVB pour le projet
Visual Basic .NET ou à http://localhost/BenefitsCS pour le projet
Visual C#.
d. Cliquez sur Ajouter à la solution, puis sur OK.

Attention Lorsque vous ajoutez un projet à une solution, il est important de


respecter les majuscules. Il se peut que vous utilisiez certains formulaires
Web prédéfinis dans cet atelier ou dans d'autres ateliers du cours 2333A,
Développement d'applications Web Microsoft ASP.NET à l'aide de Visual
Studio .NET. Par conséquent, vérifiez que le projet Benefits est orthographié
avec une majuscule, comme indiqué.
44 Module 13 : Utilisation et création de services Web XML

! Mise à jour du projet Benefits


1. Dans Visual Studio .NET, ouvrez le fichier de solution
ApplicationAtelier2333.
2. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur
BenefitsVB ou sur BenefitsCS, pointez sur Ajouter, puis cliquez sur
Ajouter un élément existant.
3. Accédez aux fichiers projet :
Pour le projet Accédez au
Visual Basic .NET dossier_installation\Labfiles\Lab13\VB\Starter\BenefitsVB.
Pour le projet Visual C# Accédez au
dossier_installation\Labfiles\Lab13\VB\Starter\BenefitsCS.
4. Dans la zone Types de fichiers de la boîte de dialogue Ajouter un élément
existant – Benefits, cliquez sur Tous les fichiers (*.*).
5. Sélectionnez tous les fichiers de ce dossier, puis cliquez sur Ouvrir.
6. Cliquez sur Oui si vous êtes invité à remplacer les fichiers ou à les
recharger.

! Création de la bibliothèque de classes BenefitsList


Important Effectuez cette procédure uniquement si vous n'avez pas encore créé
le projet Benefits ou si vous avez supprimé ce projet conformément aux
instructions de l'annexe A, « Récupération d'un atelier », du cours 2333A,
Développement d'applications Web Microsoft ASP.NET à l'aide de Visual
Studio .NET.

• Créez un projet de bibliothèque de classes.


Pour le projet Créez un projet de bibliothèque de classes Visual Basic .NET, nommez-le
Visual Basic .NET BenefitsListVB, puis ajoutez-le à la solution ApplicationAtelier2333 :
a. Dans le menu Fichier, pointez sur Nouveau, puis cliquez sur Projet.
b. Dans la boîte de dialogue Nouveau projet, dans la liste Types de
projets, cliquez sur Projets Visual Basic.
c. Dans la liste Modèles, cliquez sur Bibliothèque de classe, puis saisissez
BenefitsListVB dans le champ Nom.
d. Cliquez sur Ajouter à la solution, puis sur OK.
Pour le projet Visual C# Créez un projet de bibliothèque de classes Visual C# .NET, nommez-le
BenefitsListCS, puis ajoutez-le à la solution ApplicationAtelier2333 :
a. Dans le menu Fichier, pointez sur Nouveau, puis cliquez sur Projet.
b. Dans la boîte de dialogue Nouveau projet, dans la liste Types de
projets, cliquez sur Projets Visual C#.
c. Dans la liste Modèles, cliquez sur Bibliothèque de classe, puis saisissez
BenefitsListCS dans le champ Nom.
d. Cliquez sur Ajouter à la solution, puis sur OK.

Attention Vérifiez que le projet BenefitsList est orthographié avec des


majuscules, comme indiqué.
Module 13 : Utilisation et création de services Web XML 45

! Mise à jour du projet BenefitsList


1. Dans Visual Studio .NET, ouvrez le fichier de solution
ApplicationAtelier2333.
2. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur
BenefitsListVB ou BenefitsListCS, pointez sur Ajouter et cliquez sur
Ajouter un élément existant.
3. Accédez aux fichiers projet :
Pour le projet Naviguez jusqu'au dossier
Visual Basic .NET dossier_installation\Labfiles\Lab13\VB\Starter\BenefitsListVB.
Pour le projet Visual C# Naviguez jusqu'au dossier
dossier_installation\Labfiles\Lab13\CS\Starter\BenefitsListCS.
4. Dans la zone Types de fichiers de la boîte de dialogue Ajouter un élément
existant – BenefitsList, cliquez sur Tous les fichiers (*.*).
5. Sélectionnez tous les fichiers de ce dossier, puis cliquez sur Ouvrir.
6. Cliquez sur Oui si vous êtes invité à remplacer les fichiers ou à les
recharger.

! Création d'une référence au composant BenefitsList dans le projet


Benefits
• Dans le projet Benefits de la solution ApplicationAtelier2333, effectuez les
étapes suivantes pour ajouter une référence au composant BenefitsList que
vous venez de créer :
a. Cliquez avec le bouton droit sur le projet BenefitsVB ou BenefitsCS
dans l'Explorateur de solutions, puis cliquez sur Ajouter une référence.
b. Dans la boîte de dialogue Ajouter une référence, sous l'onglet Projets,
double-cliquez sur le projet BenefitsListVB ou BenefitsListCS.
c. Cliquez sur le composant BenefitsListVB ou BenefitsListCS dans la
liste Composants sélectionnés, puis sur OK.
Le composant vient s'ajouter au dossier References dans l'Explorateur de
solutions.
46 Module 13 : Utilisation et création de services Web XML

Exercice 1
Création de la méthode GetAllDentists du service Web XML Dentist
Dans cet exercice, vous utiliserez Visual Studio .NET pour créer un service
Web XML.

! Création d'un service Web XML


1. Dans Visual Studio .NET, ouvrez la solution ApplicationAtelier2333 :
2. Créez un projet de service Web ASP.NET, appelé DentalServiceVB ou
DentalServiceCS, dans la solution ApplicationAtelier2333 :
a. Dans le menu Fichier, cliquez sur Nouveau, puis sur Projet.
b. Dans la boîte de dialogue Nouveau projet, dans la liste Types de
projets, cliquez sur Projets Visual Basic ou sur Projets Visual C#.
c. Dans la liste Modèles, cliquez sur Service Web ASP.NET. Affectez à
Emplacement la valeur http://localhost/DentalServiceVB pour un
projet Visual Basic .NET ou la valeur
http://localhost/DentalServiceCS pour un projet Visual C#.
d. Cliquez sur Ajouter à la solution, puis cliquez sur OK.
3. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur
Service1.asmx et renommez-le en DentalService1.asmx.
4. Dans l'Explorateur de solutions, vérifiez que le fichier DentalService1.asmx
est ouvert, puis double-cliquez sur la surface de dessin pour ouvrir la page
code-behind.
5. Modifiez le nom de la classe :
Visual Basic .NET Dans le fichier DentalService1.asmx.vb, remplacez le nom de la classe
Service1 par DentalService1.
C# Dans le fichier DentalService1.asmx.cs, remplacez le nom de la classe et du
constructeur Service1 par DentalService1.

! Création des objets Connection et DataAdapter


1. Dans l'Explorateur de serveurs, développez Servers, nom_machine, SQL
Servers, nom_machine, dentists, puis tables pour afficher les tables de la
base de données dentists.
2. En mode design, utilisez la technique du glisser-déplacer pour amener la
table Dentists de la base de données dentists vers la page
DentalService1.asmx.
Visual Basic .NET Les objets SqlConnection1 et SqlDataAdapter1 sont créés, puis placés sur
la surface de dessin du service Web XML DentalService1.asmx.
C# Les objets SqlConnection1 et SqlDataAdapter1 sont créés, puis placés sur
la surface de dessin du service Web XML DentalService1.asmx.
Module 13 : Utilisation et création de services Web XML 47

! Création de l'objet DataSet


1. Cliquez n'importe où sur la surface de dessin pour désélectionner les objets
SqlConnection1 et SqlDataAdapter1.
2. Cliquez avec le bouton droit sur l'objet SqlDataAdapter1 dans la page
DentalService1.asmx, puis cliquez sur Générer le groupe de données.
3. Dans la boîte de dialogue Générer le groupe de données, créez un nouveau
DataSet que vous nommerez dsDentists, vérifiez que l'option Ajouter ce
groupe de données au concepteur est activée, puis cliquez sur OK.
Un objet dsDentists est créé, puis placé en mode Design sur la page
DentalService1.asmx ; ensuite, un nouveau fichier de schéma appelé
dsDentists.xsd vient s'ajouter au projet DentalService dans l'Explorateur de
solutions.

Remarque Lors de la création du DataSet dsDentists, Visual Basic .NET


créera une instance de dsDentists nommée « DsDentists1 » tandis que
Visual C# en créera une nommée « dsDentists1 ».

! Création de la méthode de service Web XML GetAllDentists


1. Dans la page code-behind de la page DentalService1.asmx,
DentalService1.asmx.vb ou DentalService1.asmx.cs, créez une méthode de
service Web XML nommée GetAllDentists qui retourne un objet DataSet.
2. Dans la méthode de service Web XML, appelez la méthode Fill de l'objet
SqlDataAdapter1 pour remplir le DataSet, dsDentists1, puis retourner le
DataSet.
Votre code doit ressembler à ce qui suit :
Visual Basic .NET <WebMethod()> _
Public Function GetAllDentists() As DataSet
SqlDataAdapter1.Fill(DsDentists1)
Return DsDentists1
End Function

C# [WebMethod()]
public DataSet GetAllDentists()
{
sqlDataAdapter1.Fill(dsDentists1);
return dsDentists1;
}

3. Enregistrez vos modifications.


48 Module 13 : Utilisation et création de services Web XML

4. Générez et parcourez la page DentalService1.asmx.


La page de description du service Web XML s'affiche.
D'où vient cette page de description ?
____________________________________________________________

____________________________________________________________

Remarque Un message d'avertissement sur l'utilisation de tempuri.org


apparaît en bas de la page. L'avertissement est présent car cette URL
temporaire est l'espace de noms temporaire du service Web XML, utilisée à
des fins de test uniquement.

5. Dans le navigateur, cliquez sur le lien GetAllDentists, puis cliquez sur


Appeler.
Le navigateur affiche la réponse XML émanant du service Web XML.
Quel est la fonction du contenu situé entre les balises <xs:schema> et
</xs:schema> ?
____________________________________________________________

____________________________________________________________

! Modification de la sortie du service Web XML


1. Dans la page code-behind DentalService1.asmx, définissez les attributs du
service Web conformément au tableau suivant. Si vous travaillez en C#,
vous devrez créer l'attribut WebService.
Attribut Valeur
Namespace http://microsoft.com/webservices/
Description Ce service Web XML contient des informations sur les
dentistes.

Votre code doit ressembler à ce qui suit :


Visual Basic .NET <WebService( _
Namespace:="http://microsoft.com/webservices/", _
Description:="Ce service Web XML contient des " & _
"informations sur les dentistes.")> _
Public Class DentalService1
Inherits System.Web.Services.WebService
Module 13 : Utilisation et création de services Web XML 49

C# [WebService(Namespace="http://microsoft.com/webservices/",
Description="Ce service Web XML contient des " +
"informations sur les dentistes.")]
public class DentalService1:
System.Web.Services.WebService

2. Ajoutez un attribut description à la méthode GetAllDentists, puis ajoutez


la phrase Cette méthode de service Web XML retourne tous les noms
des dentistes.
Votre code doit ressembler à ce qui suit :
Visual Basic .NET <WebMethod(Description:= _
"Cette méthode de service Web XML retourne tous les noms
des dentistes")> _
Public Function GetAllDentists() As DataSet

C# [WebMethod(Description= "Cette méthode de service Web XML


retourne tous les noms des dentistes")]
public DataSet GetAllDentists()

3. Générez et parcourez la page DentalService1.asmx.


4. Dans le navigateur, notez que la description du service Web XML et celle
de la méthode du service Web XML ont changé. À signaler également que
le message d'avertissement concernant l'emploi de tempuri.org, situé en bas
de la page, n'apparaît plus car vous avez modifié l'espace de noms du
service.

! Test du service Web XML de votre voisin


1. Dans Microsoft Internet Explorer, accédez au service Web XML
DentalService de votre voisin. Pour cela, accédez à l'URL suivante, où
Nom_machine représente le nom de l'ordinateur d'un autre stagiaire :
http://Nom_machine/DentalServiceVB/DentalService1.asmx ou
http://Nom_machine/DentalServiceCS/DentalService1.asmx

Remarque Vous pouvez également utiliser l'ordinateur de l'instructeur


nommé London.

2. Appelez la méthode GetAllDentists.


50 Module 13 : Utilisation et création de services Web XML

Exercice 2
Création de la méthode de service Web XML
GetDentistsByPostalCode
Dans cet exercice, vous ajouterez une autre méthode de service Web XML à
votre service Web XML DentistService. Cette nouvelle méthode s'appelle
GetDentistsByPostalCode et retourne un DataSet contenant tous les dentistes
caractérisés par un code postal donné. Dans cet exercice, vous écrirez du code
faisant appel à ADO.NET pour appeler une procédure stockée SQL Server.

! Création de la méthode de service Web XML GetDentistsByPostalCode


1. Dans le fichier DentalService1.asmx.vb ou DentalService1.asmx.cs,
importez l'espace de noms System.Data.SqlClient.
Votre code doit ressembler à ce qui suit :
Visual Basic .NET Imports System.Data.SqlClient

C# using System.Data.SqlClient;

2. Créez une méthode de service Web XML appelée


GetDentistsByPostalCode dont un paramètre String est passé par la valeur
nommée strPostalCode et retourne un DataSet.
3. Affectez à la description de la méthode le texte Cette méthode de service
Web XML retourne les noms des dentistes à partir d'un code postal
fourni.
Votre code doit ressembler à ce qui suit :
Visual Basic .NET <WebMethod(Description:= _
"Cette méthode de service Web XML retourne les noms" & _
"des dentistes à partir d'un code postal fourni.")> _
Public Function GetDentistsByPostalCode( _
ByVal strPostalCode As String) As DataSet

End Function

C# [WebMethod(Description=
"Cette méthode de service Web XML retourne les noms" +
"des dentistes à partir d'un code postal fourni.")]
public DataSet GetDentistsByPostalCode(
String strPostalCode)
{
}
Module 13 : Utilisation et création de services Web XML 51

4. Dans la méthode de service Web XML GetDentistsByPostalCode, ajoutez


du code pour remplir un nouveau DataSet avec les noms des dentistes ayant
un code postal donné, en appelant la procédure stockée
DentistByPostalCode.
Votre code doit ressembler à ce qui suit :

Remarque Vous pouvez copier et coller ce code à partir du


dossier_installation\Labfiles\Lab13\VB\Starter\DentalServiceVB\
DentistsPoCode.txt ou du dossier_installation\Labfiles\Lab13\CS\Starter\
DentalServiceCS\DentistsPoCode.txt.

Visual Basic .NET Dim conn As New SqlConnection _


("data source=localhost; " & _
"initial catalog=Dentists; " & _
"integrated security=true")
Dim daDentistsPoCode As SqlDataAdapter
Dim dsDentistsPoCode As New DataSet()
Dim workParam As SqlParameter = Nothing

'appelle la procédure stockée DentistsByState


daDentistsPoCode = _
New SqlDataAdapter("DentistsByPostalCode", conn)
daDentistsPoCode.SelectCommand.CommandType = _
CommandType.StoredProcedure

'ajoute le paramètre d'entrée du code postal


workParam = New SqlParameter("@PostalCode", _
System.Data.SqlDbType.NVarChar)
workParam.Direction = ParameterDirection.Input
workParam.Value = strPostalCode
daDentistsPoCode.SelectCommand.Parameters.Add(workParam)

'exécute la procédure stockée et remplit un DataSet


daDentistsPoCode.Fill(dsDentistsPoCode, _
"DentistsPoCode")

'ferme la connexion
conn.Close()

Return dsDentistsPoCode
52 Module 13 : Utilisation et création de services Web XML

C# SqlConnection conn = new SqlConnection


("data source=localhost;" +
"initial catalog=Dentists;" +
"integrated security=true");
SqlDataAdapter daDentistsPoCode;
DataSet dsDentistsPoCode = new DataSet();
SqlParameter workParam = null;

//appelle la procédure stockée DentistsByState


daDentistsPoCode = new
SqlDataAdapter("DentistsByPostalCode", conn);
daDentistsPoCode.SelectCommand.CommandType =
CommandType.StoredProcedure;

//ajoute le paramètre d'entrée du code postal


workParam = new SqlParameter("@PostalCode",
System.Data.SqlDbType.NVarChar);
workParam.Direction = ParameterDirection.Input;
workParam.Value = strPostalCode;
daDentistsPoCode.SelectCommand.Parameters.Add(workParam);

//exécute la procédure stockée et remplit un dataset


daDentistsPoCode.Fill(dsDentistsPoCode, "DentistsPoCode");

//ferme la connexion
conn.Close();

return dsDentistsPoCode;

5. Enregistrez vos modifications.


6. Générez et parcourez la page DentalService1.asmx.
7. Dans le navigateur, cliquez sur le lien GetDentistsByPostalCode, tapez
98052 dans le champ strPostalCode, puis cliquez sur Appeler.
Tous les dentistes dont le code postal est 98052 doivent s'afficher. Il doit y
en avoir six en tout.
8. Testez de nouveau la méthode du service Web XML
GetDentistsByPostalCode avec le code postal 94111.
Maintenant, tous les dentistes dont le code postal est 94111 doivent
s'afficher. Ils sont au nombre de trois.
9. Testez de nouveau la méthode du service Web XML
GetDentistsByPostalCode avec le code postal 02703.
Aucun dentiste ne doit s'afficher.
Module 13 : Utilisation et création de services Web XML 53

Exercice 3
Utilisation de la méthode de service Web XML GetAllDentists
Dans cet exercice, vous appellerez la méthode GetAllDentists du service
Web XML DentalService. Vous afficherez ensuite l'objet DataSet résultat dans
un contrôle DataGrid.

! Utilisation du service Web XML DentalService


1. Ouvrez le projet BenefitsVB ou BenefitsCS dans la solution
Visual Studio .NET ApplicationAtelier2333.
2. Prenez le formulaire Web dental.aspx situé dans le dossier_installation\
Labfiles\Lab13\VB\Starter\BenefitsVB ou le dossier_installation\Labfiles\
Lab13\CS\Starter\BenefitsCS et ajoutez-le au projet BenefitsVB ou
BenefitsCS.
3. Ajoutez une référence Web au service Web XML DentalService. Le service
Web XML doit se trouver à l'adresse http://localhost/DentalServiceVB/
DentalService1.asmx ou http://localhost/DentalServiceCS/
DentalService1.asmx
a. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur
BenefitsVB ou sur BenefitsCS, puis cliquez sur Ajouter une référence
Web.
b. Dans le champ Adresse de la boîte de dialogue Ajouter une référence
Web, tapez http://localhost/DentalServiceVB/DentalService1.asmx
ou http://localhost/DentalServiceCS/DentalService1.asmx puis
appuyez sur ENTRÉE.
c. Cliquez sur Ajouter la référence.
Un nouveau dossier appelé Web References est créé automatiquement
dans le projet BenefitsVB ou BenefitsCS, dans l'Explorateur de
solutions. Le dossier Web References contient un proxy et une nouvelle
référence Web nommée localhost.

Remarque Le proxy est créé dans le langage par défaut des paramètres de
projet. Si, par exemple, vous utilisez Visual Basic .NET, le proxy sera créé
en Visual Basic .NET et portera le nom Reference.vb.

4. Cliquez sur l'icône Afficher tous les fichiers dans l'Explorateur de


solutions.
5. Dans l'Explorateur de solutions, renommez la référence Web localhost en
DentalWebRef.
6. Développez Web References et DentalWebRef, puis cliquez sur l'icône
Reference.map dans l'Explorateur de solutions.
54 Module 13 : Utilisation et création de services Web XML

7. Ouvrez le fichier Reference.vb ou Reference.cs.


À quelle fin les méthodes BeginGetAllDentists et EndGetAllDentists
sont-elles destinées ?
____________________________________________________________

____________________________________________________________

8. Fermez le fichier Reference.vb ou Reference.cs.

! Appel de la méthode de service Web XML GetAllDentists


1. Ouvrez le formulaire Web dental.aspx.
Cette page contient déjà les contrôles TextBox, Button et DataGrid.
2. Ouvrez la page code-behind dental.aspx, puis recherchez le commentaire
suivant dans la procédure d'événement cmdGetAllDentists_Click :
Visual Basic .NET 'TODO Atelier 13 : appeler la méthode de service Web XML
'GetAllDentists

C# //TODO Atelier 13 : appeler la méthode de service Web XML


//GetAllDentists

3. Écrivez le code pour utiliser la méthode GetAllDentists :


a. Créez un proxy DentalService nommé ProxyGetAllDentists.
b. Créez un DataSet nommé dsAllDentists.
c. Appelez la méthode GetAllDentists et enregistrez les résultats dans
dsAllDentists.
d. Affectez à la source de données du contrôle DataGrid dgDentists la
valeur dsAllDentists.
e. Liez l'objet DataSet au contrôle DataGrid.
Module 13 : Utilisation et création de services Web XML 55

Votre code doit ressembler à ce qui suit :


Visual Basic .NET Dim ProxyGetAllDentists As New _
BenefitsVB.DentalWebRef.DentalService1()
Dim dsAllDentists As New DataSet()
dsAllDentists = _
ProxyGetAllDentists.GetAllDentists()
dgDentists.DataSource = dsAllDentists.Tables(0)
dgDentists.DataBind()

C# BenefitsCS.DentalWebRef.DentalService1 ProxyGetAllDentists
= new BenefitsCS.DentalWebRef.DentalService1();
DataSet dsAllDentists = new DataSet();
dsAllDentists = ProxyGetAllDentists.GetAllDentists();
dgDentists.DataSource = dsAllDentists.Tables[0];
dgDentists.DataBind();

Remarque Si DentalWebRef s'affiche en tant que localhost dans


Microsoft IntelliSense®, vous devez fermer Visual Studio .NET et le rouvrir
avant d'écrire le code permettant d'utiliser les méthodes de service
Web XML à partir de la référence Web.

4. Enregistrez vos modifications.


5. Générez et parcourez la page dental.aspx.
6. Dans le navigateur, cliquez sur Obtenir tous les dentistes.
Tous les dentistes s'affichent dans le contrôle DataGrid.
56 Module 13 : Utilisation et création de services Web XML

Exercice 4
Utilisation de la méthode de service Web XML
GetDentistsByPostalCode
Dans cet exercice, vous appellerez la méthode GetDentistsByPostalCode du
service Web XML Dentists.asmx. Vous utiliserez un contrôle DataGrid pour
afficher l'objet résultant DataSet des dentistes correspondant à un code postal
donné.

! Appel de la méthode de service Web XML GetDentistsByPostalCode


1. Ouvrez la page code-behind dental.aspx, puis recherchez le commentaire
suivant dans la procédure d'événement cmdSubmit_Click :
Visual Basic .NET 'TODO Atelier 13 : appeler les méthodes de service Web XML
'GetDentistsByPostalCode

C# //TODO Atelier 13 : appeler les méthodes de service Web XML


//GetDentistsByPostalCode

2. Écrivez le code pour appeler la méthode GetDentistsByPostalCode :


a. Créez un proxy nommé ProxyGetDentistsByPostalCode.
b. Créez un DataSet nommé dsDentistsByPostalCode.
c. Appelez la méthode GetDentistsByPostalCode en lui passant le
contenu de la zone de texte txtPostalCode, puis enregistrez l'objet
résultant DataSet dans le DataSet dsDentistsByPostalCode.
d. Affectez la valeur dsDentistsByPostalCode à la source de données
DataSource du DataGrid dgDentists.
e. Liez l'objet DataSet au contrôle DataGrid.
Votre code doit ressembler à ce qui suit :
Visual Basic .NET Dim ProxyGetDentistsByPostalCode As New _
BenefitsVB.DentalWebRef.DentalService1()
Dim dsDentistsByPostalCode As New DataSet()
dsDentistsByPostalCode = _
ProxyGetDentistsByPostalCode. _
GetDentistsByPostalCode(txtPostalCode.Text)
dgDentists.DataSource = dsDentistsByPostalCode.Tables(0)
dgDentists.DataBind()

C# BenefitsCS.DentalWebRef.DentalService1
ProxyGetDentistsByPostalCode = new
BenefitsCS.DentalWebRef.DentalService1();
DataSet dsDentistsByPostalCode = new DataSet();
dsDentistsByPostalCode =
ProxyGetDentistsByPostalCode.GetDentistsByPostalCode
(txtPostalCode.Text);
dgDentists.DataSource = dsDentistsByPostalCode.Tables[0];
dgDentists.DataBind();
Module 13 : Utilisation et création de services Web XML 57

3. Enregistrez vos modifications.


4. Générez et parcourez la page dental.aspx.
5. Tapez 98052 dans la zone de texte Code postal, puis cliquez sur Envoyer.
Tous les dentistes dont le code postal est 98052 s'affichent dans le contrôle
DataGrid.
6. Tapez 94111 dans la zone de texte Code postal, puis cliquez sur Envoyer.
Tous les dentistes dont le code postal est 94111 s'affichent dans le contrôle
DataGrid.
THIS PAGE INTENTIONALLY LEFT BLANK

You might also like