Je m'excuse si cela a déjà été demandé, mais je n'ai pas vraiment trouvé la question spécifique que j'ai dans ma tête.Alternatives à l'utilisation de variables de session dans ASP.NET (y compris MVC)
Pour le site que je construis (en utilisant ASP.NET MVC) - la performance est une caractéristique importante. En outre, il est possible que le site soit hébergé dans un environnement où le pool d'applications est recyclé toutes les 20 minutes (ou plus tôt si le seuil de mémoire est atteint). Je voudrais être complètement indépendant de compter sur des variables de session et à la place, stocker une valeur de type GUID dans un cookie. Mon raisonnement est - je ne sais pas combien de temps durera la session à cause du recyclage d'AppPool et je ne veux pas que leur session expire prématurément et les oblige à se connecter à plusieurs reprises.
La valeur GUID dans le cookie servirait de clé de recherche à une table où je stocke des informations de type session (une valeur d'ID utilisateur, etc.). Donc, si j'avais besoin de ces données, je pourrais les récupérer dans la base de données. Je ferais toujours usage de l'événement Session_OnEnd pour effacer cette table de lignes de session avec une valeur de "dernière activité" de plus de 20 minutes (ou si les sessions longues sont configurées pour durer). Donc, je suppose que je serais encore en train d'utiliser l'état de la session, mais pas les variables de la session.
Mon souci, encore une fois, concerne les performances. Par conséquent, j'étais curieux de savoir s'il existe de meilleures méthodes pour éviter l'utilisation des variables de session tout en conservant la capacité de savoir qui est l'utilisateur et de gérer ses visites sur le site de manière «sessionnelle». Je suis encore un débutant à MVC, mais j'ai beaucoup d'expérience dans ASP.NET au cours des années, donc j'espère que ma question est logique! EDIT: Je ne veux pas utiliser l'état de session SQL car je serai probablement dans un environnement d'hébergement de serveur sql partagé et je ne pense pas que j'aurai une connexion avec la possibilité de créer/exécuter des jobs si nécessaire pour la suppression des données de session sql expirées, etc. Y a-t-il des inconvénients réels à dépendre de Session_OnEnd avec un cookie dans le scénario de recyclage d'AppPool? Session_OnEnd ne peut-il pas s'exécuter pour les sessions en cours lors de la recycle d'AppPool?
Dans le cas contraire connu sous le nom de SQL et Cookies. – madcolor
+1: vous n'avez pas à rouler votre propre base de données si vous allez avec la persistance de l'état SQL –
http://www.dbazine.com/sql/sql-articles/cook9 – madcolor