Desarrollo Conceptual C#

16/01/2004 - 11:47 por carlos | Informe spam
Solo una cuestión conceptual en el desarrollo en ASP.NET.

Tenemos páginas ASPX, con sus componentes (controles
web). Ahora imaginamos que creamos controles web propios
que utilizan accesos a base de datos.

La cuestión es cómo puedo abstraerme de acceder a la
conexión de base de datos, es decir, en la página yo
tengo el control y en la clase codebehind quiero evitar
tener que pasarle al control una conexión ya abierta para
que éste haga sus consultas.

Es decir, quisiera que en cada página para todos los
controles de alguna forma se tenga una conexión (en
alguna parte) y los controles en su codigo accedieran de
alguna forma a esa conexión e hicieran sus consultas.
Sería la página de alguna forma la que abriera la
conexión y la cerrara...pero en el transcurso de la
ejecución de su código behind los controles que sean
utilizaran esa conexión abierta para ejecutar consultas.

Otra forma de actuar sería utilizar para todas las
páginas o gran parte de eŽstas la misma conexión.

Luego habría que pensar los problemas de rendimiento,
cómo se maneja el pool de conexiones, qué problemas
habría...etcétera...

Alguna sugerencia ?.

Gracias.

Preguntas similare

Leer las respuestas

#1 A.Poblacion
16/01/2004 - 16:20 | Informe spam
Sugerencia:
- Pon la cadena de conexión en el Web.Config
- Que cada control abra la conexión utilizando esa cadena y luego la cierre.
Este proceso es muy rápido, porque la conexión en realidad no se abre y se
cierra, sino que internamente se toma del pool y se devuelve al mismo.

Podrías abrir y cerrar la conexión a nivel de página y guardarla en el
Session para que los controles accedan a ella, o pasarsela a los controles a
través de una propiedad, pero no merece la pena porque el mecanismo del pool
es muy eficiente.



"carlos" wrote in message
news:077d01c3dc1e$297fd940$
Solo una cuestión conceptual en el desarrollo en ASP.NET.

Tenemos páginas ASPX, con sus componentes (controles
web). Ahora imaginamos que creamos controles web propios
que utilizan accesos a base de datos.

La cuestión es cómo puedo abstraerme de acceder a la
conexión de base de datos, es decir, en la página yo
tengo el control y en la clase codebehind quiero evitar
tener que pasarle al control una conexión ya abierta para
que éste haga sus consultas.

Es decir, quisiera que en cada página para todos los
controles de alguna forma se tenga una conexión (en
alguna parte) y los controles en su codigo accedieran de
alguna forma a esa conexión e hicieran sus consultas.
Sería la página de alguna forma la que abriera la
conexión y la cerrara...pero en el transcurso de la
ejecución de su código behind los controles que sean
utilizaran esa conexión abierta para ejecutar consultas.

Otra forma de actuar sería utilizar para todas las
páginas o gran parte de e´stas la misma conexión.

Luego habría que pensar los problemas de rendimiento,
cómo se maneja el pool de conexiones, qué problemas
habría...etcétera...

Alguna sugerencia ?.

Gracias.
Respuesta Responder a este mensaje
#2 Michael Giagnocavo [MVP]
17/01/2004 - 21:51 | Informe spam
HttpContext.Current.Items podrias ser util (mejor que session y mas facil de
implementar propiedades). Pero, tampoco lo recomiendo.

-mike
MVP

"A.Poblacion" wrote in
message news:
Sugerencia:
- Pon la cadena de conexión en el Web.Config
- Que cada control abra la conexión utilizando esa cadena y luego la


cierre.
Este proceso es muy rápido, porque la conexión en realidad no se abre y se
cierra, sino que internamente se toma del pool y se devuelve al mismo.

Podrías abrir y cerrar la conexión a nivel de página y guardarla en el
Session para que los controles accedan a ella, o pasarsela a los controles


a
través de una propiedad, pero no merece la pena porque el mecanismo del


pool
es muy eficiente.



"carlos" wrote in message
news:077d01c3dc1e$297fd940$
Solo una cuestión conceptual en el desarrollo en ASP.NET.

Tenemos páginas ASPX, con sus componentes (controles
web). Ahora imaginamos que creamos controles web propios
que utilizan accesos a base de datos.

La cuestión es cómo puedo abstraerme de acceder a la
conexión de base de datos, es decir, en la página yo
tengo el control y en la clase codebehind quiero evitar
tener que pasarle al control una conexión ya abierta para
que éste haga sus consultas.

Es decir, quisiera que en cada página para todos los
controles de alguna forma se tenga una conexión (en
alguna parte) y los controles en su codigo accedieran de
alguna forma a esa conexión e hicieran sus consultas.
Sería la página de alguna forma la que abriera la
conexión y la cerrara...pero en el transcurso de la
ejecución de su código behind los controles que sean
utilizaran esa conexión abierta para ejecutar consultas.

Otra forma de actuar sería utilizar para todas las
páginas o gran parte de eŽstas la misma conexión.

Luego habría que pensar los problemas de rendimiento,
cómo se maneja el pool de conexiones, qué problemas
habría...etcétera...

Alguna sugerencia ?.

Gracias.


Respuesta Responder a este mensaje
#3 Pacho
18/01/2004 - 21:03 | Informe spam
Podrias crearte una clase "PaginaConexion", por ejemplo, que herede de
System.Web.UI.Page. En esta clase le agregas un propiedad "Conexion" y la
abres y cierras cuando quieras.

Luego en tus controles, internamente obtienes la propiedad page. Le haces un
cast para convertirlo en "PaginaConexion". y asi puedes obtener la conexion
y asignarsela.

Luego no te olvides que tu pagina web en vez de heredar de
System.Web.UI.Page tiene que heredar de "PaginaConexion".

Un saludo

"carlos" escribió en el mensaje
news:077d01c3dc1e$297fd940$
Solo una cuestión conceptual en el desarrollo en ASP.NET.

Tenemos páginas ASPX, con sus componentes (controles
web). Ahora imaginamos que creamos controles web propios
que utilizan accesos a base de datos.

La cuestión es cómo puedo abstraerme de acceder a la
conexión de base de datos, es decir, en la página yo
tengo el control y en la clase codebehind quiero evitar
tener que pasarle al control una conexión ya abierta para
que éste haga sus consultas.

Es decir, quisiera que en cada página para todos los
controles de alguna forma se tenga una conexión (en
alguna parte) y los controles en su codigo accedieran de
alguna forma a esa conexión e hicieran sus consultas.
Sería la página de alguna forma la que abriera la
conexión y la cerrara...pero en el transcurso de la
ejecución de su código behind los controles que sean
utilizaran esa conexión abierta para ejecutar consultas.

Otra forma de actuar sería utilizar para todas las
páginas o gran parte de e´stas la misma conexión.

Luego habría que pensar los problemas de rendimiento,
cómo se maneja el pool de conexiones, qué problemas
habría...etcétera...

Alguna sugerencia ?.

Gracias.
Respuesta Responder a este mensaje
#4 Daniel Sharp
19/01/2004 - 00:52 | Informe spam
Estarias gastando recursos inapropiados heredando de page

lo adecuado seria construir unicamente la clase que implemente el codigo
necesario para la conexion, toda esta confusion termina con un desarrollo a
N capas

saludos
daniel #

P.D: por alguna razon no me funcionan las tildes :(

"Pacho" wrote in message
news:
Podrias crearte una clase "PaginaConexion", por ejemplo, que herede de
System.Web.UI.Page. En esta clase le agregas un propiedad "Conexion" y la
abres y cierras cuando quieras.

Luego en tus controles, internamente obtienes la propiedad page. Le haces


un
cast para convertirlo en "PaginaConexion". y asi puedes obtener la


conexion
y asignarsela.

Luego no te olvides que tu pagina web en vez de heredar de
System.Web.UI.Page tiene que heredar de "PaginaConexion".

Un saludo
Respuesta Responder a este mensaje
#5 Pacho
19/01/2004 - 14:24 | Informe spam
Hola

Por que se gastarían recursos inapropiados?

Simplemente haciendolo como he comentado la pagina trabajaría igual que
siempre pero con una propiedad mas ("Conexion"). Y asi se podría hacer lo
que quería Carlos.

Eso creo. Si me equivoco comentamelo.

Gracias y Un saludo.

"Daniel Sharp" escribió en el mensaje
news:
Estarias gastando recursos inapropiados heredando de page

lo adecuado seria construir unicamente la clase que implemente el codigo
necesario para la conexion, toda esta confusion termina con un desarrollo


a
N capas

saludos
daniel #

P.D: por alguna razon no me funcionan las tildes :(

"Pacho" wrote in message
news:
> Podrias crearte una clase "PaginaConexion", por ejemplo, que herede de
> System.Web.UI.Page. En esta clase le agregas un propiedad "Conexion" y


la
> abres y cierras cuando quieras.
>
> Luego en tus controles, internamente obtienes la propiedad page. Le


haces
un
> cast para convertirlo en "PaginaConexion". y asi puedes obtener la
conexion
> y asignarsela.
>
> Luego no te olvides que tu pagina web en vez de heredar de
> System.Web.UI.Page tiene que heredar de "PaginaConexion".
>
> Un saludo


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida