IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

classe du app_code et session


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Par défaut classe du app_code et session
    Bonjour, j'ai une classe dans mon app_code, qui récupère un nombre dans la base de donnée suivant le User connecté.

    voilà la classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    public class VariableGlobaleAction
    {
        public static Hashtable IndexStatut = new Hashtable();
        private int nbActionDonnee;
        private int nbActionRecu;
     
    	public VariableGlobaleAction(int val1,int val2)
    	{
    		//
    		// TODO*: ajoutez ici la logique du constructeur
    		//
            SetnbActionDonnee(val1);
            SetnbActionRecu(val2);
    	}
        public VariableGlobaleAction()
        {
        }
     
        public int getnbActionRecu()
        {
            return nbActionRecu;
        }
        public void SetnbActionRecu(int valeur)
        {
            nbActionRecu = valeur;
        }
        public int getnbActionDonnee()
        {
            return nbActionDonnee;
        }
        public void SetnbActionDonnee(int valeur)
        {
            nbActionDonnee = valeur;
        }
    }
    Au départ l'ensemble était en static mais d'après ce que j'ai compris cela venait à faire 2 variables d'Application. Or ce sont des variables propres à chaque utilisateur.
    Cependant je cherche une autre solution que de les mettres en session, en passant justement par une classe.

    Quelqu'un pourrais me dire si c'est possible ou non?
    Merci

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    C'est un peu confus ton affaire... j'ai pas tout compris
    Citation Envoyé par tortuegenie Voir le message
    Cependant je cherche une autre solution que de les mettres en session, en passant justement par une classe.
    Pourquoi tu ne veux pas les mettre en session ? du peu que j'ai compris, c'est ce qui semble le plus adapté...

  3. #3
    Membre éprouvé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Par défaut
    Ben disons que cela commence à faire beaucoup de variable de session, sachant que celle-ci, je ne peux pas les enlever, étant donnée que j'en ai tout le temps besoin.

    Moi ce que je comptais faire c'est faire une classe, les affecté quand l'utilisateur se connecte et après les utiliser quand j'en ai envie, mais à priori, le fait de définir une classe comme celle-ci fait que ces variables deviennent des variables d'application (si on peut me le confirmer) ou alors existe t'il un moyen de définir (à l'aide d'une classe interne à ASP.NET) un ensemble de variable pour chaque utilisateur connecte.

    J'utilise l'authentificaiton par formulaire, sans créditential.

    J'espère que tu comprends mieux maintenant

  4. #4
    Membre Expert Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Par défaut
    Ce n est pas le fait de les mettre dans une classe qui va les rendre variable d application. Cela n a rien a voir, il faut que tu le definisse toi meme pour que cela le devienne.

    Si ce sont des variables que tu dois appeller de temps a autres pour un user donné , tu as plusieurs choix :


    *Continuer a faire des appels a ta base de données en regardant si cela altere vraiment tes performances machines.
    *Continuer a faire des appels a ta base de données et si ce sont des données calculées, tu peux imaginer un stockage temporaire dans une table par exemple
    *les stocker dans un cookie , sont ce des informations confidentielles
    *les passer de pages en pages via le viewstate , perso je deconseille

    Voilà mes pensées du matin.

  5. #5
    Membre éprouvé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Par défaut
    Ok, Arthis, ou alors les passer dans une variable de session, séparément:
    Session["VarA"]= nbDonnée;
    Session["VarB"]= nbRecu;

    Ou l'objet Sessions["VarA"]= new VariableGlobaleAction(1,2)

    J'ai vu que je pourrais définir des propriétés de profile dans le web.config mais qu'au final il crée une table tampon dans la base de donnée et y stocke des valeurs, seulement le jour où on passe sous Oracle, cela fonctionne encore??

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par tortuegenie Voir le message
    Moi ce que je comptais faire c'est faire une classe, les affecté quand l'utilisateur se connecte et après les utiliser quand j'en ai envie, mais à priori, le fait de définir une classe comme celle-ci fait que ces variables deviennent des variables d'application (si on peut me le confirmer) ou alors existe t'il un moyen de définir (à l'aide d'une classe interne à ASP.NET) un ensemble de variable pour chaque utilisateur connecte.
    Ca ne "devient" pas des variables d'application, à moins que tu les définisses explicitement en tant que telles. Si tu ne stockes ces variables nulle part, elles sont perdues d'une requête à l'autre.
    Pour stocker d'une requête à l'autre des variables spécifiques à un utilisateur donné, la session reste la solution la plus indiquée... les autres solutions ont toutes des inconvénients majeurs :
    - cookie : pas terrible pour la sécurité, vu que les données sont stockées chez le client
    - viewstate : c'est pas vraiment fait pour ça, et le problème de sécurité est le même que pour les cookies
    - application : c'est partagé entre tous les utilisateurs

  7. #7
    Membre Expert Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Par défaut
    Par contre je t encourage a faire des classes ou en tout cas a regrouper de maniere intelligent tes donnes de facon a ne pas a voir a les chercher sour tous les noms de sessions possible et imaginables :

    Session["montruc"], Session["monmachin"],Session["Aufait"],Session["X"], Session["Variablequivarie"]....

    Preferer un Session["MonUser"] qui contient une classe qui elle meme te permet de faire ce que tu veux. Cela ne te fais qu un poin d'entree, c est plus simple a maintenir...

  8. #8
    Membre éprouvé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Par défaut
    En fait je pensais qu'il stockait mes variables de la classe VariableGlobaleAction pour chaque utilisateur, or lorsqu'un nouvel utilisateur se connecte, ben elles sont écrasées, je pensais qu'elle était considérer comme appartenant à la session c'est pour cela que je dis qu'elles deviennent des "variables d'Application".

    Est ce que le fait d'utiliser une 50taine de variables de Session est gérable au niveau du serveur.

    Sinon je pourrais créer un profile dans le web.config mais bon j'ai pas besoin de stocker ces données une fois que l'utilisateur n'est plus connecté.

  9. #9
    Membre éprouvé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Par défaut
    Que veux-tu dire exactement Arthis.

    Exemple pour ma classe VariableActionGloable, faire
    Session["VariableActionGlobale"] = new VariableActionGlobale(x,y)

    Et ensuite ((VariableActionGlobale)Session["VariableActionGlobale"]).x

    Je ne vois pas trop ce que tu veux dire, donc si tu peux dvp un peu.

    Merci

  10. #10
    Membre Expert Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((VariableActionGlobale)Session["VariableActionGlobale"]).x
    oui , mais utilise un accesseur que tu auras defini dans une page de base dont tes pages heriteront , cela t'evitera d avoir a caster a chaque utilisation:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public class PageBase : Page
    {
     
    public VariableActionGlobale Mavariableactionglobale 
    {
    get {return  (VariableActionGlobale) Session["VariableActionGlobale"]    }
    }
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public class pagex: PageBase
    {
     
    public void PAgeLoad()
    {
        Mavariableactionglobale .mamethdoe();
        Mavariableactionglobale .mapropriete = 3;
    }

  11. #11
    Membre éprouvé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Par défaut
    Cela veut dire que je ne peux pas faire des classes indépendantes dans le app_code. Tel que j'ai fais actuellement.

    J'ai bien une page mère qui me sert à gérer l'internationalisation et une page d'erreur, mais je ne sais pas si c'est mieux de tout mettre dans la page mère.

    D'autant plus que certaines variable de session, je n'en ai besoin que sur 2 ou 3 pages.

    Sinon quel était ton idée de départ quand tu me parlais de faire des classes et de les stocker en session.

  12. #12
    Membre Expert Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Par défaut
    je ne te parle pas de tout mettre dans la page mere, mais juste d'embarquer le contexte de ton user comme ceci.
    Ensuite ton argument de j ai besoin de telle infos seulement pour 2-3 pages ne tient pas. Peu importe que tu en ai besoin pour 2 pages peut etre que demain ce sera 5. et Il s agit la surtout de centraliser ton code. Tu vas ainsi interagir avec toutes tes variables de session de la meme facon.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public class UserDeMonApplication 
    {
    public mamethode();
    public mapropriete ;
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public class PageBase : Page
    {
     
    public UserDeMonApplication MonUser 
    {
    get {return  (UserDeMonApplication ) Session["MonUser "]    }
    }
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public class pagex: PageBase
    {
     
    public void PAgeLoad()
    {
        MonUser.mamethdoe();
        MonUser.mapropriete = 3;
    }

  13. #13
    Membre éprouvé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Par défaut
    Je sais que mon argument était nul mais c'était une façon d'expliquer les choses.

    Donc en fait pour chaque classe je définit getteur dans la page mère comme cela je peux hérité directement.C'est bon j'ai compris l'idée.

    Maintenant, est'il mieux de faire cela (passer une classe en session) ou bien de créer 5 variables de session pour stocker mes 5 données dont j'ai besoin et donc ne plus utiliser la notion de classe.

    Seulement,comme tu l'a dit le fait de faire cela, les sessions ne sont plus centraliser.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Sessions et Classes dans App_Code
    Par cinemania dans le forum ASP.NET
    Réponses: 2
    Dernier message: 12/07/2010, 13h50
  2. Réponses: 4
    Dernier message: 12/03/2008, 13h18
  3. class dans App_code
    Par tetedeturcq dans le forum ASP.NET
    Réponses: 2
    Dernier message: 22/05/2007, 15h22
  4. Réponses: 2
    Dernier message: 09/10/2005, 15h35
  5. [Sessions] Classes et variables de sessions
    Par Thanaroth dans le forum Langage
    Réponses: 4
    Dernier message: 06/10/2005, 16h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo