|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre régulier
![]() Inscription : décembre 2005 Messages : 177 ![]() |
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 :
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 |
||
|
|
00
|
|
|
#2 |
|
Membre émérite
![]() Consultant E-Learning Inscription : août 2006 Messages : 646 ![]() |
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 |
|
|
00
|
|
|
#3 |
|
Membre régulier
![]() Inscription : décembre 2005 Messages : 177 ![]() |
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 ! |
|
|
00
|
|
|
#4 |
|
Expert Confirmé Sénior
![]() ![]() ![]() Inscription : mars 2004 Messages : 5 849 ![]() |
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+ |
|
00
|
|
|
#5 | ||
|
Membre régulier
![]() Inscription : décembre 2005 Messages : 177 ![]() |
Merci pour ta réponse !
Tu veux dire que si j'instancie de la manière suivante Code :
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 ? |
||
|
|
00
|
|
|
#6 |
|
Membre émérite
![]() Consultant E-Learning Inscription : août 2006 Messages : 646 ![]() |
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é...
|
|
|
00
|
|
|
#7 | |
|
Expert Confirmé Sénior
![]() ![]() ![]() Inscription : mars 2004 Messages : 5 849 ![]() |
Citation:
|
|
|
00
|
|
|
#8 |
|
Membre régulier
![]() Inscription : décembre 2005 Messages : 177 ![]() |
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.
|
|
|
00
|
|
|
#9 |
|
Membre Expert
![]() ![]() |
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 !! Mon Mail |
|
|
00
|
|
|
#10 |
|
Membre régulier
![]() Inscription : décembre 2005 Messages : 177 ![]() |
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 |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com