Foros del Web » Programación para mayores de 30 ;) » .NET »

Duda por arquitectura de aplicación web

Estas en el tema de Duda por arquitectura de aplicación web en el foro de .NET en Foros del Web. Tengo una aplicación web en capas, una de acceso a datos, una de reglas y validaciones y otra de sistema que es la que me ...
  #1 (permalink)  
Antiguo 15/04/2005, 06:16
Avatar de Rony J.  
Fecha de Ingreso: noviembre-2004
Ubicación: Maracay - Vzla
Mensajes: 223
Antigüedad: 19 años, 5 meses
Puntos: 0
Duda por arquitectura de aplicación web

Tengo una aplicación web en capas, una de acceso a datos, una de reglas y validaciones y otra de sistema que es la que me sirve de comunicación entre la clase de reglas y los webform.. En fin, tengo en mi webform un sub que se encarga de buscar inf en la BD, lo hago con un DataReader, luego de leer mi Reader llamo al método close del mismo y llamo a un sub que está en mi clase de datos para cerrar la conexion a la BD, ahora bien, tengo una función en datos que retorna un DataReader y se lo pasa a otra función en la clase de reglas que también retorna un reader para pasarselo a la clase de sistema y de alli al webform...
Como dije antes en el webform llamo al método close de mi reader y cierro la conexion, ahora bien, no necesito cerrar tambien los DataReader que me retornan las funciones en las clases de datos y reglas? o no es necesario?

No es que me den errores ni nada, solo que tengo esa duda...
Gracias de antemano y disculpen lo extenso.. jej
__________________
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas. Albert Einstein
  #2 (permalink)  
Antiguo 15/04/2005, 08:17
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Según tengo yo entendido, no, ya que cuando haces un return 'variable' devuelves el objeto entero, luego al cerrar el reader, creo estas cerrando todos (que sólo es uno vamos).
  #3 (permalink)  
Antiguo 15/04/2005, 08:53
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Tambien depende de como estas estableciendo tu datareader...por ejemplo si tienes un método que te regresa un DR algo así:

Cita:
Private Function GetDataReader() As SqlDataReader
...
...
oConn.Open()
Dim dr As SqlDataReader = oCmd.ExecuteReader(CommandBehavior.CloseConnection)

Return dr
End Function
Y se lo pasas a un datagrid:

Cita:
Dim dr As SqlDataReader = GetDataReader()

DataGrid1.DataSource = dr
DataGrid1.DataBind()
En ese momento tanto la conexion como el datareader están cerrados, ya que el mismo objeto grid se encarga de esa parte..

ahora que si estas regresando un reader y lo estas recorriendo por ejemplo con un while..
Cita:
Do While dr.Read
..
..

Loop
Cuando termine el ciclo el dataredaer seguirá abierto...

Todo depende de como lo estes usando.. pero si quieres saber si está o no cerrado puedes simplemente hacer ésto:

Cita:
If Not dr.IsClosed Then
dr.Close()
End If
Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #4 (permalink)  
Antiguo 15/04/2005, 09:28
Avatar de Rony J.  
Fecha de Ingreso: noviembre-2004
Ubicación: Maracay - Vzla
Mensajes: 223
Antigüedad: 19 años, 5 meses
Puntos: 0
Dim dr As SqlDataReader = oCmd.ExecuteReader(CommandBehavior.CloseConnection)

Gracias a ambos, y sorry pero me podrian explicar un poco que funcion tiene lo que coloque arriba en negritas??

Respecto a la forma como lo estoy trabajando es algo mas o menos asi:
en codebehind tengo una funcion que retorna un reader, algo asi:

Private Function CargarDr as OleDB.OleDbDataReader
Dim sReglas As New Reglas
Return sReglas.DevolverReader
End Function

Luego desde el html declaro un reader y le asigno la función q tengo en codebehind, lo leo y llamo al metodo close del mismo...

De esta manera seria necesario cerrar el Reader que devulve por ejemplo la función "DevolverReader" en la clase de reglas? o como dice Jose_minglein2 al retornar devuelve al objeto completo y al cerrarlo estaria cerrando a todos por lo que no seria necesario?

Ah por cierto trabajo con OleDBDataReader puesto que en esta ocasion no estoy trabajando con SQL Sever ya que se trata de una aplicación pequeña y no veo la necesidad de hacerlo..
__________________
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas. Albert Einstein
  #5 (permalink)  
Antiguo 15/04/2005, 10:01
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Dim dr As SqlDataReader = oCmd.ExecuteReader(CommandBehavior.CloseConnection )
signfica que cuando tu hagas dr.close(), estarás cerrando la conexión al mismo tiempo, no hará falta que hagas myconn.close()

Respecto a lo segundo yo sigo pensando que un return devuelve un objeto, ya que por ejemplo, tu no puedes hacer:

dim dr as SqlDataReader = new sqldatareader

por lo que creo que mi cuando haces la asignación

dim dr as sqldatareader = sReglas.DevolverReader

Se prepara el objeto y se le dice que apunte al reader que devulve sReglas, pero no se crea uno nuevo y se llena con los datos del de sReglas, no se si me explico, pero bueno, espero que me hayas entendido
  #6 (permalink)  
Antiguo 15/04/2005, 12:30
Avatar de Rony J.  
Fecha de Ingreso: noviembre-2004
Ubicación: Maracay - Vzla
Mensajes: 223
Antigüedad: 19 años, 5 meses
Puntos: 0
Ok friends, muchas gracias a ambos, he quedado más claro en esto ahora...
Gracias de new y Saludos!
__________________
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas. Albert Einstein
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 09:09.