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

Pool de Conexiones ASP + VB

Estas en el tema de Pool de Conexiones ASP + VB en el foro de ASP Clásico en Foros del Web. Qué tal? Mi consulta es la siguiente, quiero hacer un pool de conexiones pero real. O sea.. por más que uno haga un include con ...
  #1 (permalink)  
Antiguo 02/05/2007, 08:09
Avatar de Cbas  
Fecha de Ingreso: enero-2002
Ubicación: capital federal
Mensajes: 437
Antigüedad: 23 años, 4 meses
Puntos: 2
Exclamación Pool de Conexiones ASP + VB

Qué tal?
Mi consulta es la siguiente, quiero hacer un pool de conexiones pero real.

O sea.. por más que uno haga un include con la conexión a la base de datos, con cada refresh de la página la conexión se cierra y luego la usamos de nuevo.
Por ejemplo si yo tengo un listado de usuarios, abro la conexión, abro un recordset, y listo, después si hago click sobre un usuario para verlo en detalle tengo que volver a conectarme a la base, espero haber sido claro, pero basicamente es como todos trabajos.

Ahora mi problema es el siguiente yo tengo archivos ASP's que en realidad los utilizo como la capa de usuario, o sea que lo que hago es.

Código del ASP
array_Usuario = getAllUsers()

Donde getAllUsers() es un método que tengo en un componente de Visual Basic, hecho por mí que devuelve un select de la base, pero en forma de array (por el recordset.getrows).

La cosa es que de esa forma también siempre se abre la conexión, se utiliza y después se cierra, de hecho por más que no la cierre después no me queda una conexión "viva"

Espero haber sido lo más claro posible mi idea es tener una conexión abierta SIEMPRE, o sea la abro una vez y listo..

Muchas gracias de Antemano
__________________
La Perfección es enemigo de lo bueno.
  #2 (permalink)  
Antiguo 02/05/2007, 08:35
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 19 años, 4 meses
Puntos: 7
Re: Pool de Conexiones ASP + VB

¿Y para que quieres mantener la base de datos abierta? ¿tu sabes lo ineficiente que puede llegar a ser eso? ¿Sabes lo que son los bloqueos e interbloqueos en una base de datos? ¿sabes lo que le cuesta al sistema mantener 1000 conexiones abiertas a la BD continuamente?

Cuando hacia aplicaciones de consola me desesperaban los bloqueos a la base de datos. Allí aprendí a abrir y cerrar las tablas lo antes posible y liberar de recursos al servidor. Cuando me pasé al mundo de Internet y las aplicaciones web me alegré enormemente el hecho de que todas las acciones contra la BD se hacian en el lado del servidor. Una vez interpretado por el server, este cerraba todo y enviaba el resultado al cliente, dejando al servidor (alma y corazón de una aplicación web) libre para atender otras solicitudes.

Ademas, dejar abierta una BD en una aplicación web es practicamente imposible (si, es posible creando un objeto connection y metiandolo en una variable Session, pero eso es como una "Crónica de una muerte anunciada" del server) e ineficiente.

¿Para que necesitas eso?



Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #3 (permalink)  
Antiguo 02/05/2007, 08:57
Avatar de Cbas  
Fecha de Ingreso: enero-2002
Ubicación: capital federal
Mensajes: 437
Antigüedad: 23 años, 4 meses
Puntos: 2
Re: Pool de Conexiones ASP + VB

jejjejee... muy buena la frase "Crónica de una muerte anunciada".
Primero gracias por la respuesta y la velocidad.

te cuento lo que pasa es lo siguiente, no es para mí y no es un capricho mío.
Es un cliente que usa bases de datos SQL Server / Oracle, pero también usan Universe, es una base de IBM de hace unos 20 años o más creo... y lo que me dicen es que esa base de datos da como un tip de "buenas prácticas" no abrir y cerrar la base constantemente porque se rompe todo y de hecho es lo que les está pasando.

Estuve viendo de hacer un servicio con .NET y ponerlo en el COM+ para que lo pueda consumir aplicaciones que no sean de .NET... voy a ir viendo por ese lado a ver qué onda... si alguien tiene alguna idea... será bienvenida.

Muchas gracias Tammander por la respuesta.
__________________
La Perfección es enemigo de lo bueno.
  #4 (permalink)  
Antiguo 02/05/2007, 23:12
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, 2 meses
Puntos: 88
Re: Pool de Conexiones ASP + VB

segun a lo que entendi, seria algo asi como abrir la base de datos, en el momento que el usuario se identifique como cualquier otro hiciere, pero mantener la conexion activa mediante GLOBAL.ASA, en on_application... con la session del usuario en tiempos de ejecucion

y al refrescar o utilizar un enlace o consulta, preguntar si esta conexion sigue activa... caso contrario volver a abrirla

eso seria lo que buscases????
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #5 (permalink)  
Antiguo 03/05/2007, 01:19
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 19 años, 4 meses
Puntos: 7
Re: Pool de Conexiones ASP + VB

Cita:
Iniciado por Cbas Ver Mensaje
Es un cliente que usa bases de datos SQL Server / Oracle, pero también usan Universe, es una base de IBM de hace unos 20 años o más creo... y lo que me dicen es que esa base de datos da como un tip de "buenas prácticas" no abrir y cerrar la base constantemente porque se rompe todo y de hecho es lo que les está pasando.

Estuve viendo de hacer un servicio con .NET y ponerlo en el COM+ para que lo pueda consumir aplicaciones que no sean de .NET... voy a ir viendo por ese lado a ver qué onda... si alguien tiene alguna idea... será bienvenida.
Pues entonces la mejor opcion es la que te comenta Shiryu_Libra, en el global.asa y en evento Application_OnStart abrir la BD en un objeto connection y meter dicho objeto en una variable de sesion. Dicho objeto se creará por cada usuario que abra la página por lo cual se crearán tantas conexiones como usuarios se conecten a la página. Otra opción es hacer lo mismo pero en un objeto Application. En este caso solo habrá una conexión para todos los usuarios que se conecten a la página. Las limitaciones de cada caso dependerá de tus necesidades:

- En una variable Session nacerán y morirán en cada conexión / desconexión de usuario al sitio web o tras pasados el limite que estableces en la propiedad Timeout del objeto session (por defecto es 20 mins pero depende mucho de lo cargado que ande el server) de inactividad por parte del usuario.

- En la variable Application las conexiones nacen y mueren con el primer usuario que entra en la página y el último que sale. No existe limitación de tiempo salvo que no haya nadie conectado. Entonces el objeto se cerrará por la propia limitación de la variable Application.


Otra opción es mantener abierta la conexion si o si con un objeto COM+ Todo dependerá de tus necesidades. Te recomiendo que investigues el global.asa y hagas pruebas con el. Es muy posible que te permita solucionar tus problemas (a costa del rendimiento del servidor )


Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #6 (permalink)  
Antiguo 06/05/2007, 15:55
Avatar de Cbas  
Fecha de Ingreso: enero-2002
Ubicación: capital federal
Mensajes: 437
Antigüedad: 23 años, 4 meses
Puntos: 2
Re: Pool de Conexiones ASP + VB

Hola, qué tal? gracias por las respuestas y perdón por mi demora.

Les cuento que yo lo primero que planteé fue el tema del global.asa para meterlo en el session en el application start pero lo que pasa es que ellos trabajan todo con DLL's por lo que no quería tener el "costo" de pasarle la conexión a la DLL simepre que ejecuten un método.
Pero a mí entender eso debería ser lo mejor... voy a proponerles eso nuevamente a ver qué onda.

Les cuento, yo lo que hice fue crear un Servicio de Windows desde Visual Basic y tener la conexión abierta ahí siempre, ahí fue bien, pero para mí tener la base siempre abierta es demasiado costoso.

Muchas gracias.

SALUDOS!
__________________
La Perfección es enemigo de lo bueno.
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 05:46.