3 votes

Fournir un accès fortement typé à l'objet de session

Quelle est la meilleure façon de fournir un accès fortement typé à l'objet de session ? J'ai l'intention d'activer l'option Strict, ce qui amène le compilateur à se plaindre de ma technique de programmation paresseuse consistant à accéder directement à l'objet de session :

Dim blah As Integer = Session("Blah")

Ma première idée est de créer une classe qui englobe la session et fournit des propriétés fortement typées pour les informations stockées dans la session. Cependant, je ne peux pas décider si la classe doit être un singleton, ou instanciée à chaque utilisation, ou encore où le code doit résider (c'est-à-dire dans le projet Web ou dans une bibliothèque de classes).

Je penche pour un singleton dans ma bibliothèque de classes, mais je ne sais pas si c'est la meilleure solution, ou si je manque d'autres possibilités.

Solution proposée :

Public Class SessionAccess
    Public Shared Property Blah(ByVal session As HttpSessionState) As Integer
        Get
            Return Convert.ToInt32(session("Blah"))
        End Get
        Set(ByVal value As Integer)
            session("Blah") = value
        End Set
    End Property
End Class

Code Behind :

Dim blah As Integer = SessionAccess.Blah(session)

1voto

David Stratton Points 45298

J'ai supprimé ma réponse initiale car @Jason Berkan a soulevé un très bon point lorsqu'il a remis en question ma réponse. Jason, je pense que cette idée est bonne.

La seule chose que je modifierais dans votre exemple de code est de vérifier que la variable de session existe.

1voto

Jason Berkan Points 4606

Soit ma proposition est la façon "standard" de procéder, soit personne n'enveloppe l'accès à sa session, puisque cette question n'a pas reçu beaucoup de réponses.

J'ai trouvé une ligne dans cette réponse qui mentionnait la création d'un SessionManager :

  • Envelopper la session ASP.NET avec un SessionManager pour éviter les erreurs de développement erreurs d'orthographe, etc. lors de la référence à des éléments de la session.

Je n'ai pas trouvé de raison de ne pas utiliser une classe singleton pour fournir un accès typé à la session, c'est donc la solution que j'ai retenue dans le projet.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X