Écriture d'un service Web simple
Vous pouvez écrire un service Web XML simple en quelques minutes à l'aide de n'importe quel éditeur de texte. Le service décrit dans cette section, MathService, expose des méthodes pour l'addition, la soustraction, la division et la multiplication de deux nombres. Au début de la page, la directive suivante identifie le fichier en tant que service Web XML, en plus de spécifier le langage du service (C#, dans ce cas-ci).
<%@ WebService Language="C#" Class="MathService" %>
Dans ce même fichier, vous définissez une classe qui encapsule les fonctionnalités de votre service. Cette classe doit être publique et peut éventuellement hériter de la classe de base WebService. Devant chaque méthode qui doit être exposée à partir du service se trouve un attribut [WebMethod]. Sans cet attribut, la méthode n'est pas exposée à partir du service. Cela peut être utile pour masquer les détails d'implémentation appelés par des méthodes Web Service publiques, ou si la classe WebService est également utilisée dans des applications locales (une application locale peut utiliser une classe publique, mais seules les classes WebMethod sont accessibles à distance en tant que services Web XML).
using System;
using System.Web.Services;
public class MathService : WebService {
[WebMethod] public int Add(int a, int b) {
return a + b;
}
}
Imports System
Imports System.Web.Services
Public Class MathService : Inherits WebService
<WebMethod()> Public Function Add(a As Integer, b As Integer) As Integer
Return(a + b)
End Function
End Class
import System;
import System.Web.Services;
public class MathService extends WebService {
WebMethodAttribute public function Add(a:int, b:int) : int {
return a + b;
}
}
|
|
C#
|
VB
|
JScript
|
|
Les fichiers de service Web XML sont enregistrés avec l'extension de fichier .asmx. Comme les fichiers .aspx, ils sont automatiquement compilés par le runtime de ASP.NET lors du lancement d'une demande au service (les demandes suivantes sont traitées par un objet de type précompilé mis en cache). Dans le cas de MathService, vous avez défini la classe WebService dans le fichier .asmx proprement dit. Remarquez que si un navigateur demande un fichier .asmx, le runtime de ASP.NET retourne une page d'aide décrivant le service Web XML.
Services Web XML précompilés
Si vous possédez une classe précompilée que vous souhaitez exposer en tant que service Web XML (et si cette classe expose des méthodes marquées de l'attribut [WebMethod]), vous pouvez créer un fichier .asmx à l'aide de la ligne suivante uniquement.
<%@ WebService Class="MyWebApplication.MyWebService" %>
MyWebApplication.MyWebService définit la classe WebService. Il se situe dans le sous-répertoire \bin de l'application ASP.NET.
Consommation d'un service Web XML à partir d'une application cliente
Pour profiter de ce service, vous devez utiliser l'outil de ligne de commande Web Services Description Language (WSDL.exe) fourni dans le Kit de développement afin de créer une classe proxy similaire à la classe définie dans le fichier .asmx. (Elle contiendra uniquement les méthodes WebMethod.) Ensuite, vous compilez votre code en ajoutant cette classe proxy.
WSDL.exe prend en charge une série d'options de ligne de commande. Cependant, pour créer une classe proxy, une seule option est nécessaire : l'identificateur URI de WSDL. Cet exemple illustre le passage de quelques options supplémentaires qui spécifient le langage, l'espace de noms et l'emplacement de sortie préférés de la classe proxy. Il effectue également la compilation par rapport à un fichier WSDL enregistré précédemment, plutôt que par rapport à l'identificateur URI du service proprement dit :
wsdl.exe /l:CS /n:MathService /out:MathService.cs MathService.wsdl
Lorsque la classe proxy existe, vous pouvez créer des objets fondés sur celle-ci. Chaque appel de méthode lancé avec l'objet est ensuite envoyé à l'identificateur URI du service Web XML (généralement en tant que demande SOAP).
| |
| VB MathServiceClient.aspx |
|
|