Présentation des services Web XML
L'évolution d'Internet est aujourd'hui rapide : ce n'est plus tant un ensemble de sites Web qui fournissent
à l'utilisateur des pages d'interface pour des navigateurs, que des sites Web de nouvelle génération, programmables et capables
de lier directement des organisations, des applications, des services et différents types de systèmes
entre eux. Ces sites Web programmables ne sont pas limités à un accès passif ; ils sont désormais des services Web
intelligents et réutilisables.
Le Common Language Runtime prend en charge la création et l'exposition de services Web
par l'intermédiaire d'une abstraction de programmation qui est cohérente et connue des développeurs
avec l'infrastructure Web Forms ASP.NET comme des utilisateurs actuels de Visual Basic. À la fois évolutif et extensible, le modèle en question
tient compte des normes Internet ouvertes (HTTP,
XML, SOAP, WSDL) de manière à être accessible et utilisable par n'importe quel client ou
système Internet.
Services Web ASP.NET
ASP.NET prend en charge les services Web avec les fichiers .asmx. Un fichier .asmx
est un fichier texte analogue à un fichier .aspx. Ce type de fichier peut être intégré à
une application ASP.NET qui inclut des fichiers .aspx. Ces fichiers peuvent être adressés
par un URI de la même façon que les fichiers .aspx.
L'exemple suivant illustre un fichier .asmx très simple.
<%@ WebService Language="C#" Class="HelloWorld" %>
using System;
using System.Web.Services;
public class HelloWorld : WebService {
[WebMethod] public String SayHelloWorld() {
return "Hello World";
}
}
<%@ WebService Language="VB" Class="HelloWorld" %>
Imports System
Imports System.Web.Services
Public Class HelloWorld :Inherits WebService
<WebMethod()> Public Function SayHelloWorld() As String
Return("Hello World")
End Function
End Class
<%@ WebService Language="JScript" Class="HelloWorld" %>
import System;
import System.Web.Services;
public class HelloWorld extends WebService {
WebMethodAttribute public function SayHelloWorld() : String {
return "Hello World";
}
}
|
|
C#
|
VB
|
JScript
|
|
Le début du fichier inclut une directive ASP.NET WebService et définit
le langage C#, Visual Basic ou JScript. Puis,
il importe l'espace de noms System.Web.Services. Vous devez inclure cet espace de noms. La classe HelloWorld est ensuite déclarée.
Cette classe est dérivée de la classe de base WebService (notez que l'opération de
dérivation à partir de la classe de base WebService est facultative). Enfin, toute
méthode destinée à être accessible en tant que partie du service a
l'attribut [WebMethod] en C#, <WebMethod()> en
Visual Basic ou WebMethodAttribute en JScript, devant sa
signature.
Afin de rendre ce service disponible, vous pouvez nommer le fichier HelloWorld.asmx
et le placer sur le serveur appelé UnDomaine.com dans un répertoire virtuel
appelé unDossier. Dans un navigateur, entrez ensuite
l'URL http://UnDomaine.com/unDossier/HelloWorld.asmx pour obtenir la page
indiquant les méthodes publiques pour ce service Web (celles marquées par l'attribut
WebMethod), ainsi que les protocoles (SOAP, HTTP ou
GET notamment) par lesquels appeler ces méthodes.
L'entrée de l'adresse : http://UnDomaine.com/unDossier/HelloWorld.asmx?WSDL
dans la fenêtre du navigateur retourne un document WSDL (Web Service Description Language). Ce
document WSDL très important est utilisé par les clients pour accéder au service.
Accès aux services Web
Outre la technologie côté serveur ASP.NET qui permet aux développeurs
de créer des services Web, le .NET Framework
offre un ensemble d'outils et de code perfectionné pour l'utilisation des services Web.
Dans la mesure où les services Web sont basés sur des protocoles ouverts
tels que le protocole SOAP (Simple Object Access Protocol), cette technologie cliente
peut également être exploitée pour utiliser les services Web non ASP.NET.
Le Kit de développement contient un outil appelé Web Services Description Language (WSDL.exe). Cet outil de ligne de commande
sert à créer des classes proxy à partir du WSDL. Vous pouvez par exemple entrer :
WSDL http://UnDomaine.com/unDossier/HelloWorld.asmx?WSDL
pour créer une classe proxy appelée HelloWorld.cs.
Cette classe serait très analogue à la classe créée dans la
section précédente. Elle contiendrait une méthode appelée SayHelloWorld qui retourne
une chaîne. La compilation de cette classe proxy sous la forme d'application puis l'appel de
la méthode de cette classe proxy permet à la classe proxy d'empaqueter une demande SOAP
via HTTP et de recevoir une réponse codée à partir de SOAP, laquelle est ensuite
marshalée en chaîne.
Du point de vue du client, le code serait simple, comme illustré dans l'exemple suivant.
HelloWorld myHelloWorld = new HelloWorld();
String sReturn = myHelloWorld.SayHelloWorld();
Dim myHelloWorld As New HelloWorld()
Dim sReturn As String = myHelloWorld.SayHelloWorld()
var myHelloWorld:HelloWorld = new HelloWorld();
var sReturn:String = myHelloWorld.SayHelloWorld();
|
|
C#
|
VB
|
JScript
|
|
Le résultat retourné serait « Hello World ».
La fin de la section présente des sujets sur les services Web plus pointus,
tels que l'envoi et la réception de types de données complexes. Vous y trouverez
également une section concernant la technologie Text Pattern Matching relative aux
URI qui retournent du texte comme s'il s'agissait d'un service Web. Vous pouvez aussi effectuer
des opérations de liaison de données avec des services Web (ce sujet est présenté à la section Données).
|