OVH Cloud OVH Cloud

Webservice et variable session

1 réponse
Avatar
Chris
Bonjour à tous,

voici mon problème :

J'ai définit un webservice comme suit :

namespace TEST
{
public class calcul : System.Web.Services.WebService
{
monObjet1 x;
monObjet2 y;

public calcul ()
{
this.x = new monObjet1();
this.y = new monObjet2();
}

[WebMethod(Description="set")]
public void Setxy(int a, int b)
{
this.x.xx = a;
this.y.yy = b;
}

[WebMethod(Description="get")]
public string Getxy()
{
return this.x.xx.ToString() +" "+ this.y.yy.ToString();
}
}

public class monObjet1
{
int xx;
public monObjet1 () { xx = 0;}
}

public class monObjet2
{
int yy;
public monObjet2() { yy = 0 ;}
}
}

Ensuite j'ai créé un client web (ASPX) pour consommer ce web service.
Je m'en sert comme suit :

...
TEST.calcul monCalcul = new TEST.calcul();
monCalcul.Setxy(3,4);
string str = monCalcul.Getxy();
...

Juste après ces 3 lignes de code, j'ai "0 0" dans la variable str.
En débugant, je me suis apperçu que la variable monCalcul était
réinitialisée à chaque appel au webservice.

La question est : Y a t-il une astuce pour ne pas réinitialiser le
webservice ??

Merci de votre aide.

1 réponse

Avatar
Paul Bacelar
Un WebService est un RPC (Remote procédure Call), pas un RMC(Remote methode
Call).

Un objet est instancié à chaque appel.

La procédure classique est de sauver et de lire dans la session ces valeurs
en sachant que cela contrevient au principe même des Web Services qui ne
sont pas orientés Objet.

Je vous conseille donc de mettre tout les paramètres de vos fonctions dans
les appels pour avoir un objet sans état qui supportera bien mieux la
charge.
--
Paul Bacelar


"Chris" wrote in message
news:415c2fb9$0$30907$
Bonjour à tous,

voici mon problème :

J'ai définit un webservice comme suit :

namespace TEST
{
public class calcul : System.Web.Services.WebService
{
monObjet1 x;
monObjet2 y;

public calcul ()
{
this.x = new monObjet1();
this.y = new monObjet2();
}

[WebMethod(Description="set")]
public void Setxy(int a, int b)
{
this.x.xx = a;
this.y.yy = b;
}

[WebMethod(Description="get")]
public string Getxy()
{
return this.x.xx.ToString() +" "+ this.y.yy.ToString();
}
}

public class monObjet1
{
int xx;
public monObjet1 () { xx = 0;}
}

public class monObjet2
{
int yy;
public monObjet2() { yy = 0 ;}
}
}

Ensuite j'ai créé un client web (ASPX) pour consommer ce web service.
Je m'en sert comme suit :

...
TEST.calcul monCalcul = new TEST.calcul();
monCalcul.Setxy(3,4);
string str = monCalcul.Getxy();
...

Juste après ces 3 lignes de code, j'ai "0 0" dans la variable str.
En débugant, je me suis apperçu que la variable monCalcul était
réinitialisée à chaque appel au webservice.

La question est : Y a t-il une astuce pour ne pas réinitialiser le
webservice ??

Merci de votre aide.