Comment : activer la mise en cache de sortie côté serveur pour un service Web
Cette rubrique est spécifique à une technologie existante. Les services Web XML et les clients du service Web XML doivent à présent être créés à l'aide de Windows Communication Foundation.
L'exemple de code suivant montre comment utiliser la propriété CacheDuration sur les méthodes de service Web pour spécifier la mise en cache de sortie pour une période de 60 secondes. Cet exemple illustre l'une des indications expliquée dans la rubrique Règles de conception pour les services Web XML créés à l'aide d'ASP.NET.
Deux problèmes peuvent affecter la mise en cache de sortie dans une application de service Web ASP.NET 2.0.
Dans ASP.NET 2.0, la méthode HTTP de la page de test est passée de GET à POST. Toutefois, les POST ne sont normalement pas mis en cache. Si vous modifiez la page de test dans une application de service Web ASP.NET 2.0 pour utiliser GET, la mise en cache fonctionne correctement.
De plus, HTTP indique qu'un agent utilisateur (user agent) (le navigateur ou l'application appelante) doit pouvoir substituer la mise en cache sur le serveur en affectant la valeur "no-cache" au paramètre "Cache-Control". Les applications ASP.NET ignorent donc les résultats mis en cache lorsqu'elles trouvent un en-tête "no-cache".
Exemple
<%@ WebService Language="C#" Class="MathService" %>
using System;
using System.Web.Services;
public class MathService : WebService {
[WebMethod(CacheDuration=60)]
public float Add(float a, float b)
{
return a + b;
}
[WebMethod(CacheDuration=60)]
public float Subtract(float a, float b)
{
return a - b;
}
[WebMethod(CacheDuration=60)]
public float Multiply(float a, float b)
{
return a * b;
}
[WebMethod(CacheDuration=60)]
public float Divide(float a, float b)
{
if (b==0) return -1;
return a / b;
}
}
<%@ WebService Language="VB" Class="MathService" %>
Imports System
Imports System.Web.Services
Public Class MathService
Inherits WebService
<WebMethod(CacheDuration := 60)> _
Public Function Add(a As Single, b As Single) As Single
Return a + b
End Function
<WebMethod(CacheDuration := 60)> _
Public Function Subtract(a As Single, b As Single) As Single
Return a - b
End Function
<WebMethod(CacheDuration := 60)> _
Public Function Multiply(a As Single, b As Single) As Single
Return a * b
End Function
<WebMethod(CacheDuration := 60)> _
Public Function Divide(a As Single, b As Single) As Single
If b = 0 Then
Return - 1
End If
Return a / b
End Function
End Class
Voir aussi
Tâches
Comment : activer la mise en cache de sortie sur un client de service Web
Concepts
Règles de conception pour les services Web XML créés à l'aide d'ASP.NET