Conserver une valeur dans un WebService - C#/.NET managed - Programmation
Marsh Posté le 12-06-2006 à 15:55:41
Pouurrais-tu préciser sur quelle plateforme tu comptes faire tourner ton webservice ? (Est-ce sous MS-Windows avec IIS ?)
Marsh Posté le 12-06-2006 à 16:21:20
Tu peux alors définir une classe Global comme par exemple :
Code :
|
dans laquelle tu définis tes propriétés globales et les accesseurs éventuels.
Cependant, je dois te mettre en garde car "IIS peut faire le ménage quand il veut" (pas pendant une connexion tout de même) et donc tu risques de perdre les valeurs stockées dans ces propriétés.
Si tu dois vraiment conserver ces valeurs sur plusieurs jours d'inutilisation de ton service, je te conseille alors de stocker celles-ci dans une base de données.
Marsh Posté le 12-06-2006 à 16:56:59
bb138 a écrit : Tu peux alors définir une classe Global comme par exemple : |
Pas cool du tout ca!
Et on peut au moins détecter le fait qu'il a fait le ménage ou pas?
Si je fait 2 variables: une qui est mon compteur et l'autre qui est un statut. Je mettrai à 1 dès que je détecte qu'il a fait le ménage est ce que je peut etre sur qu'il met en même temps mon statut et mon compteur à 0? Dans ce cas je teste mon statut pour voir si il est à 0 ca signifie qu'il a fait le ménage...
Marsh Posté le 12-06-2006 à 17:15:20
Pour "t'amuser" avec ta classe global tu as pas mal de méthodes utiles :
Code :
|
J'espère que ça va t'aider un peu
Marsh Posté le 12-06-2006 à 17:38:28
Et ca marche avec les WebServices???
Si on joue avec les session, elle se trouve au niveau de l'utilisateur non? Si l'utilisateur se déconnecte est ce que ma valeur sera quand meme sauvée?
Marsh Posté le 12-06-2006 à 17:57:45
Dans ton cas, il vaut mieux utiliser Application_xxx et tout devrait aller comme tu le souhaites !
Marsh Posté le 13-06-2006 à 11:42:18
the big ben a écrit : Bonjour, Je voudrais savoir comment faire pour conserver une valeur dans un Webservice et ce quel que soit l'utilisateur. D'avance merci Ben |
tu peux pas utiliser l'objet Cache ?
Marsh Posté le 13-06-2006 à 21:12:36
non non non
la seule solution c'est de faire un Web Service STATEFULL, bien que ce genre de service ne soit pas préconisé par la norme...
L'objectif est donc d'avoir un container ou la variable à conserver serait mis dans une variable de session.
Du coté client, il faut bien entendu gardé chaque fois la session.
Mais sincèrement ce genre de truc n'est vraiment pas génial. La norme précise bien que les Web Services doivent être STATELESS... Enfin voila, il existe quand même un moyen d'en faire des STATEFULL... J'en ai fais un, c'est pas compliqué, c'est donc jouant sur les variables de session, et un définissant un cookie container coté client.
Marsh Posté le 14-06-2006 à 11:44:24
Mouais... mais une variable static c'est quand même bien plus simple.
T'as pas dit pourquoi tu trouves pas ça bien... je veux pas mourir idiot.
Marsh Posté le 14-06-2006 à 13:15:29
crois pas que ça marchera avec une variable static. Si ça marchait, tout le monde utiliserait ça. Or personne ne le fait, et passe donc par une variable de Session...
Puis super la variable Static, si ça venait à marcher, tout le monde aurait la même. C'est pas top comme solution, c'est mon avis perso...
Marsh Posté le 14-06-2006 à 14:04:41
Ah si si, ça marche. Je t'invite à faire le test
Ca m'a causé beaucoup de pb par le passé. De très nombreuses heures de débuggage pour se rendre compte que des variables étaient modifiées "toutes seules"... par un autre utilisateur du site ou du Web Service, tout ça à cause d'un pauvre static.
Et oui, c'est la même pour tous les utilisateurs, mais il me semble que c'est ce que demandait Ben...
the big ben a écrit : Je voudrais savoir comment faire pour conserver une valeur dans un Webservice et ce quel que soit l'utilisateur. |
Pour être précis, les variables statiques sont instanciées dans un tas au niveau processus, donc partagées par tous les threads qui tournent dessus. Et dans des applis web, tu n'as qu'un seul worker (processus) par ApplicationPool dans IIS, donc toutes tes variables statiques sont partagées par les utilisateurs.
Marsh Posté le 14-06-2006 à 17:16:49
Je vais tester ca alors (sauf que je suis en Delphi .net donc il va falloir que je trouve comment faire la meme chose)
Marsh Posté le 14-06-2006 à 17:17:16
ah ben j'essayerais une fois... dans son cas les variables statiques sont alors tout à fait adéquates...
Marsh Posté le 12-06-2006 à 15:38:59
Bonjour,
Je voudrais savoir comment faire pour conserver une valeur dans un Webservice et ce quel que soit l'utilisateur.
J'ai besoin d'une sorte de compteur à chaque fois que je passe dans une procédure.
D'avance merci
Ben