Arquitectura N-Capas en Vb2005

13/07/2006 - 07:14 por Developers - Dany Acosta | Informe spam
Amigos ya se que este tema se toca muchas veces, pero necesito una ayuda en aclaracion de esto:
* Muchos de mis Amigos comentan que lo ideal de Manejar N-Capas en .Net es cuando manejas :
Capa Interfaces (Windows forms) (Esta no la detallo porque se sabe que se relaciona con la Capa
negocios)
Capa de Negocios (Enlace Entidad y Datos)
Capa de Entidades (Cada Tabla es una Entidad)
Capa de Datos (Cada tabla tiene su Propio Manejo de datos "Insert,Delete,Update,Select")

Entonces tendria algo parecido a esto : (Mis Preguntas estan Abajo)

Capa de Negocios:::
Clase Pedido
Funcion ObtenePedido(IdPedido)
Instancio mi Capa de Datos en una Variable (Dim x as New Datos_M_Pedido)
Ejecuto la Consulta (Retorno=x.ObtenerPedidoporCodigo(IdPedido))
Retorno el Resultado
Fin Funcion
Funcion ObteneDetallePedido(IdPedido)
Instancio mi Capa de Datos en una Variable (Dim x as New Datos_M_Pedido)
Ejecuto la Consulta (Retorno=x.ObtenerDetallePedidoporCodigo(IdPedido))
Retorno el Resultado
Fin Funcion
Funcion RegistrarPedido(recibe Entidad_M_Pedido,Entidad_D_Pedido)
Instancio mi Capa de datos de M_Pedido en una variable (Dim x as New Datos_M_Pedido)
ValorDevueltoNumero=Proceso Grabar (x=RegistrarPedido(oEntidadPedido)
ValorDevuelto Igual Falso
Si no hay Error
Instacion mi Capa de datos de D_Pedido en una Varible (Dim y as New Datos_D_PEdido)
ValorDevuelto=Proceso Grabardetalle (y= RegistrarDetallePedido(ValorDevueltoNumero,oEntidadDPedido)
Retorno ValorDevuelto
Fin Funcion

*
Fin Clase

Capa de Entidades::::
Clase Entidad_M_Pedido
IDPedido Int
FechaPed Datetime
ClienteID Int
TotalPed Money
FinClase
Clase Entidad_D_Pedido
IdPedido Int
ProductoID Int
Cantidad smallint
Precio money
Finclase

Capa de Datos::::
Clase Datos_M_Pedido
Funcion ObtenerPedidoporCodigo(IdPedido)
Conecto a Base Datos
llamo a mi store procedure
Inicializo en una variable la Entidad_M_Pedido
Lleno la entidad M_Pedido
Cierro conexion
retorno Entidad (Puede estar serializada)
fin Funcion
Funcion RegistrarPedido(oEntidadPedido es un Entidad_M_Pedido)
Conecto a Base datos
Lleno mi Objecto comando con los valores de la entidad
Numero=ejecuto la grabacion
Cierro la Conexion
Retorno Numero
fin funcion
Fin Clase
Clase Datos_D_Pedido
Funcion ObtenerDetallePedidoporCodigo(IDPedido)
Conecto a Base Datos
Llamo a mi Store Procedure
Inicializo en una Variable la Entidad_D_Pedido
lleno la Entidad D_Pedido
Cierro Conexión
Retornó Entidad (Puede estar serializada)
fin funcion
Función RegistrarDetallePedido(IdPedido,oEntidadDPedido es un Entidad_D_PEdido)
Conecto a Base datos
Lleno mi Obtejo Comando con los valores de la entidad
Ejecuto la Grabacion
Cierro la Conexion
Retorno si Fue con Exito o No
Fin Funcion
Fin Clase

Sera Optimizable trabajar de esta manera????

Si Trabajo de esta forma en donde irian las consultas que manejan relaciones entre tablas(en Capa de
Datos o en Negocios) en este ejemplo que puse seria la Relacion PadrePedido>DetallePedido?????
* Tendria que crear otra entidad que PadrePedido Herede de DetallePedido o No????


Como se manejarian las transacciones en estos casos ya que cada capa de datos Abre y Cierra la
Conexion (En la Caso de Registrar Pedido)???
* Tendria que pasar la conexion abierta en estos casos????


Bueno amigos disculpen por lo extenso del mensaje solamente quiero que me aclaren estas dudas o SI
tuvieran otra mejor forma de trabajar con Capas me gustaria sus opiones Ya revize bastante
teoria sobre esto en los foros y quiero ponerlo en practica(Si es que funciona de esta manera)

Gracias

Dany Acosta - Developers
 

Leer las respuestas

#1 Juan Cuello
13/07/2006 - 11:10 | Informe spam
Hola,

Es una opción pero cabe destacar que no hay una forma standard de hacer las
cosas y no hay una arquitectura que sirva para todo.

La definición de capas es un elemento a definir en el diseño técnico de una
aplicación desde el principio. El número de capas y la distribución entre
ellas vendrá definido por los requerimientos funcionales de la misma y
teniendo en cuenta la plataforma sobre la que funcionará la aplicación.

Por ejemplo, ahora mismo estoy desarrollando una aplicación con remoting y
entre cliente y servidor hay unas 6 capas :P

La experiencia te dirá

Un saludo




AP Software Development



"Developers - Dany Acosta" escribió:

Amigos ya se que este tema se toca muchas veces, pero necesito una ayuda en aclaracion de esto:
* Muchos de mis Amigos comentan que lo ideal de Manejar N-Capas en .Net es cuando manejas :
Capa Interfaces (Windows forms) (Esta no la detallo porque se sabe que se relaciona con la Capa
negocios)
Capa de Negocios (Enlace Entidad y Datos)
Capa de Entidades (Cada Tabla es una Entidad)
Capa de Datos (Cada tabla tiene su Propio Manejo de datos "Insert,Delete,Update,Select")

Entonces tendria algo parecido a esto : (Mis Preguntas estan Abajo)

Capa de Negocios:::
Clase Pedido
Funcion ObtenePedido(IdPedido)
Instancio mi Capa de Datos en una Variable (Dim x as New Datos_M_Pedido)
Ejecuto la Consulta (Retorno=x.ObtenerPedidoporCodigo(IdPedido))
Retorno el Resultado
Fin Funcion
Funcion ObteneDetallePedido(IdPedido)
Instancio mi Capa de Datos en una Variable (Dim x as New Datos_M_Pedido)
Ejecuto la Consulta (Retorno=x.ObtenerDetallePedidoporCodigo(IdPedido))
Retorno el Resultado
Fin Funcion
Funcion RegistrarPedido(recibe Entidad_M_Pedido,Entidad_D_Pedido)
Instancio mi Capa de datos de M_Pedido en una variable (Dim x as New Datos_M_Pedido)
ValorDevueltoNumero=Proceso Grabar (x=RegistrarPedido(oEntidadPedido)
ValorDevuelto Igual Falso
Si no hay Error
Instacion mi Capa de datos de D_Pedido en una Varible (Dim y as New Datos_D_PEdido)
ValorDevuelto=Proceso Grabardetalle (y= RegistrarDetallePedido(ValorDevueltoNumero,oEntidadDPedido)
Retorno ValorDevuelto
Fin Funcion

*
Fin Clase

Capa de Entidades::::
Clase Entidad_M_Pedido
IDPedido Int
FechaPed Datetime
ClienteID Int
TotalPed Money
FinClase
Clase Entidad_D_Pedido
IdPedido Int
ProductoID Int
Cantidad smallint
Precio money
Finclase

Capa de Datos::::
Clase Datos_M_Pedido
Funcion ObtenerPedidoporCodigo(IdPedido)
Conecto a Base Datos
llamo a mi store procedure
Inicializo en una variable la Entidad_M_Pedido
Lleno la entidad M_Pedido
Cierro conexion
retorno Entidad (Puede estar serializada)
fin Funcion
Funcion RegistrarPedido(oEntidadPedido es un Entidad_M_Pedido)
Conecto a Base datos
Lleno mi Objecto comando con los valores de la entidad
Numero=ejecuto la grabacion
Cierro la Conexion
Retorno Numero
fin funcion
Fin Clase
Clase Datos_D_Pedido
Funcion ObtenerDetallePedidoporCodigo(IDPedido)
Conecto a Base Datos
Llamo a mi Store Procedure
Inicializo en una Variable la Entidad_D_Pedido
lleno la Entidad D_Pedido
Cierro Conexión
Retornó Entidad (Puede estar serializada)
fin funcion
Función RegistrarDetallePedido(IdPedido,oEntidadDPedido es un Entidad_D_PEdido)
Conecto a Base datos
Lleno mi Obtejo Comando con los valores de la entidad
Ejecuto la Grabacion
Cierro la Conexion
Retorno si Fue con Exito o No
Fin Funcion
Fin Clase

Sera Optimizable trabajar de esta manera????

Si Trabajo de esta forma en donde irian las consultas que manejan relaciones entre tablas(en Capa de
Datos o en Negocios) en este ejemplo que puse seria la Relacion PadrePedido>DetallePedido?????
* Tendria que crear otra entidad que PadrePedido Herede de DetallePedido o No????


Como se manejarian las transacciones en estos casos ya que cada capa de datos Abre y Cierra la
Conexion (En la Caso de Registrar Pedido)???
* Tendria que pasar la conexion abierta en estos casos????


Bueno amigos disculpen por lo extenso del mensaje solamente quiero que me aclaren estas dudas o SI
tuvieran otra mejor forma de trabajar con Capas me gustaria sus opiones Ya revize bastante
teoria sobre esto en los foros y quiero ponerlo en practica(Si es que funciona de esta manera)

Gracias

Dany Acosta - Developers






Preguntas similares