Garder en mémoire la table d'un DataSet

Signaler
Messages postés
57
Date d'inscription
mardi 5 août 2003
Statut
Membre
Dernière intervention
12 septembre 2007
-
Messages postés
57
Date d'inscription
mardi 5 août 2003
Statut
Membre
Dernière intervention
12 septembre 2007
-
Salut

Première chose : Question ASP.NET en c# !

Je dois garder en mémoire une table de mon dataset afin de ne pas devoir la remplir à chaque action des utilisateurs. J'utilise pour cela le code suivant :
"Session["TDomainesOrga"] = ds.TDomainesOrga;"
Ceci marche sans problème.

Le problème est que si beaucoup d'utilisateurs se connectent en même temps, la mémoire du serveur devrait déborder sachant qu'il y a beacoup de lignes dans cette table.

Donc question simple : il y a t'il en ASP.NET une autre méthode que Session pour sauvegarder la table d'un dataset (par exemple) ?

Je vous remercie d'avance pour les réponses :o)

7 réponses

Messages postés
57
Date d'inscription
mardi 5 août 2003
Statut
Membre
Dernière intervention
12 septembre 2007

Je tiens à préciser un point.

Si je veux garder la table de mon dataset en mémoire, c'est tout simplement parce que j'en ai besoin lors de l'appel à l'évènement PageIndexChanged de mon datagrid.

Comme je n'ai pas envie de refaire la requete a chaque changement de page, je voudrai savoir la méthode qui permet de garder une table d'un dataset en mémoire hormis l'objet Session.

Précision rajoutée :o)
Messages postés
586
Date d'inscription
lundi 7 janvier 2002
Statut
Membre
Dernière intervention
10 février 2010
1
re,

si c'est un objet que tous les utilisateurs partagent, tu peux utiliser le cache (tu auras une seule fois l'objet en mémoire pour tous les users).

autrement tu peux utiliser SQL server pour gérer la mémoire (mais au final ton objet est dans la base donc le framework fais une requête pour le récupérer).

tu peux également sauver ton dataset dans un fichier, mais la côté perfs c'est pas la joie.

donc au final, la meilleure solution, c'est de ne pas mettre ton dataset en mémoire et d'utiliser un datareader... et de refaire la requête...

à j'oubliais, tu peux également sauver ton dataset dans le viewstate, mais là aussi, côté perfs.....

yopyop
Messages postés
57
Date d'inscription
mardi 5 août 2003
Statut
Membre
Dernière intervention
12 septembre 2007

Merci pour te réponse.

Pour résumer, le mieux en ASP.NET c'est de refaire la requête à chaque fois...
Je ne trouve pas ça très optimisé (surtout si c'est une grosse requête) mais si finalement c'est la meilleure solution, je vais m'y résoudre...

Je développe dans le cadre de mon boulot et j'attends déjà les critiques du style "Mais qu'est ce que ca rame !!! C'est vraiment pas génial !" etc...

Si qqun d'autre à une opinion à ce sujet, qu'il m'en fasse part...
Messages postés
586
Date d'inscription
lundi 7 janvier 2002
Statut
Membre
Dernière intervention
10 février 2010
1
re,

la question est de savoir si tu as un résultat de requête par utilisateur (var Session) ou si ce sont les mêmes données pour tous les utilisateurs (var Application)...

yopyop
Messages postés
57
Date d'inscription
mardi 5 août 2003
Statut
Membre
Dernière intervention
12 septembre 2007

La réponse est que j'ai un résultat de requête par utilisateur...
Messages postés
586
Date d'inscription
lundi 7 janvier 2002
Statut
Membre
Dernière intervention
10 février 2010
1
re,

donc maintenant c'est une question de choix...
Si tu est sûr que la mémoire va être dépassée, et bien il faut rééxecuter la requête à chaque fois...et dans ce cas, si tu veux gagner en perfs, il faut utiliser un datareader au lieu d'un dataset.


yopyop
Messages postés
57
Date d'inscription
mardi 5 août 2003
Statut
Membre
Dernière intervention
12 septembre 2007

Bon merci pour les conseils.
Je vais faire ça puisque il n'y a pas d'autre solutions.

@+