Lequel est le meilleur, inproc ou SQL Server, pour le mode D'État de Session en asp.net je ne sais pas.
je développe un ASP.NET site web. Je veux savoir laquelle est la meilleure en mode session state: inproc ou SQL Server? J'ai besoin d'entendre parler de vos expériences sur cette question.
une autre question porte sur l'attribut cookie. Y a-t-il un trou de sécurité sur mon site si je le mets à true? Dans tous les échantillons que j'ai vus dans le site MSDN, cet attribut a été mis à false.
et la dernière question porte sur l'attribut Timeout. N'cet attribut effet mon des sessions de vie, lorsque je l'ai mis à InProc mode?
4 réponses
meilleur en termes de quoi?
-
inproc session est beaucoup plus rapide, a moins d'exigences (sérialisation), mais inutilisable lorsque vous exécutez votre application sur plusieurs serveurs web;
-
Sql session est beaucoup plus lent, a des exigences de sérialisation d'objet, mais peut être partagé entre plusieurs serveurs web;
C'est la principale différence entre eux dont les développeurs devraient se soucier.
session sans cuisinier
vous devriez poser une question séparée à ce sujet, parce que c'est une question complètement sans rapport avec la précédente.
si vous désactivez la gestion de l'ID de session du cookie, vous pourrez voir L'ID de Session. Mais vous aussi si vous vérifiez les cookies. Le nombre est-il.
et l'expiration du cookie de Session est définie à la session du navigateur de sorte qu'il est pratiquement le même en termes de persistance.
Les Sessionspeuvent être détournées si vous connaissez L'ID de Session de l'autre partie. C'est plus facile bien sûr si vous utilisez des sessions sans cookie parce que tout ce que vous avez à faire est de changer L'URL...
et il y a autre chose avec la copie D'URLs et le partage/la sauvegarde (favoris). Je suppose que je n'ai pas à expliquer le problème.
Les sessions sans cookie sont false
par défaut car la grande majorité des navigateurs prennent en charge les cookies. vous ne devez l'allumer que lorsque vous savez que vos clients n'auront pas de cookies.
Délai D'Expiration De Session
le timeout de la Session est toujours lié à l'expiration de la session quel que soit le type de session. Mais vous devez être conscient que L'état de session SQL peut ne pas respecter ce paramètre lorsque vous utilisez SQL Express editions parce que vous avez besoin de SQL Server Agent service pour rejeter les sessions expirées. Vous pouvez atténuer ce problème en écrivant votre propre service Windows qui écarte les sessions expirées.
vous pouvez utiliser Session de 3 façons. Chacun a ses avantages et ses inconvénients
In-Process :
- la session Inproc est plus rapide.
- vous pouvez ajouter des objets avec la sérialisation Sud
- mais limité à un serveur, si votre application tourne sur plus de un serveur. Cela ne fonctionnera pas pour vous
- si quelque chose arrive Application Pool vous perdrez tous les renseignements de la session
L'État De La Session :
- s'exécute sous windows service
- si votre application tourne sur plusieurs serveurs, cela aidera ""
- les objets ajoutés à la Session doivent être sérialisés
Sql Server:
- utilise sql server, mais il y a aussi L'implémentation D'Oracle
- plus lent que le serveur D'État
- beaucoup plus fiable
Vérifiez cette question aussi : SQLServer vs StateServer for ASP.NET Session State Performance
InProc État De La Session
le mode de session InProc indique que l'état de la session est stocké localement, ce qui signifie que le mode d'état de la session InProc est
stocker des objets dans L'Appdomaine de l'application Web.Pour cette raison l'état de session est perdu quand IIS (Internet Information System) redémarre.
Généralement, L'Appdomaine est redémarré en fonction de plusieurs facteurs comme l'attribut memoryLimit
les paramètres dans la section de la fichier de configuration, modifiant Global.asax ou le Web.fichier de configuration, etc.
nous pouvons utiliser le mode D'état de session StateServer ou SqlServer pour surmonter ces problèmes et ici l'état de session n'est pas stocké dans L'Appdomaine de l'application Web.
OutProc État De La Session
en Session OutProc ,L'État Sessin est stocké dans les modes StateServer et SqlServer non dans L'Appdomaine de l'application Web.
StateServer: il utilise un service Microsoft Windows autonome pour stocker la variable session, donc ce service est indépendant de IIS, il peut fonctionner sur un serveur séparé. Vous pouvez utiliser ce mode pour une solution d'équilibrage de charge car plusieurs serveurs Web peuvent partager des variables de session. Bien que les variables de session ne soient pas perdues si vous redémarrez IIS, la performance est affectée lorsque vous franchissez les limites du processus.
SqlServer: SqlServer mode vous permet également d'utiliser un magasin d'état qui est situé en dehors du processus IIS et qui peut être situé sur l'ordinateur local ou sur un serveur distant. Pour la persistance des informations de session, vous pouvez utiliser le mode SqlServer Le mode SqlServer est similaire au mode hors processus, sauf que les données de session sont maintenues dans un serveur SQL.
session SQL est une meilleure option que la session inproc