Foros del Web » Programando para Internet » ASP Clásico »

Sesiones y clases

Estas en el tema de Sesiones y clases en el foro de ASP Clásico en Foros del Web. Hola chic@s! A ver si alguien puede echarme una manita. Resulta que me han pasado el código de una aplicación web de reservas de Rent ...
  #1 (permalink)  
Antiguo 09/05/2007, 05:50
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 19 años, 3 meses
Puntos: 7
Sesiones y clases

Hola chic@s!

A ver si alguien puede echarme una manita. Resulta que me han pasado el código de una aplicación web de reservas de Rent a Car que hace uso de un servicio web. Este servicio web accede a una BD MSSQL con una media de unas 10000 transacciones cada hora (esa es la media entre los accesos de los terminales y el servicio web) con lo cual no puedo ir accediendo a la BD cuando a mi me de la gana (eso pensaron los que diseñaron el codigo de la web). Para ello decidieron sobrecargar el servidor web que anda por otro lado. Para no darle tanto trajín a la BD decidieron crear clases con los datos pertinentes.

En el caso que nos ocupa en concreto es una clase sencilla de propiedades:

Código:
class dCuenta
    dim numCuenta, passCuenta, nomCuenta
    public property let setNumCuenta(n)
        numCuenta = n
    end property
    public property let setPassCuenta(n)
        passCuenta = n
    end property
    public property let setNomCuenta(n)
        nomCuenta = n
    end property
    
    public property get getNumCuenta
        getNumCuenta = numCuenta
    end property
    public property get getPassCuenta
        getPassCuenta = passCuenta
    end property
    public property get getNomCuenta
        getNomCuenta = nomCuenta
    end property
end class

Todo funciona correctamente hasta que asignamos dicha clase en una variable de sesion:

Código:
if not isObject(session("clsAgencia")) then
set c = new dCuenta
c.setNumCuenta = 4300001

set session("clsAgencia") = c
end if

La primera vez que pasa asigna correctamente la instancia de dCuenta a la variable de sesion. Y la puedo leer desde otra página. Cuando se recarga la página ya no hace falta (ya que ya es un objeto) Sin embargo cuando intento hacer uso de sus valores me suelta un error: El objeto no acepta esta propiedad o método: 'getNomCuenta' Sin embargo si lo tiene (ver mas arriba) y, si le hago un TypeName(session("clsAgencia")) me devuelve correctamente dCuenta. Ando un poco perdido y no se me ocurre por donde van los tiros.


Gracias anticipadas a aquel(los) que me ilumine




Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #2 (permalink)  
Antiguo 09/05/2007, 07:36
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Re: Sesiones y clases

Eso lo solucionas si quitas el IF y en cada página sobreescribes la sesión session("clsAgencia") = new dCuenta
  #3 (permalink)  
Antiguo 09/05/2007, 08:17
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 19 años, 3 meses
Puntos: 7
Re: Sesiones y clases

mmmm pero entonces no me sirve de nada guardar los datos en una clase si la reinicio con cada llamada a la página. Existe unos valores minimos:

c.setNumCuenta = 4300001
c.setPassCuenta = xHj67765

que solo cambian si se logea una Agencia. En caso de que sea un Cliente Directo (o anónimo) estos datos se mantienen siempre igual (4300001 es un asiento contable) En caso de que se logee una Agencia de Viajes por ejemplo seria

c.setNumCuenta = 4300024
c.setPassCuenta = xxxxx96

Todos los clientes que hagan reservas con esta cuenta se comisiona a dicha agencia. No puedo pedir los datos a la agencia cada vez que se recarga la página.

Si es Objecto --> Los datos validados
Si no lo es -----> Datos basicos de Cliente Directo

Esto dejaría de ser valido. Creo que no me convence esto de meter clases en las variables de sesion. Creo que lo mejor es quitarlas y usar cadenas separadas por un caracter especial:

Session("Agencia") = "4300001#yu778jjhgg#Avis"

Y luego hacerle un split :(
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #4 (permalink)  
Antiguo 09/05/2007, 11:28
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
Re: Sesiones y clases

Curioso, debe ser un problema con la persistencia del objeto en una sesión, por lo que veo de cualquier manera solo estás guardando un valor que es es la agencia cierto?

Si es así podrías guardar en lugar del objeto, solo el id y hacer un método GetRec por ejemplo para esa clase que on demand te de los valores que necesitas(nombre, dirección, etc) basado en ese id en sesión.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #5 (permalink)  
Antiguo 09/05/2007, 11:57
Avatar de CésarBalaguer  
Fecha de Ingreso: octubre-2006
Ubicación: en mi casa
Mensajes: 181
Antigüedad: 18 años, 6 meses
Puntos: 0
Pregunta Re: Sesiones y clases

Una pregunta...
1. ¿le estas haciendo un Nothing a tu variable c o a tu Session("clsAgencia")?
  #6 (permalink)  
Antiguo 09/05/2007, 12:10
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 19 años, 3 meses
Puntos: 7
Re: Sesiones y clases

Cita:
Iniciado por u_goldman Ver Mensaje
Curioso, debe ser un problema con la persistencia del objeto en una sesión, por lo que veo de cualquier manera solo estás guardando un valor que es es la agencia cierto?

Si es así podrías guardar en lugar del objeto, solo el id y hacer un método GetRec por ejemplo para esa clase que on demand te de los valores que necesitas(nombre, dirección, etc) basado en ese id en sesión.

Saludos
Estoy guardando una instancia de una clase que contiene tres valores: Su id, su password y su nombre. Su id y su password porque son necesaria para formar la clave de acceso encriptado al servicio web. El nombre es solo una cuestion estética. Y si, creo que es un problema de persistencia. He probado con una clase aun mas simple en otro servidor y le pasa lo mismo: guarda la estructura pero no la información.

Lo de guardar solo la Id se me hace inviable. No puedo hacer mas que 2 o 3 llamadas al servicio web y en determinados momentos clave (recuperar/crear reservas, recuperar precios dependiendo del la Agencia que solicite la informacion, etc). Recuerda que es una BD supersaturada con 10000 accesos cada hora (no exagero) Ya tuve que acercarme a sus instalaciones una vez para optimizar la pt BD que se hundia con tantos bloqueos que montaba la muy....


Cita:
Iniciado por CésarBalaguer Ver Mensaje
Una pregunta...
1. ¿le estas haciendo un Nothing a tu variable c o a tu Session("clsAgencia")?
Nop. Si puedo leer el tipo. Hago TypeName(clsAgencia) y me devuelve, correctamente, que es una dCuenta. Pero no paso de ahí.
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #7 (permalink)  
Antiguo 09/05/2007, 12:14
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
Re: Sesiones y clases

En ese caso ni modo, guarda un arreglo o un string que después puedas separar, en sesión como dijiste.

Incluso esto pudiera hacer tu aplicación un poco mas eficiente je je
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #8 (permalink)  
Antiguo 09/05/2007, 12:24
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 19 años, 3 meses
Puntos: 7
Re: Sesiones y clases

See, voy a tener que rehacer casi todo el codigo Voy a matar a mi jefe y a los malditos programadores que me montaron este jaleo. Por ese orden
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #9 (permalink)  
Antiguo 09/05/2007, 12:29
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
Re: Sesiones y clases

Cita:
Iniciado por tammander Ver Mensaje
See, voy a tener que rehacer casi todo el codigo Voy a matar a mi jefe y a los malditos programadores que me montaron este jaleo. Por ese orden
Pero entonces eso quiere decir que nunca lo probaron o cuál es el tema? No se me ocurre como pudieron "terminar" un desarrollo con una falla de esa magnitud.
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #10 (permalink)  
Antiguo 09/05/2007, 12:36
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 19 años, 3 meses
Puntos: 7
Re: Sesiones y clases

El problema es que no se puede hacer tantas solicitudes a una BD tan saturada. Viendo que se les hundia el sistema, intentaron hacer menos llamadas al servicio web e "inventaron" todo esto de las clases. Viendo que no les funcionaban llamaron a mi jefe (genio y figura de la aplicacion de Rent a Car que usa media España) y mi jefe, como no tiene ni idea de programacion web me pasó el marron a mi
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #11 (permalink)  
Antiguo 09/05/2007, 12:41
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Re: Sesiones y clases

MMMMMMMMMMM

a ver, todo el chiste es que no quieres instanciar el objeto en cada llamada al server por no conectarte a la BD's ...... por que no conservas los datos del objeto en una cookie?
  #12 (permalink)  
Antiguo 09/05/2007, 12:51
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 19 años, 3 meses
Puntos: 7
Re: Sesiones y clases

mmmmm lo pensé pero son datos muy delicados y, como tu dijiste una vez (o fue u_goldman) no puedes confiar en que todo el que se conecte tenga las cookies habilitadas. Ciertamente lo ideal hubiera sido una clase en una sesion pues la sesion deja un UID de dicho proceso del server en el cliente en forma de cookie que es eso, simplemente un chorizo de numeros y letras unico pero sin información sensible. Creo que hay un fallo en algun lado que no veo pero corre prisa esto. Lo mejor es meterlo en un arreglo o en una string como ha dicho u_goldman y rehacerlo todo a marchas forzadas


Gracias, chicos, por vuestro interés
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #13 (permalink)  
Antiguo 09/05/2007, 15:27
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Re: Sesiones y clases

Pues las sesiones igual necesitan las cookies, o sea que igual tienes esa limitante y supongo que es precisamente la limitante de las cookies y el hecho de que no puedes almacenar objetos en ellas lo que te esta causando problemas.

Ni modo ... aunque me imagino que para esta hora, ya debes de haberlo resuelto de la otra forma

  #14 (permalink)  
Antiguo 09/05/2007, 19:10
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 18 años, 1 mes
Puntos: 88
Re: Sesiones y clases

aunque lo de las cookies no sono mal, solo seria cuestion de caducar dichas cookies inmediatamente de usarlas
pero pues como mencionas Myakire. capas que ya lo soluciono
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #15 (permalink)  
Antiguo 11/05/2007, 06:58
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 19 años, 3 meses
Puntos: 7
Re: Sesiones y clases

Lo terminé!!!!!!!!!!!!!!! ¡Vivan las cadenas! Invito a todos a una birras que es viernes
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:05.