Ver Mensaje Individual
  #6 (permalink)  
Antiguo 06/08/2010, 09:24
jlchavez
 
Fecha de Ingreso: mayo-2002
Ubicación: Guatemala
Mensajes: 160
Antigüedad: 22 años
Puntos: 1
Respuesta: Variable Global

Todo dependera de donde queres tener tus variables, y si estas comentando en un thread sobre variables globales, pero lo que estas buscando es evitar las variables globales, y más queres variables por usuario... lo importante es determinar el tipo de persistencia que queres para el valor.

Por que contas con varios enfoques:
  • valores globales (este thread)*
  • valores por sesión
  • valores persistentes entre sesiones
  • valores por pagina
  • valores persistentes sin importar la ubicación
  • perfil del usuario
*para todos los usuarios

Entonces todo dependera de que queres hacer...

Me imagino que lo que necesitaras es que cuando un usuario ingrese pueda trabajar con valores y que cuando cierre su sesión en la maquina en la que esta trabajando estos puedan ser descartados.

estos valores los podes accesar desde el objeto Session

Código:
Page.Session["nombreVariable"]
donde podes leer y grabar la variable de sesión de la siguiente manera:

Código:
Page.Session("nombreVariable") = "valor";
variableLocal = Page.Session("nombreVariable")
En Visual Basic no tendrías que hacer un cast, pero en c# si para regresarlo al tipo de valor que estes manejando, aunque por algun motivo podrías necesitar hacer algún CType cuando lees la variable de sesión.

una forma practica de tener acceso en c# sería una propiedad de apoyo

Código:
public string ValorTexto
{
    get { return (string)this.Page.Session["valorTexto"]; }
    set { this.Page.Session["valorTexto"] = value; }
}
aunque habria que colocarlo en cada página... o podrías usar una clase estatica

Código:
public static class Sesion
{
    public static string NumeroSesion
    {
        get { return HttpContext.Current.Session["ns"]; }
        set { HttpContext.Current.Session["ns"] = value; }
    }
}
y podrías accesarlo en cualquier otra página como

Código:
Sesion.NumeroSesion = "1275";
string numero = Sesion.NumeroSesion
vale recordar que cada valor de estos guardado en la sesión aumentara el consumo de memoria del servidor, por lo que es bueno en casos de muchas variables y muchos usuarios considerar la persistencia de la sesión en un SQL Server por ejemplo, o cuando se utilizan varios servidores en una "granja" para soportar altas cargas de usuarios, para poder compartirlo entre todos los servidores debes usar este método.
__________________
José Luis Chávez del Cid
Systems Developer Specialist
ACS Inc./Xerox
Guatemala