Comment faire pour effectuer de sortie mise en cache avec les services Web dans Visual C# .NET

Résumé

Remarque Espaces de noms suivants de la bibliothèque de classes.NET Framework sont référencés dans cet article :
  • System.Web.Services
  • System.Text
Cet article étape par étape décrit comment créer un exemple de service Web d’ASP.NET qui utilise la mise en cache de sortie. La mise en cache de sortie de met en cache la réponse issue d’un service Web en fonction de l’attribut de durée qui est spécifié pour une WebMethodde correspondant.

Remarque Dans ASP.NET 2.0, la méthode HTTP de la page de test est passée de GET à POST. Toutefois, les publications ne sont pas normalement mis en cache. Si vous modifiez la page de test dans une application de service Web de ASP.NET 2.0 pour utiliser GET, la mise en cache fonctionne correctement. De plus, HTTP indique qu’un agent utilisateur (le navigateur ou l’application appelante) doit pouvoir substituer la mise en cache de serveur en définissant l’en-tête Cache-Control à « no-cache ». Par conséquent, les applications ASP.NET ignorent les résultats mis en cache lorsqu’elles trouvent un en-tête « no-cache ».

Configuration requise

La liste suivante met en évidence les matériel, logiciel et infrastructure réseau recommandés ainsi que les service packs qui sont requis :
  • Microsoft Windows 2000 Professionnel, Microsoft Windows 2000 Server, Microsoft Windows 2000 Advanced Server ou Microsoft Windows XP
  • Microsoft.NET Framework
  • Microsoft Internet Information Services (IIS)

Créer une application de nouveau ASP.NET Web Service

Créez une nouvelle application ASP.NET Web Service nommée WSCacheSample :

  1. Démarrez Visual Studio .NET.
  2. Dans le menu fichier , pointez sur Nouveau, puis cliquez sur projet pour démarrer l’Assistant Nouveau projet.
  3. Sous types de projets, sélectionnez Visual C#. Sous modèle, sélectionnez ASP.NET Web Service.
  4. Dans la zone emplacement , remplacez « WebService # » dans le chemin d’accès de l’URL par le nom de votre projet, WSCacheSample. Si vous utilisez le serveur local, laissez le nom du serveur sous la forme http://localhost, afin que la zone emplacement ressemble à ceci :
    http://localhost/WSCacheSample

Créer l’exemple de service Web

  1. Dans l’Explorateur de solutions, cliquez sur le nœud du projet, pointez sur Ajouter, puis cliquez sur Ajouter un Service Web.
  2. Pour le nom, tapez CacheDemo.asmx, puis cliquez sur Ouvrir. Le service Web s’ouvre en mode Création.
  3. Cliquez sur le service Web, puis cliquez sur Afficher le Code.
  4. Ajoutez le code suivant au fichier de classe CacheDemo.asmx.cs. Cela ajoute un attribut WebMethod nommé GetCacheEntryTime avec un CacheDuration de 60 secondes.
    [WebMethod(CacheDuration=60)]public string GetCacheEntryTime(string Name)
    {
    StringBuilder sb = new StringBuilder("Hi ");
    sb.Append(Name);
    sb.Append(", the Cache entry was made at ");
    sb.Append(System.DateTime.Now.ToString());

    return(sb.ToString());
    }

    Remarque: par défaut, le CacheDuration de l’attribut WebMethod est définie sur 0, c'est-à-dire qu’il n’est pas mis en cache.
  5. Étant donné que l’exemple de code utilise la méthode StringBuilder , inclure une référence à l’espace de noms System.Text . L’espace de noms pour le service Web de liste ressemble à ceci :
    using System;using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Diagnostics;
    using System.Web;
    using System.Web.Services;
    using System.Text;

    Remarque: pour plus d’informations sur la classe StringBuilder , visitez le site Web de Microsoft Developer Network (MSDN) à l’adresse suivante :
  6. Dans l’environnement IDE Visual Studio .NET, cliquez sur Générer la Solution dans le menu Générer .
  7. Dans le menu fichier , cliquez sur Enregistrer tout pour enregistrer le projet et les fichiers associés.

Tester le projet

Maintenant que vous avez créé l’exemple de service Web CacheDemo , exécutez GetCacheEntryTimeWebMethod pour voir les effets du paramètre de l’attribut CacheDuration :
  1. Dans l’Explorateur de solutions, cliquez sur CacheDemo.asmx, puis cliquez sur afficher dans le navigateur.

    Le fichier .asmx s’ouvre dans le navigateur, et l’attributWebMethod GetCacheEntryTimeest répertorié dans une liste à puces en haut de la page.
  2. Cliquez sur le lien GetCacheEntryTime .
  3. Dans la zone nom de la méthode, tapez Joe , puis cliquez sur Invoke pour exécuter l’attribut WebMethod et renvoyer le résultat XML. Notez l’horodatage qui est renvoyé dans le message.

    Remarque: si les WebServices aide ne s’affiche pas, vous pouvez exécuter la méthode de service Web en tapant ce qui suit dans la zone adresse dans le navigateur Web :
    http://localhost/wscachesample/cachedemo.asmx/GetCacheEntryTime?Name=Joe
  4. Exécutez de nouveau la WebMethod en tapant Joe. Remarque: Si vous exécutez l’attribut WebMethod dans les période qui est indiquée par l’attribut CacheDuration de 60 secondes, le même horodatage s’affiche.
  5. Répétez l’étape 4, mais tapez Amy au lieu de Joe dans la zone nom du paramètre d’attribut WebMethod .

    Notez que le résultat de cachet de temps est différent. Cela se produit, car le résultat de la mise en cache de sortie par défaut est basé sur les paramètres de l’attribut WebMethod . Dans cet exemple, Joe est la valeur du paramètre pour les deux premiers tests et la sortie mise en cache est retournée pour le deuxième test. Lorsque vous utilisez Amy dans le troisième test, vous recevez un nouveau résultat. Si vous répétez le test dans 60 secondes, vous recevez un résultat de la mise en cache de sortie. La différence dans la version de la mise en cache de sortie est liée au paramètre de l’attribut WebMethod .

Résolution des problèmes

Lorsque vous décidez d’implémenter la mise en cache de sortie pour votre service Web ou non, n’oubliez pas ce serveur de ressources peuvent être diminuées si les paramètres d’attribut WebMethod qui sont associés les demandes varient considérablement ou si les réponses nécessitent de grandes quantités de données.

Références

Pour plus d’informations sur la propriété WebMethodAttribute.CacheDuration et la classe WebMethodAttribute , consultez la rubrique suivante dans la documentation de la bibliothèque de classes.NET Framework :Pour plus d’informations sur les services Web, visitez les sites Web MSDN suivants :
Instructions de conception pour les Services Web XML créés à l’aide d’ASP.NET
http://msdn2.microsoft.com/en-us/library/w8excbb0(vs.71).aspx

À l’aide de l’attribut WebMethod
http://msdn2.microsoft.com/en-us/library/byxd99hx(vs.71).aspx
Pour des exemples supplémentaires, la documentation et des liens relatifs à la programmation avec le.NET Framework, visitez le site CodePlex Web :
Propriétés

ID d'article : 318299 - Dernière mise à jour : 27 janv. 2017 - Révision : 1

Commentaires