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 :

Datatable en session ?


Sujet :

ASP.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 43
    Par défaut Datatable en session ?
    Bonjour à tous,

    toujours dans mes expérimentations asp .net (vb), je cherche à savoir comment stocker de façon persistante, le résultat d'une requête (recordset) me permettant de générer un menu.

    Je pensais créer une datatable et la stocker en session, est-ce la bonne méthode ? si, non, que me conseillez-vous ?

    Merci !

  2. #2
    Membre chevronné
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Par défaut
    Si ton menu est commun à l'ensemble des utilisateurs, il est à mon sens préférable de le placer plutôt dans le cache de l'application.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 43
    Par défaut
    J'ai 3 menus différents en fonction du type d'utilisateur connecté.

    Ces 3 menus sont générés à l'aide d'un recordset obtenu par un middleware déjà existant.

    A la première visite du site, je pensais interroger le middleware et mettre le resultat du recordset en session, afin d'éviter les connexions à la base de données... Ensuite à la connexion, je vérifie le type d'utilisateur et je mets à jour le menu mis en session.

    Ce menu mis en session me permet d'alimenter un contrôle ASPxNavBar (Devxpress) que j'ai placé dans un contrôle utilisateur.

    Je ne sais pas trop comment faire pour stocker le résultat de ma requête, et sous quelle forme...

    Merci de votre aide.

  4. #4
    Membre chevronné
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Par défaut
    A la première visite du site, je pensais interroger le middleware et mettre le resultat du recordset en session, afin d'éviter les connexions à la base de données... Ensuite à la connexion, je vérifie le type d'utilisateur et je mets à jour le menu mis en session.
    J'avoue ne pas trop comprendre : la Session contient les informations relatives à l'utilisateur connecté, donc si tu mets tes données en Session, tu n'as certainement pas à les mettre à jour, tu peux les charger directement en fonction du type d'utilisateur connecté.

    Je ne connais pas la volumétrie des données associées à tes menus. Je ne connais pas non plus le contrôle ASPxNavBar ni comment il est alimenté. Pour ma part, je stockerai les informations dans le Cache (http://msdn2.microsoft.com/en-us/lib...ing.cache.aspx) :

    - soit un objet menu contenant toutes les entrées de menu, ce qui demanderait ensuite de retirer à chaque fois les entrées interdites
    - soit un objet menu par type d'utilisateur, directement réutilisable

    La forme de stockage dépend de la forme attendue par ton contrôle ASPxNavBar.

    Il faut savoir que si tu utilises un stockage en base de données de ta Session et si tes menus ne sont pas triviaux, alors la sérialisation / désérialisation de ta Session peut être très pénalisante. Ca dépend également du niveau de sollicitation de ton site.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 43
    Par défaut
    Salut BCmDev,

    je vais essayer d'être plus clair

    Voici les étapes :
    - j'interroge ma base de données en passant par le middleware existant.
    - j'obtiens une recordset de 20 enregistrements maximum.
    - je stocke ce résultat sous forme d'objet (?) (cache ? session ? autre ?) en fonction de l'utilisateur (visiteur non connecté, utilisateur enregistré, administrateur)
    - j'affiche le résultat stocké dans mon contrôle ASPxNavBar (il accepte une XMLDataSource seulement, ou bien l'ajout de groupes et d'items par code).

    Mon but est d'interroger la base de données seulement dans 3 cas :
    - à la première visite pour stocker le menu par défaut d'un visiteur
    - à la connexion d'un utilisateur (normal ou administrateur)
    - à la déconnexion pour réafficher le menu par défaut (voire même à la fermeture de l'application si cela est possible et nécessaire...)

    Je peux ainsi contruire mon menu sans accéder trop souvent à la base.

    Merci en tous cas de te pencher sur mon pb, je vais regarder comment fonctionne le cache

Discussions similaires

  1. Session et datatable
    Par Nerone21 dans le forum ASP.NET
    Réponses: 0
    Dernier message: 07/12/2009, 11h37
  2. Session terminée DataTable vidée
    Par electrolol dans le forum ASP.NET
    Réponses: 2
    Dernier message: 04/04/2008, 09h17
  3. Réponses: 1
    Dernier message: 03/12/2007, 17h35
  4. [XMLRAD] session
    Par jml dans le forum XMLRAD
    Réponses: 4
    Dernier message: 17/12/2002, 09h24

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