Share via


Recommandations sur la gestion d'état ASP.NET

Mise à jour : novembre 2007

La gestion d'état désigne le processus grâce auquel vous conservez les informations sur l'état et sur la page entre plusieurs demandes d'une même page ou de pages différentes. Conformément à toute technologie HTTP, une page Web Forms est sans état, c'est-à-dire qu'elle n'indique pas automatiquement si les demandes d'une séquence proviennent toutes du même client ou si une seule instance de navigateur continue d'afficher activement une page ou un site. De plus, les pages sont supprimées et recréées lors de chaque aller-retour sur le serveur ; par conséquent, les informations sur une page n'existent pas au-delà du cycle de vie de la page. Pour plus d'informations sur les allers-retours sur le serveur et le cycle de vie des pages Web Forms, consultez Vue d'ensemble du cycle de vie des pages ASP.NET.

ASP.NET offre plusieurs solutions pour conserver l'état entre les allers-retours sur le serveur. L'option que vous choisissez dépend fortement de votre application et doit être fondée sur les critères suivants :

  • Quelle quantité d'informations avez-vous besoin de stocker ?

  • Le client accepte-t-il les cookies persistants ou les cookies chargés en mémoire ?

  • Les informations doivent-elles être stockées sur le client ou sur le serveur ?

  • S'agit-il d'informations sensibles ?

  • Quels critères de performances et de bande passante avez-vous pour votre application ?

  • Quelles sont les fonctions des navigateurs et périphériques que vous ciblez ?

  • Devez-vous stocker des informations par utilisateur ?

  • Pendant combien de temps avez-vous besoin de stocker les informations ?

  • Avez-vous une batterie de serveurs Web (plusieurs serveurs), un jardin Web (plusieurs processus sur un ordinateur) ou un processus unique qui dessert l'application ?

Options de gestion d'état côté client

Le stockage des informations de page à l'aide des options côté client n'utilise pas les ressources du serveur. Ces options offrent généralement une sécurité minimale, mais d'excellentes performances sur le serveur en raison de la faible sollicitation de ses ressources. Toutefois, dans la mesure où vous devez envoyer des informations au client pour qu'elles soient stockées, il existe une limite à la quantité d'informations que vous pouvez ainsi stocker.

Les éléments suivants sont les options de gestion d'état côté client qu'ASP.NET prend en charge :

  • État d'affichage

  • État du contrôle

  • Champs masqués

  • Cookies

  • Chaînes de requête

État d'affichage

Les pages Web Forms fournissent la propriété ViewState comme structure intégrée permettant de conserver automatiquement les valeurs entre plusieurs demandes de la même page. L'état d'affichage est géré comme un champ masqué dans la page. Pour plus d'informations, consultez Vue d'ensemble de la gestion d'état ASP.NET.

Vous pouvez utiliser l'état d'affichage pour stocker les valeurs spécifiques à votre page entre les allers-retours lorsque votre page est republiée sur elle-même. Par exemple, si votre application conserve les informations spécifiques à l'utilisateur, c'est-à-dire les informations qui sont utilisées dans la page, mais qui ne font pas nécessairement partie du contrôle, vous pouvez les stocker dans l'état d'affichage.

Les avantages de l'utilisation de l'état d'affichage sont les suivants :

  • Aucune ressource serveur requise   L'état d'affichage est contenu dans une structure du code de page.

  • Implémentation simple   L'état d'affichage n'impose d'utiliser aucune programmation personnalisée. Il est activé par défaut pour tenir à jour les données d'état sur les contrôles.

  • Fonctionnalités de sécurité améliorées   Les valeurs de l'état d'affichage sont hachées, compressées et codées pour les implémentations Unicode, ce qui offre une plus grande sécurité que l'utilisation de champs masqués.

Les inconvénients de l'utilisation de l'état d'affichage sont les suivants :

  • Considérations de performances   Dans la mesure où l'état d'affichage est stocké dans la page elle-même, le stockage de valeurs importantes peut provoquer un ralentissement de la page lorsque les utilisateurs l'affichent et la publient. C'est particulièrement vrai pour les périphériques mobiles sur lesquels la bande passante représente souvent une limite.

  • Limites des périphériques   Les périphériques mobiles peuvent ne pas avoir la capacité de mémoire pour stocker une grande quantité de données d'état d'affichage.

  • Risques de sécurité potentiels   L'état d'affichage est stocké dans un ou plusieurs champs masqués sur la page. Même s'il stocke des données dans un format haché, il peut faire l'objet d'une falsification. Les informations contenues dans le champ masqué sont susceptibles d'être vues si le code source de la sortie de page est affiché directement, ce qui peut entraîner un problème de sécurité. Pour plus d'informations, consultez Sécurité des applications Web ASP.NET et Méthodes de sécurité de base pour les applications Web.

État du contrôle

L'infrastructure de page ASP.NET fournit la propriété ControlState comme moyen de stocker les données de commande personnalisées entre les voyages vers le serveur. Par exemple, si vous avez écrit un contrôle personnalisé qui contient différents onglets affichant différentes informations, ce contrôle doit savoir quel onglet est sélectionné entre les allers-retours pour fonctionner comme prévu. L'état d'affichage peut être utilisé dans ce but, mais les développeurs peuvent le désactiver au niveau de la page, ce qui entraînera la rupture du contrôle. Contrairement à l'état d'affichage, l'état du contrôle ne peut pas être désactivé, donc il offre un moyen plus fiable de stocker des données d'état de contrôle.

Les avantages de l'utilisation de l'état de contrôle sont les suivants :

  • Aucune ressource serveur requise   Par défaut, l'état du contrôle est stocké dans des champs masqués sur la page.

  • Fiabilité   Étant donné que l'état du contrôle ne peut pas être désactivé comme l'état d'affichage, il constitue une méthode plus fiable de gestion de l'état des contrôles.

  • Polyvalence   Des adaptateurs personnalisés peuvent être écrits pour contrôler le mode et le lieu de stockage des données d'état du contrôle.

Les inconvénients de l'utilisation de l'état de contrôle sont les suivants :

  • Légère programmation requise   Bien que l'infrastructure de page ASP.NET offre une base pour l'état du contrôle, celui-ci est un mécanisme de persistance d'état personnalisé. Pour utiliser pleinement l'état du contrôle, vous devez écrire un code permettant d'enregistrer et de charger cet état.

Champs masqués

Vous pouvez stocker les informations propres à une page dans un champ masqué de la page afin de conserver l'état de celle-ci. Pour plus d'informations sur les champs masqués, consultez Recommandations sur la gestion d'état ASP.NET.

Si vous utilisez des champs masqués, il est préférable de ne stocker que de petites quantités des données fréquemment modifiées sur le client.

Remarque :

Si vous utilisez des champs masqués, vous devez envoyer vos pages au serveur à l'aide de la méthode HTTP POST plutôt que de demander la page via son URL (méthode HTTP GET).

Les avantages de l'utilisation des champs masqués sont les suivants :

  • Aucune ressource serveur requise   Le champ masqué est stocké et lu depuis la page.

  • Prise en charge généralisée   Presque tous les navigateurs et périphériques clients prennent en charge les champs masqués dans les formulaires.

  • Implémentation simple   Les champs masqués sont des contrôles HTML standard qui n'exigent aucune logique de programmation complexe.

Les inconvénients de l'utilisation des champs masqués sont les suivants :

  • Risques de sécurité potentiels   Le champ masqué peut faire l'objet d'une falsification. Les informations contenues dans le champ masqué sont susceptibles d'être vues si le code source de la sortie de page est affiché directement, ce qui peut entraîner un problème de sécurité. Vous pouvez chiffrer et déchiffrer manuellement le contenu d'un champ masqué, mais cette opération requiert une programmation et une charge mémoire supplémentaires. Si la sécurité pose un problème, envisagez d'utiliser un mécanisme d'état serveur afin qu'aucune information sensible ne soit envoyée au client. Pour plus d'informations, consultez Sécurité des applications Web ASP.NET et Méthodes de sécurité de base pour les applications Web.

  • Architecture de stockage simple   Le champ masqué ne prend pas en charge les types de données riches. Les champs masqués proposent un champ composé d'une seule valeur de chaîne pour insérer les informations. Pour stocker plusieurs valeurs, vous devez implémenter des chaînes délimitées et le code doit analyser ces chaînes. Vous pouvez sérialiser et désérialiser manuellement les types de données riches vers et depuis des champs masqués, respectivement. Toutefois, un code supplémentaire est requis pour cela. Si vous devez stocker des types de données riches sur le client, envisagez d'utiliser à la place l'état d'affichage. La sérialisation est intégrée à l'état d'affichage, qui stocke les données dans des champs masqués.

  • Considérations de performances   Dans la mesure où les champs masqués sont stockés dans la page elle-même, le stockage de valeurs importantes peut provoquer un ralentissement de la page lorsque les utilisateurs l'affichent et la publient.

  • Limitations de stockage   Si la quantité de données dans un champ masqué devient très importante, certains proxies et pare-feu empêcheront l'accès à la page qui les contient. La quantité maximale pouvant varier avec des implémentations de pare-feu et de proxy différentes, les champs masqués importants peuvent s'avérer sporadiquement problématiques. Si vous devez stocker de nombreux éléments de données, envisagez d'effectuer l'une des opérations suivantes :

    • Mettez chaque élément dans un champ masqué séparé.

    • Utilisez l'état d'affichage avec activation de la segmentation de l'état d'affichage, qui sépare automatiquement les données en plusieurs champs masqués.

    • Au lieu de stocker des données sur le client, faites-les persister sur le serveur. Plus vous envoyez de données au client, plus le temps de réponse apparent de votre application sera lent parce que le navigateur devra télécharger ou envoyer plus de données.

Cookies

Les cookies sont utiles pour stocker sur le client de petites quantités d'informations fréquemment modifiées. Ces informations sont envoyées avec la demande au serveur. Pour plus d'informations sur la création et la lecture de cookies, consultez Vue d'ensemble des cookies ASP.NET.

Les avantages de l'utilisation des cookies sont les suivants :

  • Règles d'expiration configurables   Le cookie peut expirer quand la session du navigateur se termine ou peut rester indéfiniment sur l'ordinateur client et être dès lors soumis aux règles d'expiration définies sur le client.

  • Aucune ressource serveur requise   Le cookie est stocké sur le client et lu par le serveur après une publication.

  • Simplicité   Le cookie est une structure de texte légère composée de simples paires clé/valeur.

  • Persistance des données   Bien que la longévité du cookie sur un ordinateur client dépende des règles d'expiration définies sur ce dernier et de l'intervention de l'utilisateur, les cookies sont en général la forme la plus durable de persistance des données sur le client.

Les inconvénients de l'utilisation des cookies sont les suivants :

  • Limites de taille   La plupart des navigateurs n'acceptent pas les cookies supérieurs à 4 096 octets, même si la prise en charge de cookies de 8 192 octets tend à devenir la norme dans les nouvelles versions de navigateurs et de périphériques clients.

  • Refus configurable par l'utilisateur   Certains utilisateurs interdisent à leur navigateur ou périphérique client de recevoir des cookies, limitant ainsi cette fonctionnalité.

  • Risques potentiels pour la sécurité   Les cookies peuvent faire l'objet de falsifications. Les utilisateurs peuvent manipuler les cookies sur leur ordinateur, ce qui risque, potentiellement, de compromettre la sécurité ou de provoquer l'échec de l'application dépendant du cookie. Par ailleurs, bien que les cookies soient uniquement accessibles au domaine qui les a envoyés au client, les pirates ont par le passé trouvé le moyen d'accéder aux cookies à partir d'autres domaines sur l'ordinateur d'un utilisateur. Vous pouvez chiffrer et déchiffrer manuellement des cookies, mais cela exige une programmation supplémentaire et peut affecter la performance de l'application en raison du temps requis pour le chiffrement et le déchiffrement. Pour plus d'informations, consultez Sécurité des applications Web ASP.NET et Méthodes de sécurité de base pour les applications Web.

    Remarque :

    Les cookies sont souvent utilisés à des fins de personnalisation, comme lorsque le contenu est personnalisé pour un utilisateur identifié. Dans la plupart de ces cas, le problème provient de l'identification plutôt que de l'authentification. Vous pouvez donc généralement sécuriser un cookie qui est utilisé à des fins d'identification en stockant le nom d'utilisateur, le nom du compte ou un ID d'utilisateur unique (tel qu'un GUID) dans le cookie puis, à l'aide de ce dernier, accéder à l'infrastructure de personnalisation de l'utilisateur d'un site.

Chaînes de requête

Une chaîne de requête se compose d'informations qui sont ajoutées à la fin de l'URL d'une page. Pour plus d'informations, consultez Vue d'ensemble de la gestion d'état ASP.NET.

Vous pouvez utiliser une chaîne de requête pour renvoyer les données à votre page ou à une autre page de l'URL. Les chaînes de requête constituent un moyen simple, mais limité de conserver certaines informations d'état. Par exemple, elles permettent de transmettre facilement des informations, comme un numéro de produit, d'une page à une autre page où elles seront traitées.

Les avantages de l'utilisation des chaînes de requête sont les suivants :

  • Aucune ressource serveur requise   La chaîne de requête est contenue dans la demande HTTP d'une URL spécifique.

  • Prise en charge largement répandue   Presque tous les navigateurs et périphériques clients prennent en charge l'utilisation de chaînes de requête pour transmettre des valeurs.

  • Implémentation simple   ASP.NET assure une prise en charge complète de la méthode chaîne de requête, y compris la lecture des chaînes de requête avec la propriété Params de l'objet HttpRequest.

Les inconvénients de l'utilisation des chaînes de requête sont les suivants :

  • Risques potentiels pour la sécurité   Les informations contenues dans les chaînes de requête sont directement consultables par l'utilisateur via l'interface utilisateur du navigateur. Un utilisateur peut ajouter l'URL aux signets ou l'envoyer à d'autres utilisateurs, transmettant ainsi en même temps les informations dans la chaîne de requête. Si les données sensibles contenues dans la chaîne de requête vous importent, envisagez d'utiliser des champs masqués dans un formulaire qui utilise POST au lieu de chaînes de requête. Pour plus d'informations, consultez Sécurité des applications Web ASP.NET et Méthodes de sécurité de base pour les applications Web.

  • Capacité limitée   Certains navigateurs et périphériques clients imposent une limite de 2083 caractères sur la longueur des URL.

Résumé de la gestion d'état des méthodes côté client

Le tableau suivant répertorie les options de gestion d'état côté client qui sont disponibles avec ASP.NET, et fournit des recommandations sur l'utilisation de chaque option.

Option de gestion d'état

Utilisation recommandée

État d'affichage

À utiliser lorsque vous devez stocker de faibles quantités d'informations pour une page qui sera publiée sur elle-même. L'utilisation de la propriété ViewState garantit une sécurité élémentaire des fonctionnalités.

État du contrôle

À utiliser lorsque vous devez stocker de faibles quantités d'informations d'état pour un contrôle entre des allers-retours sur le serveur.

Champs masqués

À utiliser lorsque vous devez stocker de faibles quantités d'informations pour une page qui sera publiée sur elle-même ou sur une autre page, et lorsque la sécurité n'est pas un réel enjeu.

Remarque :
Vous ne pouvez utiliser un champ masqué que sur les pages envoyées au serveur.

Cookies

À utiliser lorsque vous devez stocker de faibles quantités d'informations sur le client et que la sécurité n'est pas un réel enjeu.

Chaîne de requête

À utiliser lorsque vous transférez de faibles quantités d'informations d'une page à une autre et que la sécurité n'est pas un réel enjeu.

Remarque :
Vous ne pouvez utiliser des chaînes de requête que si vous demandez la même page ou une autre page par l'intermédiaire d'un lien.

Options de gestion d'état côté serveur

Les options côté serveur pour stocker les informations de page offrent généralement une sécurité plus élevée que les options côté client, mais utilisent plus de ressources serveur Web, ce qui peut conduire à des problèmes d'évolutivité quand la taille de la banque d'informations est élevée. ASP.NET propose plusieurs options pour implémenter la gestion d'état côté serveur. Pour plus d'informations, consultez Vue d'ensemble de la gestion d'état ASP.NET.

Les éléments suivants sont les options de gestion d'état côté serveur qu'ASP.NET prend en charge :

  • État de l'application

  • État de session

  • Propriétés de profil

  • Prise en charge des bases de données

État de l'application

ASP.NET fournit l'état de l'application via la classe HttpApplicationState comme méthode de stockage des informations globales propres à l'application et visibles par la totalité de l'application. Les variables de l'état de l'application sont, en effet, des variables globales pour une application ASP.NET. Pour plus d'informations, consultez Vue d'ensemble de l'état de l'application ASP.NET.

Vous pouvez stocker les valeurs propres à votre application dans l'état de l'application, qui est alors géré par le serveur. Pour plus d'informations, consultez Vue d'ensemble de la gestion d'état ASP.NET.

Les données qui sont partagées par plusieurs sessions et ne changent pas souvent conviennent le mieux à une insertion dans les variables de l'état de l'application.

Les avantages de l'utilisation de l'état de l'application sont les suivants :

  • Implémentation simple   L'état de l'application est simple à utiliser, connu des développeurs ASP et cohérent avec les autres classes .NET Framework.

  • Portée de l'application   L'état de l'application étant accessible à toutes les pages d'une application, le stockage d'informations dans l'état de l'application peut revenir à conserver une seule copie des informations (au lieu, par exemple, de conserver des copies d'informations dans l'état de session ou dans des pages individuelles).

Les inconvénients de l'utilisation de l'état de l'application sont les suivants :

  • Portée de l'application   La portée de l'état de l'application peut également être un inconvénient. Les variables stockées dans l'état de l'application ne sont globales que pour le processus particulier dans lequel l'application s'exécute, et chaque processus d'application peut avoir différentes valeurs. En conséquence, vous ne pouvez pas vous fier à l'état de l'application pour stocker les valeurs uniques ou mettre à jour les compteurs globaux dans les configurations serveur de type batterie de serveurs Web ou jardin Web.

  • Longévité limitée des données   Comme les données globales stockées dans l'état de l'application sont volatiles, elles seront perdues si le processus de serveur Web le contenant est détruit, par exemple à la suite d'une panne du serveur, d'une mise à niveau ou d'un arrêt.

  • Exigences en matière de ressources   L'état de l'application nécessite la mémoire du serveur, ce qui peut affecter ses performances ainsi que l'évolutivité de l'application.

Un design et une implémentation rigoureux de l'état de l'application peuvent accroître les performances d'une application Web. Par exemple, le fait de placer un groupe de données communément utilisé et relativement statique dans l'état de l'application peut augmenter les performances du site en réduisant le nombre global de demandes de données adressées à une base de données. Il existe cependant un compromis concernant les performances. Les variables de l'état de l'application contenant d'importants blocs d'informations réduisent les performances du serveur Web tandis que la charge du serveur s'accroît. La mémoire occupée par une variable stockée dans l'état de l'application n'est pas libérée jusqu'à ce que la valeur soit supprimée ou remplacée. Par conséquent, il est préférable de n'utiliser les variables de l'état de l'application qu'avec des petits groupes de données, soumis à très peu de modifications. Pour plus d'informations, consultez Vue d'ensemble de la performance.

État de session

ASP.NET fournit un état de session, disponible en tant que classe HttpSessionState, comme méthode de stockage des informations propres à la session, visibles uniquement dans la session. L'état de session ASP.NET identifie les demandes du même navigateur pendant une fenêtre de temps limitée comme une session et offre la possibilité de faire persister des valeurs variables pour la durée de cette session. Pour plus d'informations, consultez Vue d'ensemble de la gestion d'état ASP.NET et Vue d'ensemble de l'état de session ASP.NET.

Vous pouvez stocker les objets et valeurs spécifiques à votre session dans l'état de session, qui est ensuite géré par le serveur et disponible pour le navigateur ou périphérique client. Les données qui conviennent le mieux au stockage dans les variables de l'état de la session sont les données sensibles et éphémères propres à une session.

Les avantages de l'utilisation de l'état de la session sont les suivants :

  • Implémentation simple   La fonction d'état de session est simple à utiliser, connue des développeurs ASP et cohérente avec les autres classes .NET Framework.

  • Événements propres à la session   Les événements de gestion de la session peuvent être déclenchés et utilisés par votre application.

  • Persistance des données   Les données placées dans les variables de l'état de session peuvent résister aux redémarrages des services IIS (Internet Information Services) et du processus de travail sans entraîner la perte des données de la session, car elles sont stockées dans un autre espace de processus. En outre, les données d'état de session peuvent être rendues persistantes à travers des processus multiples, comme dans une batterie de serveurs Web ou un jardin Web.

  • Évolutivité de la plateforme   L'état de session peut être utilisé dans les configurations à plusieurs ordinateurs et plusieurs processus, optimisant ainsi les scénarios d'évolutivité.

  • Prise en charge sans cookies   L'état de session fonctionne avec les navigateurs qui ne prennent pas en charge les cookies HTTP, même s'il est plus communément utilisé avec les cookies pour permettre à une application Web d'identifier les utilisateurs. L'utilisation de l'état de session sans cookies, toutefois, requiert que l'identificateur de session soit placé dans la chaîne de requête, ce qui entraîne les problèmes de sécurité indiqués dans la section de cette rubrique relative à la chaîne de requête. Pour plus d'informations sur l'utilisation de l'état de session sans cookies, consultez Administration de sites Web ASP.NET.

  • Extensibilité   Vous pouvez personnaliser et développer l'état de session en écrivant votre propre fournisseur d'état de session. Les données d'état de session peuvent alors être stockées dans un format de données personnalisé dans divers mécanismes de stockage des données, tels qu'une base de données, un fichier XML, voire un service Web. Pour plus d'informations, consultez Implémentation d'un fournisseur de magasins d'état de session.

Les inconvénients de l'utilisation de l'état de la session sont les suivants :

  • Considérations de performances   Les variables de l'état de session demeurent en mémoire jusqu'à ce qu'elles soient supprimées ou remplacées et, par conséquent, les performances du serveur peuvent s'en trouver diminuées. Les variables de l'état de session qui contiennent des blocs d'informations, tels que des groupes de données volumineux, peuvent influer de façon négative sur les performances du serveur Web tandis que la charge du serveur s'accroît.

Propriétés de profil

ASP.NET fournit une fonctionnalité appelée Propriétés de profil qui vous permet de stocker des données propres à l'utilisateur. Elle est semblable à l'état de session, mais contrairement à cet état, les données de profil ne sont pas perdues lorsque la session d'un utilisateur expire. La fonctionnalité des propriétés de profil utilise un profil ASP.NET qui est stocké dans un format persistant et associé à un utilisateur individuel. Le profil ASP.NET vous permet de gérer facilement des informations utilisateur sans que vous soyez obligé de créer et de tenir à jour votre propre base de données. De plus, le profil met les informations utilisateur à votre disposition à l'aide d'une interface API fortement typée à laquelle vous pouvez accéder à partir de n'importe quel endroit de votre application. Vous pouvez stocker des objets de tout type dans le profil. La fonctionnalité de profil ASP.NET fournit un système de stockage générique qui vous permet de définir et de maintenir la majeure partie des types de données, tout en rendant les données disponibles d'une manière sécurisée au niveau du type. Pour plus d'informations, consultez Vue d'ensemble des propriétés du profil ASP.NET.

Les avantages de l'utilisation des propriétés de profil sont les suivants :

  • Persistance des données   Les données placées dans les propriétés de profil résistent aux redémarrages des services IIS et du processus de travail sans entraîner la perte de données, parce que celles-ci sont stockées dans un mécanisme externe. En outre, les propriétés de profil peuvent être rendues persistantes à travers des processus multiples, comme dans une batterie de serveurs Web ou un jardin Web.

  • Évolutivité de la plateforme   Les propriétés de profil peuvent être utilisées dans les configurations à plusieurs ordinateurs et plusieurs processus, optimisant ainsi les scénarios d'évolutivité.

  • Extensibilité   Pour utiliser les propriétés de profil, vous devez configurer un fournisseur de profils. ASP.NET inclut une classe SqlProfileProvider qui vous permet de stocker les données de profil dans une base de données SQL, mais vous pouvez également créer votre propre classe de fournisseur de profils qui stocke les données de profil dans un format personnalisé et selon un mécanisme de stockage personnalisé, tel qu'un fichier XML, voire un service Web. Pour plus d'informations, consultez Fournisseurs de profils ASP.NET et Implémentation d'un fournisseur de profils.

Les inconvénients de l'utilisation des propriétés de profil sont les suivants :

  • Considérations de performances   Les propriétés de profil sont généralement plus lentes que l'utilisation de l'état de session, parce qu'au lieu de stocker des données en mémoire, les données sont rendues persistantes dans un magasin de données.

  • Autres exigences de configuration   Contrairement à l'état de session, la fonctionnalité de propriétés de profil implique un effort de configuration considérable. Pour utiliser des propriétés de profil, vous devez non seulement configurer un fournisseur de profils, mais aussi préconfigurer toutes les propriétés de profil que vous souhaitez stocker. Pour plus d'informations, consultez Vue d'ensemble des propriétés du profil ASP.NET et Définition des propriétés de profil ASP.NET.

  • Maintenance des données   Les propriétés de profil exigent un certain niveau de maintenance. Les données de profil étant rendues persistantes en mémoire rémanente, vous devez vous assurer que votre application appelle les mécanismes de nettoyage appropriés qui sont fournis par le fournisseur de profils lorsque les données deviennent périmées.

Prise en charge des bases de données

Dans certains cas, il se peut que vous souhaitiez utiliser une base de données pour conserver l'état sur votre site Web. Généralement, la prise en charge d'une base de données est utilisée conjointement avec des cookies ou un état de session. Par exemple, il est courant pour un site Web de commerce électronique de gérer les informations d'état à l'aide d'une base de données relationnelle, et ce pour les raisons suivantes :

  • Sécurité

  • Personnalisation

  • Cohérence

  • Data mining

Vous trouverez ci-dessous les fonctionnalités classiques d'un site Web avec base de données et cookies pris en charge :

  • Sécurité   Le visiteur tape un nom de compte et un mot de passe dans la page de connexion au site. L'infrastructure du site interroge la base de données avec les valeurs entrées pour déterminer si l'utilisateur a le droit d'accéder à votre site. Si la base de données valide les informations de l'utilisateur, le site Web distribue un cookie valide contenant un ID unique pour cet utilisateur sur l'ordinateur client. Le site accorde les droits d'accès à l'utilisateur.

  • Personnalisation   Avec les informations de sécurité, votre site peut distinguer chaque utilisateur en lisant le cookie sur l'ordinateur client. Généralement, les sites ont des informations dans la base de données sur les préférences d'un utilisateur (identifié par un ID unique). Cette relation est désignée par le terme de personnalisation. Le site peut rechercher les préférences de l'utilisateur à l'aide de l'ID unique contenu dans le cookie, puis afficher le contenu et les informations correspondant aux souhaits spécifiques de l'utilisateur, en tenant compte des modifications des préférences au fil du temps.

  • Cohérence   Si vous avez créé un site Web commercial, il se peut que vous souhaitiez conserver les enregistrements transactionnels des achats de marchandises et de services effectués sur votre site. Ces informations peuvent être enregistrées de façon fiable dans votre base de données et être référencées par l'ID unique de l'utilisateur. Elles peuvent être utilisées pour déterminer si une transaction d'achat a été effectuée et définir les mesures à prendre en cas d'échec. Elles peuvent aussi servir à informer l'utilisateur du statut d'une commande passée à l'aide de votre site.

  • Exploration de données   Les informations sur l'utilisation du site, les visiteurs ou les transactions relatives aux produits peuvent être stockées en toute fiabilité dans votre base de données. Par exemple, votre département commercial peut vouloir utiliser les données recueillies à partir de votre site pour déterminer la ligne de produits de l'année suivante ou la stratégie de distribution. Votre département marketing peut également vouloir examiner les informations démographiques concernant les utilisateurs de votre site. Les départements ingénierie et assistance peuvent souhaiter étudier les transactions et noter les zones où le processus d'achat peut faire l'objet d'améliorations. La plupart des bases de données relationnelles professionnelles, comme Microsoft SQL Server, contiennent une boîte à outils complète adaptée à la plupart des projets de data mining.

En concevant le site Web de façon à interroger en permanence la base de données à l'aide de l'ID unique lors de chaque étape générale du scénario ci-dessus, le site gère l'état. De cette façon, l'utilisateur a le sentiment que le site se souvient de lui et qu'il lui répond personnellement.

Les avantages de l'utilisation d'une base de données pour maintenir l'état sont les suivants :

  • Sécurité   L'accès aux bases de données exige un processus rigoureux d'authentification et d'autorisation.

  • Capacité de stockage   Vous pouvez stocker autant d'informations que vous le souhaitez dans une base de données.

  • Persistance des données   Les informations de la base de données peuvent être stockées aussi longtemps que vous le souhaitez et ne dépendent pas de la disponibilité du serveur Web.

  • Robustesse et intégrité des données   Les bases de données comprennent diverses fonctionnalités pour la conservation de données correctes, dont les déclencheurs et l'intégrité référentielle, les transactions, etc. En conservant les informations sur les transactions dans une base de données (plutôt que dans un état de session, par exemple), vous pouvez récupérer les erreurs plus facilement.

  • Accessibilité   Les données stockées dans votre base de données sont accessibles à une grande variété d'outils de traitement des informations.

  • Prise en charge largement répandue   Il existe une large gamme d'outils de base de données et de nombreuses configurations personnalisées sont également disponibles.

Les inconvénients de l'utilisation d'une base de données pour maintenir l'état sont les suivants :

  • Complexité   L'utilisation d'une base de données pour prendre en charge la gestion d'état impose une plus grande complexité des configurations matérielle et logicielle.

  • Considérations de performances   Un modèle de données relationnelles de mauvaise qualité peut conduire à des problèmes d'évolutivité. De même, un trop grand nombre de requêtes adressées à la base de données peut influer de façon négative sur les performances du serveur.

Résumé de la gestion d'état des méthodes côté serveur

Le tableau suivant répertorie les options de gestion d'état côté serveur qui sont disponibles avec ASP.NET, et fournit des recommandations sur l'utilisation de chaque option.

Option de gestion d'état

Utilisation recommandée

État de l'application

À utiliser lorsque vous stockez des informations globales qui changent peu et qui sont utilisées par de nombreux utilisateurs, et la sécurité n'est pas un réel enjeu. Ne stockez pas d'importantes quantités d'informations dans l'état de l'application.

État de session

À utiliser lorsque vous stockez des informations éphémères et propres à une session individuelle, et la sécurité n'est pas un réel enjeu. Ne stockez pas d'importantes quantités d'informations dans l'état de session. Notez bien qu'un objet état de session sera créé et conservé pendant la durée de toutes les sessions de votre application. Dans les applications hébergeant de nombreux utilisateurs, il peut s'ensuivre une occupation importante des ressources du serveur et l'évolutivité peut s'en trouver affectée.

Propriétés de profil

À utiliser lorsque vous stockez des informations propres à l'utilisateur qui doivent persister après expiration de la session utilisateur et récupérées lors des visites suivantes de votre application.

Prise en charge des bases de données

À utiliser lorsque vous stockez de grandes quantités d'informations, que vous gérez des transactions, ou que les informations doivent survivre aux redémarrages des sessions et des applications. Le data mining est une préoccupation et la sécurité un enjeu.

Voir aussi

Concepts

Vue d'ensemble de la gestion d'état ASP.NET

Vue d'ensemble des cookies ASP.NET

Vue d'ensemble des propriétés du profil ASP.NET

Vue d'ensemble de l'état de session ASP.NET

Vue d'ensemble de l'état de l'application ASP.NET

Autres ressources

Nouveautés de la gestion d'état ASP.NET