Comment : Implémenter Key-Based dépendances de cache de données dans ASP.NET en utilisant Visual c# .NET

Traductions disponibles Traductions disponibles
Numéro d'article: 308147 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Résumé

Cet article explique comment implémenter la mise en cache de données en utilisant des dépendances basées sur une clé dans une application Microsoft ASP.NET. L'exemple présenté dans cet article crée et insère un objet DataSet dans le cache avec une dépendance à définir sur une autre entrée de cache en référençant sa clé. Pour des exemples de la mise en cache avec temps ou des dépendances basées sur des fichiers de données, consultez la section "Références" de cet article.

Configuration requise

  • Microsoft Windows 2000 ou Microsoft Windows XP
  • Microsoft Internet Information Server (IIS)
  • Microsoft .NET framework
  • Microsoft SQL Server

Créer une Application Web ASP.NET

Utiliser Microsoft Visual c# .NET pour créer un site Microsoft ASP.NET Web application nommée DataCacher :
  1. Ouvrez Microsoft Visual Studio .NET.
  2. Dans le menu fichier , pointez sur Nouveau , puis cliquez sur projet .
  3. Dans la boîte de dialogue Nouveau projet , cliquez sur Projets Visual c# sous Types de projets et puis cliquez sur Application Web ASP.NET sous modèles .
  4. Dans la zone emplacement , tapez DataCacher sous le nom du projet en remplaçant le nom par défaut WebApplication# dans le chemin d'accès d'URL. Si vous utilisez le serveur local, vous pouvez laisser le nom du serveur en tant que http://localhost, qui définit l'emplacement http://localhost/DataCacher.

Créer le formulaire Web

Remarque : le code qui est inclus dans cette section est expliqué plus en détail dans la section «Exécution du code».

Pour générer les données exemple de mise en cache :
  1. Ajoutez un nouveau formulaire Web nommé DataCacheSample.aspx à votre projet dans Visual Studio .NET :
    1. Cliquez avec le bouton droit sur le n?ud du projet dans la Solution Explorer.
    2. Cliquez sur Ajouter , puis sur Ajouter nouveau Web Form .
    3. Nommez le DataCacheSample.aspx de formulaire Web.
    4. Cliquez sur Ouvrir .
  2. Sous l'onglet Affichage Création pour le formulaire Web dans l'IDE Visual Studio .NET (environnement de développement intégré), ajouter un bouton de formulaire Web à la page :
    1. Utilisez une opération glisser-déplacer pour déplacer un bouton de formulaire Web sur la page.
    2. Cliquez pour sélectionner le nouveau bouton. Modifiez la propriété ID à CreateNewOrCached , puis rétablissez la propriété Text à En créer nouveau ou cache .
  3. Ajoutez un deuxième bouton de formulaire Web :
    1. Utilisez une opération glisser-et-déplacer pour déplacer un autre formulaire Web bouton sur la page de la boîte à outils.
    2. Cliquez pour sélectionner le nouveau bouton. Modifiez la propriété ID à Supprimer , puis rétablissez la propriété Text à Supprimer .
  4. Ajoutez une étiquette Web Form :
    1. Utilisez une opération glisser-déplacer pour déplacer une étiquette de formulaire Web sur la page de la boîte à outils.
    2. Cliquez pour sélectionner la nouvelle étiquette. Modifiez la propriété ID CacheStatus et désactivez la propriété Text .
  5. Utilisez une opération glisser-déplacer pour déplacer un contrôle de formulaire Web DataGrid sur la page de la boîte à outils. Pour ce contrôle, laissez la propriété ID est définie sur le paramètre par défaut DataGrid1 dans le volet des propriétés.

Ajoutez le code

Ajoutez le code pour insérer des éléments du cache, pour supprimer les éléments du cache et créer la dépendance de cache :
  1. Cliquez avec le bouton droit sur la page .aspx, puis cliquez sur le Code pour ouvrir la page code-behind.
  2. Pour cet exemple, assurez-vous que System.Data.SqlClient , System.Data et les espaces de noms System.Web.Caching sont ajoutés à l'espace de noms de liste dans la page code-behind. Si vous utilisez Visual Studio. NET pour créer le formulaire Web, votre espace de noms dans le code - behind page de liste ressemblera à la suivante :
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using System.Data.SqlClient;
    using System.Web.Caching;
    						
    Remarque : vous recevrez des avertissements si soit l'espace de noms n'est pas répertorié, ou bien si une liste redondante d'un espace de noms existe.
  3. Sous l'onglet Affichage de la Création , double-cliquez sur le bouton CreateNewOrCached pour ouvrir l'événement CreateNewOrCached_Click dans la page code-behind.
  4. Ajoutez le code suivant à l'événement CreateNewOrCached_Click :
    private void CreateNewOrCached_Click(object sender, System.EventArgs e) {
    	//Attempt to create a DataSet object from the cache entry with the key "CacheDataSetEmployees" 
    	object CacheDataSetEmployees = (DataSet)Cache.Get("CacheDataSetEmployees");
    	
            //Check to see if the object is null
    	if(CacheDataSetEmployees == null)
    	{
    	     //Set a value for the cache entry that will serve as the 
    	     //key for the dependency to be created on
    	     Cache["SqlPubsEmployees"] = "SomeValue";
    
    	     //Create the array of cache key item names
    	     string[] keys = new String[1];
    	     keys[0] = "SqlPubsEmployees";
    				
    	     DataSet ds = new DataSet();
    	     //Create the connection and pass in the ConnectionString
    	    SqlConnection MySqlConn = new SqlConnection("Server=kronicas17;Trusted_Connection=Yes;initial catalog=pubs");
    	     //Create the Data Adapter and pass in the command text and connection to use
    	     SqlDataAdapter MySda = new SqlDataAdapter("SELECT TOP 10 * FROM Employee", MySqlConn);
    	     //Populate the DataTable "Employees" in the DataSet
    	     MySda.Fill(ds,"Employee");
    	     //Set the DataGrid's DataSource to the "Employee" DataTable
    	     DataGrid1.DataSource = ds.Tables["Employee"];
    				
    	     //Create a dependency object referencing the array of cachekeys (keys)
    	     CacheDependency MyDependency = new CacheDependency(null, keys);
    	     //Insert the DataSet into Cache with a dependency on MyDependency
    	     Cache.Insert("CacheDataSetEmployees", ds, MyDependency);
    				MySqlConn.Close();
    				
    	     //Display the status of the DataSet/Cache Entry
    	     CacheStatus.Text = "New Version Created";
    	}
    	else
    	{
    	     //Display the status of the DataSet/Cache Entry
    	     CacheStatus.Text = "Cached Version Used";
    	     //Set the DataSource to the cached version of the DataSet
    	     DataGrid1.DataSource = CacheDataSetEmployees;
            }
            //Bind the DataGrid to the DataSource
    	DataGrid1.DataBind();
    }
    						
    Remarque : vous devrez peut-être modifier ConnectionString dans le code dans cette étape pour fonctionner correctement avec votre serveur SQL server. Pour le code fonctionne correctement, vous devez la base de données SQL Server pubs installée.
  5. Sous l'onglet mode de Création de la page DataCacheSample.aspx, double-cliquez sur le bouton Supprimer pour ouvrir l'événement Remove_Click dans la page code-behind.
  6. Ajoutez le code suivant à l'événement Remove_Click :
    private void Remove_Click(object sender, System.EventArgs e)
         {
    	//Remove the cache item listed in the cachekeys array (keys)
    	Cache.Remove("SqlPubsEmployees"); 	//Display the status of the cache item
    	CacheStatus.Text = "Cache Item Removed";
         }
    					
  7. Ajoutez l'élément suivant dans le fichier Web.config <system.web> de </system.web> :
    <identity impersonate=?true? />
    
  8. Dans le menu fichier , cliquez sur Enregistrer tout pour enregistrer le formulaire Web et les autres fichiers de projet associé.
  9. Dans le menu Générer dans l'environnement IDE de Visual Studio .NET, cliquez sur Générer pour générer le projet.

Exécute le code

  1. Pour exécuter le code, cliquez avec le bouton droit sur la page DataCacheSample.aspx dans l'Explorateur de solutions, puis cliquez sur afficher dans le navigateur .
  2. Cliquez sur le bouton CreateNewOrCached ; l'étiquette CacheStatus doit afficher «Nouvelle Version créé» et le contrôle DataGrid est rempli.

    NOTES :
    • Le paramètre de Création de nouvelle version de l'étiquette CacheStatus est le résultat de la clé de cache CacheDataSetEmployees ne fait pas référence encore à un élément de cache valide lorsque vous entrez l'événement. Dans ce cas, le DataSet est créé, le contrôle DataGrid est lié au DataSet et le DataSet est entrées dans le cache par la clé de cache «CacheDataSetEmployees» .
    • À partir de l'étape précédente vous devez avoir également remarqué la création de l'objet CacheDependency nouveau nommé MyDependency . L'objet MyDependency est répertorié comme la dépendance de l'élément CacheDataSetEmployees lorsqu'il est ajouté au cache en utilisant la méthode INSERT . Il est important de noter que, bien que cet exemple montre les dépendances de clé, vous pouvez utiliser autres types de basée sur les dépendances mise en cache critères, tels que les fichiers ou une marque horaire.
  3. Cliquez sur le bouton CreateNewOrCached à nouveau. L'étiquette CacheStatus affiche «Version mis en cache», indiquant que le DataSet mis en cache a été utilisé. Vous pouvez vérifier qu'il s'agit données mises en cache en modifiant un des enregistrements affichés dans la base de données pubs à l'aide Analyseur de requêtes SQL ou un autre outil. Après avoir modifié l'enregistrement, cliquez à nouveau sur le bouton CreateNewOrCached . Remarque que les modifications que vous avez apportées ne sont pas affichées. Cliquez sur Supprimer , puis cliquez sur CreateNewOrCached à nouveau pour voir les modifications apportées à la base de données.
  4. Cliquez sur le bouton Supprimer . L'étiquette CacheStatus Affiche «Cache saisie supprimé». L'élément du cache avec la clé «SqlPubsEmployees» est supprimée en utilisant la méthode Cache.Remove dans l'événement Remove_Click . Étant donné que vous dans la liste le tableau (qui contient le nom de clé du cache de l'élément supprimé) avec MyDependency lors de sa création, l'élément «CacheDataSetEmployees» est supprimée car vous créé en utilisant la méthode INSERT et référencer MyDependency comme son paramètre de dépendance.
  5. Cliquez sur le bouton CreateNewOrCached à nouveau. L'étiquette CacheStatus affiche le message «Nouvelle Version créé», car le DataSet a été créé en sur le fait qu'il existait plus dans le cache lorsque l'événement a été déclenché.
  6. Vous pouvez également remarquer que le contrôle DataGrid est affiché comme rempli avec des données même après que l'élément DataSet est retiré du cache. Ceci est le résultat de la propriété EnableViewState est défini sur True par défaut. Cela permet l'état du contrôle soit conservé et ce n'est pas lié à la manipulation d'entrée de cache dans le code. Pour une représentation plus visuelle de l'état du contrôle à chaque phase, vous pouvez définir EnableViewState sur false .
Remarque : ce qui concerne cet exemple, dans une situation réelle, le tableau de clés de cache (le tableau de clés dans l'exemple de code) peut-être contenir des clés de cache pour les autres tables ou autre cache éléments afin que, si un de ces éléments change, l'entrée du cache ( CacheDataSetEmployees dans cet exemple) pour l'élément qui a été créé avec cette dépendance est soit supprimée du cache ainsi. Vous pouvez puis agissez si nécessaire en utilisant les rappels ; pour plus d'informations sur les rappels, reportez-vous à la section "Références" de cet article.

Résolution des problèmes

  • Les noms de clés qui sont répertoriés dans le tableau de clés de cache doivent être associés à éléments réels du cache. S'ils ne sont pas le cas, l'élément pour lequel la dépendance est utilisée n'est pas correctement conservé dans le cache. Un exemple serait si le tableau de clés dans l'exemple de code détenues un autre élément du tableau et l'élément a la valeur un nom de clé de cache non valide.
  • Le tableau de clés de cache n'a aucune signification spécifique jusqu'à ce que qu'il est utilisé avec un objet CacheDependency .
  • Si vous insérez un élément dans le cache avec aucune dépendance ou autre d'expiration, le runtime contrôle lorsque l'élément est supprimé du cache.

Références

Pour plus d'informations à l'aide du délégué CacheItemRemovedCallback délégué, consultez le site Microsoft suivant :
Délégué CacheItemRemovedCallback
http://msdn2.microsoft.com/en-us/library/system.web.caching.cacheitemremovedcallback(vs.71).aspx
Remarque : le délégué CacheItemRemovedCallback définit une méthode de rappel pour avertir les applications lorsqu'un élément mis en cache est supprimé du cache.

Pour plus d'informations sur la classe CacheDependency , consultez le site Microsoft suivant :
Classe CacheDependency
http://msdn2.microsoft.com/en-us/library/system.web.caching.cachedependency(vs.71).aspx
Remarque : la classe CacheDependency suit les dépendances de cache, qui peuvent être des fichiers, répertoires ou à d'autres objets dans le cache de votre application.

Pour plus d'informations sur les différentes options de mise en cache qui sont disponibles pour ASP.NET, consultez la documentation du Kit de développement Microsoft .NET Framework SDK suivante :
Ajout d'éléments au cache
http://msdn.microsoft.com/en-us/library/cc511535.aspx
Pour plus d'informations sur les différentes options mise en cache qui sont disponibles pour ASP.NET, cliquez sur les numéros ci-dessous pour afficher les articles correspondants dans la base de connaissances Microsoft :
305140Introduction À ASP.NET
307225Information : ASP.NET Caching Overview

Propriétés

Numéro d'article: 308147 - Dernière mise à jour: mardi 28 août 2007 - Version: 2.8
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
  • Microsoft Visual C# .NET 2003 Initiation
  • Microsoft Visual C# .NET 2002 Initiation
Mots-clés : 
kbmt kbcaching kbdatabase kbhowtomaster KB308147 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 308147
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com