2010-07-28 4 views
6

Je travaille avec une application asp.net qui stocke la plupart des données dans une base de données et non dans une session. Je me demande quels sont les avantages et les inconvénients de chacun et quelle est la meilleure façon de procéder. Par exemple, vous avez un site assez occupé et au lieu de stocker des variables spécifiques à l'utilisateur en session, il existe une table DB appelée données utilisateur qui peut stocker toutes les données spécifiques à l'utilisateur accessibles depuis n'importe quelle page. Quel est le meilleur moyen d'y aller, une session ou une base de données?Enregistrement de variables utilisateur dans la base de données par rapport à la session dans asp.net

Répondre

2

Question intéressante. Si ce sont des données qui ne sont pas importantes entre les sessions (par exemple, la dernière page consultée) -> session. Si ce sont des données qui devraient être persistantes (disons, mot de passe) -> base de données. Le cas intéressant et celui auquel vous vous référez probablement: Les données qui devraient être persistantes mais qui sont aussi souvent utilisées (par exemple, le nom d'utilisateur). De ceux-ci, j'ai tendance à copier ces valeurs de la base de données dans la session qui me permettent de travailler sans accès à la base de données dans les pages avec des tâches triviales.

3

Tout ce qui est stocké dans l'état de la session disparaît lorsque l'AppDomain est réinitialisé.

Vous pouvez éviter cela en utilisant un gestionnaire d'état de session hors proc, mais ce n'est pas mieux qu'une base de données.

3

session (mais cela dépend beaucoup de la configuration de la session):

  • Pas d'accès base de données, ou moins. Stockage temporaire: vous risquez de perdre l'information, au moins à la fin de la session.
  • Peut-être un problème de sécurité, selon l'emplacement où vous stockez les informations de session
  • Non partagé: vous pouvez rencontrer des problèmes si vous utilisez une batterie de serveurs, un serveur peut ne pas avoir accès à l'autre session de serveur.
  • Peut ne pas fonctionner si le client a désactivé les cookies.

Base de données:

  • trafic de base de données pour chaque postback si vous avez besoin d'informations sur chaque page.
  • Stockage permanent.
  • Aucune information enregistrée avec le client (cookies ...). Partagé: données accessibles depuis n'importe quel serveur d'une batterie de serveurs Web.

Veuillez noter que vous pouvez stocker des informations de session dans la base de données. C'est pourquoi j'utilise le mot "peut" dans la partie Session. Voir here some session configuration and possibilities

2

Dans de nombreux cas, j'utilise Session pour stocker des données temporaires sur la ... session ... "session". Dans ASP.NET, la session est configurable. Vous pouvez utiliser in-proc (par défaut) qui utilise la mémoire du serveur. Vous pouvez également configurer la session pour utiliser une base de données ou un outil de gestion de session (dans le cas où la mémoire du serveur est un problème ou si vous passez à un environnement de cluster/batterie).

La session est destinée à être temporaire. C'est très bien lorsque vous stockez vraiment des données sur l'utilisateur qui utilise votre application à ce moment-là. Lorsque l'utilisateur quitte l'application et que sa session expire, la mémoire est libérée. Vous n'avez pas à effacer manuellement quelque chose.

La session utilise la mémoire du serveur. Tant que vous avez assez de mémoire et que vous n'êtes pas sur un cluster de serveurs, cela fonctionne très bien.La mémoire est rapide, donc l'obtention et la configuration des données en session est très rapide et n'utilise aucune bande passante réseau.

J'ai dit tout cela, dans certaines de mes applications, j'ai une session configurée pour utiliser SQL. C'est fondamentalement la même chose que d'utiliser la base de données directement, mais je n'ai pas à traiter avec DAL ... laissez simplement le framework fonctionner pour vous.

Questions connexes