Ayuda con Servicio Web

01/12/2003 - 12:29 por gga | Informe spam
Hola.

Estoy diseñando un servicio Web a través de VB.NET y tengo
una duda. Necesito definir una variable que sea global, es
decir, que desde cada WebMethod de mi servicio pueda
utilizar el valor de esta variable global.
¿Como y donde puedo definir inicialmente el valor de esta
variable global y como accedo a ella desde los métodos de
mi servicio web?.
Me han comentado que debo utilizar el estado de la sesión
o de la aplicación pero no tengo ni idea de como
utilizarlo. ¿Podrían darme un ejemplo de como se manejan
variables globales en las distintas llamadas a los métodos.

Ej.

Servicio Web
Dim global as integer

webmethod sumar(a as integer, b as integer)
global = a + b

webmethod restar(a as integer, b as integer)
global = a - b

webmethod int mostrar()
returm global

Esta es la idea que tengo, algunos pensarán que porque no
mando el valor global en cada método "sumar" y "restar".
El problema es que la devolución del valor de global no
depende de las 2 llamadas (sumar y restar) depende de que
el usuario quiera mostrar el resultado de la operacion.

Un Saludo.
 

Leer las respuestas

#1 Alejandro Mezcua
01/12/2003 - 15:00 | Informe spam
Hola.

Lo suyo sería utilizar una variable de sesión o de aplicación como bien
dices. Una variable de sesión te mantendrá una variable global por cada
sesión ASP.NET de usuario. Cuando un usuario solicita una página, se le
asigna un 'contenedor' donde se pueden almacenar variables hasta que la
sesión expire, normalmente tras 20 minutos de inactividad. Se distingue a un
usuario de otro mediante una cookie única que el servidor manda a cada
usuario.

Si quieres compartir variables entre distintos usuarios puedes usar el
contenedor de aplicación. Es igual que el anterior con la diferencia de que
se crea cuando se recibe la primera petición al servidor Web y se elimina
cuando se 'apaga' la aplicación.

Para usarlas simplemente tienes que usar algo así (con tu ejemplo, pseudo -
VB):

Servicio Web
Dim global as integer

webmethod sumar(a as integer, b as integer)
Session("global") = a + b
'Application("global") = a + b

webmethod restar(a as integer, b as integer)
Session("global") = a - b
'Application("global") = a - b

webmethod int mostrar()
returm Session("global")
'return Application("global")

La primera vez que utilices una de estas variables se definirá para las
siguientes llamadas. También puedes definirlas inicialmente en los eventos
Session_OnStart o Application_OnStart (creoq ue se llaman así, lo escribo de
memoria) definidos en la clase global.asax.

Si quieres más información mira el objeto HttpContext que es el que ofrece
los objetos de Session y Application.

Un saludo,

Alejandro Mezcua
MVP.NET
Zaltor Soluciones Informáticas


"gga" wrote in message
news:071501c3b7fe$5cc47160$
Hola.

Estoy diseñando un servicio Web a través de VB.NET y tengo
una duda. Necesito definir una variable que sea global, es
decir, que desde cada WebMethod de mi servicio pueda
utilizar el valor de esta variable global.
¿Como y donde puedo definir inicialmente el valor de esta
variable global y como accedo a ella desde los métodos de
mi servicio web?.
Me han comentado que debo utilizar el estado de la sesión
o de la aplicación pero no tengo ni idea de como
utilizarlo. ¿Podrían darme un ejemplo de como se manejan
variables globales en las distintas llamadas a los métodos.

Ej.

Servicio Web
Dim global as integer

webmethod sumar(a as integer, b as integer)
global = a + b

webmethod restar(a as integer, b as integer)
global = a - b

webmethod int mostrar()
returm global

Esta es la idea que tengo, algunos pensarán que porque no
mando el valor global en cada método "sumar" y "restar".
El problema es que la devolución del valor de global no
depende de las 2 llamadas (sumar y restar) depende de que
el usuario quiera mostrar el resultado de la operacion.

Un Saludo.

Preguntas similares