Je voudrais envelopper les variables de session d'une manière similaire à celle discussed on CodeProject.Une variable stockée dans Session est-elle désérialisée une ou plusieurs fois pendant le cycle de vie d'une page?
public static class WebSession
{
private const string CurrentUserKey = "CurrentUser";
private static HttpSessionState Session
{
get { return HttpContext.Current.Session; }
}
public static bool Exists
{
get { return Session != null; }
}
public static User CurrentUser
{
get { return Session[CurrentUserKey] as User; }
set { Session[CurrentUserKey] = value; }
}
}
Voici ma question: si je dois accéder CurrentUser
plusieurs fois dans la même page, pourrais-je obtenir une amélioration de la performance en attribuant à une variable locale au lieu d'accéder à la propriété d'emballage? Ou le HttpSessionState
s'assure-t-il que l'objet n'est désérialisé qu'une seule fois par requête, de sorte que les appels suivants dans la même requête http ne coûtent plus?
Merci, Aaron
Pas une réponse à votre question mais, en utilisant une variable locale est plus rapide alors obtenir votre variable d'une collection. – Canavar
Si je devais ajouter un peu plus de pertinence à votre question, "Quand la sérialisation et la désérialisation de session ont lieu et quand elles ont lieu, sont tous les objets sérialisés/désérialisés et si je devais appeler le même objet de session (sérialisé) plusieurs fois, est-il récupéré/désérialisé une fois ou plusieurs fois? – ram
FYI, votre classe pour faire face à la session est agréable.Si vous voulez prendre un cran, consultez ce lien: http://blog.theobjectguy.com/2009/12 /session-with-style.html – TheObjectGuy