> Tech > Actualisation de la dépendance des données

Actualisation de la dépendance des données

Tech - Par Renaud ROSSET - Publié le 24 juin 2010
email

ASP.NET 2.0 propose une nouvelle fonctionnalité de mise en cache, à savoir la possibilité de créer une dépendance de cache basée sur SQL Server. Il est possible de fonder la dépendance sur la durée et sur les mises à jour de tables. Si vous souhaitez mettre en cache une page

Actualisation de la dépendance des données

de manière générale pendant 5 minutes, mais avec une mise à jour possible plus rapide en cas de modification de données clé, vous allez employer la dépendance de cache SQL. ASP.NET gère deux modes pour ce modèle de mise en cache : l’un est rétro-compatible avec SQL Server 2000 (et, par défaut, SQL Server 7.0) et l’autre est spécifique à SQL Server 2005.

Commençons par examiner le modèle compatible avec SQL Server 2000, appelé méthode d’interrogation. Avec cette méthode, vous configurez ASP.NET en vue d’interroger automatiquement la base de données selon un intervalle spécifié et de mettre à jour le cache si des changements sont intervenus sur la table qui vous intéresse. Ce modèle vous permet de fournir un délai d’actualisation nominal pour votre page Web, mais continue de réagir selon une fréquence plus rapprochée aux modifications importantes dans votre base de données. L’inconvénient de cette méthode est que l’actualisation est toujours basée sur le temps. Par ailleurs, la configuration de ce type de dépendance de base de données requiert plus de travail que l’exploitation des notifications de modification automatisées dans SQL Server 2005.

Néanmoins, même si vous avez déjà créé une solution d’interrogation de base de données personnalisée, vous serez peut-être malgré tout intéressé par ce modèle afin d’exploiter le codage proposé par Microsoft et de réduire la quantité de code personnalisé dans votre application. Plus important encore, votre solution personnalisée peut invalider la totalité du cache afin de vérifier si des données ont été modifiées, alors que le modèle de dépendance de cache SQL vérifie les modifications de la base de données sans invalider le cache, à moins qu’il faille inclure de nouvelles données. D’autre part, vous pouvez associer SQLCacheDependency sous forme de propriété sur l’objet DataSource utilisé dans votre page ASP.NET au lieu d’écrire du code réel (nous reviendrons sur cet aspect après avoir examiné la configuration).

Pour configurer ce modèle, vous devez recourir à l’utilitaire aspnet_regsql.exe, lequel vous permet de configurer votre base de données afin de prendre en charge cette solution basée sur l’interrogation. Aspnet_regsql.exe est un outil de ligne de commande et il vous impose de définir une chaîne de paramètres de ligne de commande. Le premier ensemble de paramètres définit la chaîne de connexion pour la base de données sur laquelle vous souhaitez créer la dépendance SQL automatisée. Vous utilisez trois ou quatre paramètres pour créer la chaîne de connexion. Le premier paramètre, –S suivi du nom de votre serveur, définit le serveur. Si vous référencez une instance nommée, incluez son nom en tant que partie du paramètre. L

e deuxième paramètre, –D suivi du nom de la base de données, correspond à la base de données que vous allez référencer sur le serveur en question. Enfin, il faut spécifier les informations d’identification. Si la base de données est située dans votre domaine courant ou sur votre ordinateur actuel, vous pouvez employer –E, pour dire à aspnet_regsql .exe d’employer la sécurité intégrée et votre compte courant pour référencer la base de données. Vous avez aussi la possibilité de fournir un nom d’utilisateur et un mot de passe, précédés des intitulés de paramètre –U et –P respectivement. L’exemple de commande du listing 2 définit la base de données en employant les paramètres de connexion ci-dessus et certains paramètres supplémentaires afin de créer la dépendance de base de données.

 Pour que ce type de dépendance fonctionne, il faut définir deux éléments supplémentaires en plus de la chaîne de connexion. Le premier est une table spécifique à ASP.NET, qui est mise à jour lorsqu’une table présentant un intérêt l’est. La base de données a uniquement besoin d’une table commune pour enregistrer les mises à jour possibles vers n’importe quelle table de l’application. Le paramètre –ED (pensez à « Enable Database », autrement dit, activer la base de données) du listing 2 indique à aspnet_regsql.exe de créer cette table, intitulée AspNet_ SqlCacheTablesForChangeNotification, et les cinq procédures stockées (préfacées dans l’espace de nom AspNet_namespace) utilisées par ASP.NET pour y accéder.

Le deuxième élément à définir est la table devant faire l’objet d’un suivi concernant les mises à jour. Le paramètre –ET indique à aspnet_ regsql.exe que vous souhaitez activer une table (« Enable a Table ») pour une dépendance de cache SQL. L’étape suivante consiste à nommer la table sur laquelle ce déclencheur sera créé en vue d’enregistrer les mises à jour dans la table de suivi des changements de la base de données. Le paramètre –T de l’exemple du listing 2 indique à aspnet_regsql.exe la définition de table à modifier et l’utilitaire ajoutera alors un déclencheur intitulé <table>_ AspNet_SqlCacheNotification_Trigger à la table en question.

Le processus de création d’une nouvelle table, des procédures stockées et d’un déclencheur sur une table existante requiert des niveaux d’autorisation élevés, d’où mon utilisation du compte sa dans l’exemple. Ces étapes ont configuré votre base de données afin qu’elle gère une dépendance SQL basée sur les interrogations. L’étape suivante consiste à informer votre application de la dépendance au moyen de son fichier web.config. Dans ce fichier pour votre application, vous ajoutez une nouvelle section caching en tant que partie de la section System.Web. Cette nouvelle section, illustrée dans le listing 3, fournit à ASP.NET le nom de la connexion de base de données, celui de la chaîne de connexion (également définie dans votre fichier web.config), ainsi que la fréquence d’interrogation, mesurée en millisecondes. Notez que vous n’avez pas besoin d’écrire du code ou de dupliquer des informations de connexion de base de données spécifiques. Il suffit d’enregistrer votre dépendance auprès d’ASP.NET.

La déclaration dans le listing 3 n’inclut pas de nom de table, uniquement le nom de base de données, ce qui introduit une limitation : la fréquence d’interrogation effectuée par une dépendance donnée sera définie en fonction de la table que vous souhaitez invalider le plus souvent. Notre exemple interroge une seule table dans la base de données, ce qui n’affectera pas les performances. Néanmoins, en cas de problème, il pourrait être difficile de déterminer quelle table a été modifiée. Pour résoudre ce problème, vous pouvez inclure la table qui vous intéresse dans la définition de dépendance. Pour utiliser cette dépendance au sein de votre code applicatif, il faut modifier votre déclaration de cache. Vous pouvez ajouter un SqlDependency à n’importe laquelle des formes de mise en cache précédentes, et plus important encore, vous pouvez l’associer directement à la source de données servant à remplir les contrôles.

Pour associer votre dépendance au sein d’une déclaration de cache, il suffit d’ajouter la déclaration suivante :
SqlDependency="AdvWksDep:Orders" Pour un objet DataSource, vous ajoutez la même instruction dans votre déclaration de source de données :
<asp:SqlDataSource EnableCaching="true" CacheDuration="Infinite" SqlCacheDependency= "AdvWksDep:Orders" … />

Dans cette déclaration, je pourrais utiliser la dépendance afin de vérifier des données sur une autre table que celle décrite précédemment. Et même si une table était mise à jour, cela n’invaliderait pas le deuxième cache. Toutefois, à la base, le mode d’interrogation demeure une technologie axée sur le temps : que vous invalidiez le cache au bout de 5 secondes ou que vous vérifiiez seulement la base de données pour une mise à jour toutes les 5 secondes, le contrôle se produit toujours selon un intervalle de temps prédéfini. L’autre possibilité consiste à faire en sorte que SQL Server informe ASP.NET de la survenance d’un changement.

Téléchargez cette ressource

Préparer l’entreprise aux technologies interconnectées

Préparer l’entreprise aux technologies interconnectées

Avec la « quatrième révolution industrielle », les environnements hyperconnectés entraînent de nouveaux risques en matière de sécurité. Découvrez, dans ce guide Kaspersky, comment faire face à cette nouvelle ère de vulnérabilité.

Tech - Par Renaud ROSSET - Publié le 24 juin 2010