Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Langages serveur > ASP
ASP Forum sur la programmation ASP. Avant de poster : Cours ASP, FAQ ASP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/09/2006, 13h09   #1
Membre régulier
 
Inscription : décembre 2005
Messages : 177
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : décembre 2005
Messages : 177
Points : 85
Points : 85
Par défaut Stocker un objet dans la session

Bonjour,

Savez vous si il est possible de stocker un objet (je parle d'un objet d'une classe qu'on crée soit même) dans la session ?
J'ai testé
Code :
1
2
 
Set Session("monObjetToto")=New Toto
L'instruction fonctionne, si je rafraichis la page et que je teste Session("monObjetToto") avec la fonction IsObject, il reconnait bien qu'il s'agit d'un objet, par contre on dirait qu'il est vide car je n'arrive pas a acceder aux méthodes et champs de mon objet.

Quand je développais en PHP c'est quelque chose que je faisais souvent, par contre par défaut les objets étaient linéarisés sous forme de chaine lors du passage en session et reconstitués lorsqu'on appelait la variable de session sur la page suivante. J'ai trouvé sur le net qu'il fallait faire la même chose en ASP pour stocker des objets en Session, je ne sais pas si l'info est exacte et je n'ai pas non plus de détails a ce sujet (existe t'il des fonctions qui linearisent l'objet et le reconstituent, ou est ce a moi d'écrire des fonctions de ce type ?).

Merci
Matth_S est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2006, 13h13   #2
Membre émérite
 
Avatar de marabout
 
Homme
Consultant E-Learning
Inscription : août 2006
Messages : 646
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations professionnelles :
Activité : Consultant E-Learning

Informations forums :
Inscription : août 2006
Messages : 646
Points : 812
Points : 812
Mes tests de jadis confirme tes dires: c'est une grande lacune de ASP... Les objets ne sont pas stockés en session (en tout cas je ne suis pas parvenu à le faire).

Par contre, à l'époque, en y réfléchissant avec certains, on était parvenu à contourner plus ou moins le problème avec des paires key-value sotckées en session... Mais je ne sais plus trop
marabout est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2006, 13h31   #3
Membre régulier
 
Inscription : décembre 2005
Messages : 177
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : décembre 2005
Messages : 177
Points : 85
Points : 85
Merci pour ta réponse !
Si je comprends bien, les pairs key-value vous permettaient de stocker en session les propriétés de l'objet et de les reinstancier par la suite ? Ca pourrait effectivement m'eviter de faire appel a mes méthodes de chargements de l'objet en le recréant a chaque page (ce que je souhaite eviter puisque le chargement va chercher pas mal de données dans des tables et des bases différentes) ; par contre je sens que je vais m'éclater si je dois stocker en session les champs de mon objet, car mon objet de départ contient 1 tableau d'objets qui lui même contient un tableau d'objets reparti sur 3 niveaux (l'objet contient des tableaux d'objets de la même classe différencier par un niveau). Enfin bon, au final vu la galère que ca va être si je dois trouver un moyen de stocker tous les champs en session, je me demande si ca n'est pas plus simple de recréer mon objet a chaque chargement, parce que la page se situe coté back office, donc avec un acces restreint, je ne vais donc pas faire augmenter la charge de mon serveur a cause de cette page meme si elle effectue pas mal de requete.
Merci pour ton aide en tous cas, si tu as d'autres infos sur le moyen que vous aviez trouvé pour stocker l'objet je suis preneur !
Matth_S est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2006, 14h19   #4
Expert Confirmé Sénior

 
Avatar de Immobilis
 
Inscription : mars 2004
Messages : 5 849
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 5 849
Points : 5 965
Points : 5 965
Salut,

On peut stocker des tableaux en session, mais la session qui les stockent ne sont pas des tableaux il faut donc les mettre dans une variable locale et ça passe.

A+
Immobilis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2006, 16h27   #5
Membre régulier
 
Inscription : décembre 2005
Messages : 177
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : décembre 2005
Messages : 177
Points : 85
Points : 85
Merci pour ta réponse !

Tu veux dire que si j'instancie de la manière suivante
Code :
1
2
 
Session("maVariable")=maVariable 'a maVariable est un tableau
et que je récupère la variable comme ca :
Code :
1
2
 
maVariable=Session("maVariable")
dans ce cas je peux utiliser maVariable comme un tableau ?

Par contre ca fonctionne avec les tableaux mais pas avec les objets, donc même si je peux stocker en session mes tableaux d'objet, je vais pouvoir récuperer le tableau mais jamais acceder aux objets qu'il contenait ?
Matth_S est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2006, 16h35   #6
Membre émérite
 
Avatar de marabout
 
Homme
Consultant E-Learning
Inscription : août 2006
Messages : 646
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations professionnelles :
Activité : Consultant E-Learning

Informations forums :
Inscription : août 2006
Messages : 646
Points : 812
Points : 812
Ca ne t'arrange peut-être pas, mais en le voyant, c'est je me souviens que c'est la solution à laquelle nous étions arrivé...
marabout est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2006, 17h28   #7
Expert Confirmé Sénior

 
Avatar de Immobilis
 
Inscription : mars 2004
Messages : 5 849
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 5 849
Points : 5 965
Points : 5 965
Citation:
Envoyé par Matth_S
je vais pouvoir récuperer le tableau mais jamais acceder aux objets qu'il contenait
De quels objets s'agit-il?
Immobilis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2006, 15h58   #8
Membre régulier
 
Inscription : décembre 2005
Messages : 177
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : décembre 2005
Messages : 177
Points : 85
Points : 85
Il s'agit d'objets de classes que j'ai créées moi même ; j'avais cru comprendre que l'on pouvait stocker en session les objets créés avec Server.CreateObject (comme les objets de type Scripting.Dictionary), mais par contre que ca ne fonctionnait pas avec des objets de classe qu'on écrit soit même ; c'est justement la mon problème car mes classes sont assez enormes et j'aurais voulu une fois qu'elles étaient instanciées pouvoir les recuperer ; si je dois stocker chaque variable de la classe et tout reinstancier ca va vraiment être galère, je ne sais pas ce qui est le mieux entre recréer completement mon objet (donc rappeler toutes les valeurs a partir de la base de données), ca nécessite l'appel d'une seule méthode et donc de 1 seule ligne de code, ou alors stocker toutes mes variables et tableaux etc en session et les réinstancier une par une : pas d'appel à la base de données mais 100 lignes de codes supplémentaire pour tout resinstancier et un risque d'erreur supplémentaire.
Matth_S est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2006, 17h29   #9
Membre Expert
 
Avatar de NoisetteProd
 
Inscription : janvier 2003
Messages : 1 912
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 1 912
Points : 1 925
Points : 1 925
Envoyer un message via MSN à NoisetteProd
Pourquoi ne pas ecrire une fonction de sérialisation de ton objet en XML ?
Ensuite, tu passe le texte de ton XML en session.
Lorsque tu la récupère, tu recré ton objet, mais sans connection à la BDD, simplement en utilisant MSXML pour récupérer les infos de l'XML.
__________________
Fais cogiter ta Noisette !!

Participez à la page SOURCES Delphi !

Découvrez le Défi Delphi

Mon Mail
NoisetteProd est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2006, 11h34   #10
Membre régulier
 
Inscription : décembre 2005
Messages : 177
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : décembre 2005
Messages : 177
Points : 85
Points : 85
Merci pour ta réponse, ca me semble être une bonne solution, la fonction ne devrait pas être trop compliqué surtout si je récupère les données via MSXML.

Le problème est donc résolu (vu que vous m'avez donné la solution), pour le moment je ne l'ai pas encore mis en oeuvre car j'ai un autre problème avec mes objets qui me tombe dessus ! Je vais certainement refaire un nouveau poste si je n'arrive pas à le résoudre
Matth_S est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h49.


 
 
 
 
Partenaires

Hébergement Web