Partager via


Déclaration d'un service Web XML

Lorsque vous créez un service Web XML dans ASP.NET, vous placez la directive @ WebService requise au début d'un fichier texte ayant une extension de nom de fichier .asmx. La présence du fichier .asmx et de la directive @ WebService mettent en corrélation l'adresse URL du service Web XML et son implémentation. Vous implémentez ensuite la classe de service Web XML qui définit les méthodes et les types de données visibles par les clients des services Web XML. Vous ajoutez enfin la logique de votre service Web XML à ces méthodes afin de traiter les demandes de service Web XML et de renvoyer les réponses. La classe de service Web XML que vous définissez peut être directement incluse dans le fichier .asmx ou un fichier séparé. Si vous utilisez un fichier séparé, il doit être compilé dans un assembly. Vous pouvez aussi appliquer un attribut WebService à la classe implémentant le service Web XML. Cette classe peut dériver de la classe WebService.

Pour déclarer un service Web XML dont l'implémentation réside dans le même fichier

  • Ajoutez une directive @ WebService au début d'un fichier ayant une extension .asmx, en spécifiant la classe implémentant le service Web XML et le langage de programmation utilisé dans l'implémentation.

    L'attribut Class peut prendre la valeur d'une classe résidant dans le même assembly que la directive @ WebService ou d'une classe dans un autre assembly. Si la classe réside dans un assembly séparé, elle doit être placée dans le répertoire \Bin de l'application Web où le service Web XML réside. C#, VB et JS, qui se réfèrent respectivement à C#, Visual Basic .NET et JScript .NET, peuvent être affectés à l'attribut Language.

    L'exemple de code suivant affecte C# à l'attribut Language de la directive @ WebService et MyMath, qui réside dans le même fichier, à l'attribut Class.

    <%@ WebService Language="C#" Class="MyMath" %>
    using System.Web.Services;
    public class MyMath {
         [ WebMethod ]
         public int Add(int num1, int num2) {
              return num1+num2;
         }
    }
    

Pour déclarer un service Web XML dont l'implémentation réside dans un assembly

  • Ajoutez une directive @ WebService au début d'un fichier ayant une extension .asmx, en spécifiant la classe implémentant le service Web XML, l'assembly contenant l'implémentation et le langage de programmation utilisé dans l'implémentation.

    La directive @ WebService suivante est la seule ligne d'un fichier ayant une extension .asmx ; elle spécifie que la classe MyName.MyWebService réside dans l'assembly MyAssembly au sein du répertoire \Bin de l'application Web hébergeant le service Web XML.

    <%@ WebService Language="C#" Class="MyName.MyWebService,MyAssembly" %>
    [Visual Basic]
    <%@ WebService Language="VB" Class="MyName.MyWebService,MyAssembly" %>
    

    Remarque Si vous ne spécifiez pas d'assembly dans la directive @ WebService, ASP.NET parcourt la liste des assemblys dans le répertoire \Bin de l'application Web hébergeant le service Web XML lors du premier accès au service. Vous obtiendrez donc une meilleure performance lors du premier accès si vous indiquez le nom de l'assembly.

Application de l'attribut WebService

L'application de l'attribut WebService optionnel à une classe implémentant un service Web XML, vous permet de définir l'espace de noms XML par défaut pour le service ainsi qu'une chaîne décrivant le service Web XML.

Il est vivement recommandé que cet espace de noms par défaut (http://tempuri.org) soit modifié avant que le service Web XML ne soit rendu utilisable publiquement. Ceci est important car le service Web XML doit se distinguer des autres services Web XML qui pourraient avoir laissé par inadvertance l'espace de noms comme valeur par défaut (<http://tempuri.org/>).

Pour définir l'espace de noms XML dont un service Web XML est membre

  • Appliquez un attribut WebService à la classe implémentant le service Web XML, en définissant la propriété Namespace.

L'exemple de code suivant donne à l'espace de noms XML la valeur https://www.contoso.com/.

<%@ WebService Language="C#" Class="Math" Debug=true%>
using System.Web.Services;
using System;

[WebService(Namespace="https://www.contoso.com/")]
public class Math {
     [ WebMethod ]
     public int Add(int num1, int num2) {
         return num1+num2;
         }
 }
[Visual Basic]
<%@ WebService Language="VB" Class="Math"%>
Imports System.Web.Services
Imports System

<WebService(Namespace:="https://www.contoso.com/")> _
Public Class Math
  <WebMethod()> _
   Public Function Add(num1 As Integer, num2 As Integer) _
                   As Integer
        Return num1 + num2
    End Function 
End Class 

Dérivation de la classe WebService

Les classes implémentant un service Web XML créé à l'aide d'ASP.NET peuvent éventuellement dériver de la classe WebService pour accéder aux objets ASP.NET communs tels que Application, Session, User et Context. Les propriétés Application et Session donnent accès à l'état de stockage et de réception pendant la durée de vie de l'application Web ou d'une session particulière. Pour plus d'informations sur la gestion d'état, consultez Gestion d'état dans la création de services Web XML à l'aide d'ASP.NET. La propriété User contient l'identité de l'appelant, si l'authentification est activée, pour le service Web XML. Grâce à l'identité, un service Web XML peut déterminer si la demande est autorisée. Pour plus d'informations sur l'authentification, consultez Sécurisation des services Web XML. La propriété Context donne accès à toutes les informations spécifiques à HTTP relatives à la demande du client de service Web XML. Pour plus d'informations sur la propriété Context, consultez WebService.Context, propriété.

L'exemple de code suivant utilise la propriété Context pour obtenir l'heure à laquelle la demande a été faite sur le serveur.

<%@ WebService Language="C#" Class="Util" %>
using System;
using System.Web.Services;

public class Util: WebService {
   [ WebMethod(Description="Returns the time as stored on the Server",
               EnableSession=false)]
   public string Time() 
   {
      return Context.Timestamp.TimeOfDay.ToString();
   }
 } 
[Visual Basic]
<%@ WebService Language="VB" Class="Util" %>
Imports System
Imports System.Web.Services

Public Class Util
   Inherits WebService
   
   <WebMethod(Description := "Returns the time as stored on the Server", _
              EnableSession := False)> _
   Public Function Time() As String
        Return Context.Timestamp.TimeOfDay.ToString()
   End Function
End Class

Voir aussi

Définition des méthodes de service Web XML | Création de services Web XML à l'aide d'ASP.NET | Notions de base de la création de services Web XML à l'aide d'ASP.NET