Cita:
Iniciado por Cbas
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