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

Preguntas similare

Leer las respuestas

#6 Maxi
20/07/2006 - 14:38 | Informe spam
mmm, eso lo podes hacer asi o sino solo usar la BC para hacer la validacion
de negocios y nada mas, me explico?


Salu2
Maxi [MVP SQL SERVER]
www.sqlgurus.org
Speaker INETA
Speaker Culminis


"Dany Acosta" escribió en el mensaje
news:%
La Parte de UI y BE lo tengo claro, mi duda es como definir la capa de
Datos o la Capa de Negocios por ejemplo.
En una aplicacion de Gestion se tiene 3 modulos conocidos Compras +
Almacen + Facturacion.
Mi duda es como aplicar esto si tengo una DLL (Capa de Negocio o Datos)
que tiene:
* Clase Almacen
* Clase Compras
* Clase Facturacion

Esas tres clases trabajan solas pero tambien comparten Procesos (x Ejmplo
Graba_Cabecera_almacen y Graba_Detalle_almacen) .

como podria resolver esos casos aplicando Herencia???

Si pudieras enviarme un pequeño ejemplo de como trabaja todo en un
Maestro - Detalle te agredeceria bastente

Gracias

Dany Acosta - Developers

Maxi escribió:
Hola, el tema de capas no es blanco y negro, primero deberias definir que
componentes pueden cambiar mucho, por ej: Si vas a usar siempre la misma
base de datos no tiene ningun sentido hacer una capa de persistencia, ese
tipo de capas es para cuando no tienes un motor definido, debo aclarar
que el uso de algun ORM por lo general no utilizan lo maximo de los
motores de bdd, con lo cual el tema performance es algo a revisar al
igual que la seguridad.

Yo te cuento que modelo estamos usando ahora por ej

UI -- BC -- BE - SI -- SQL2005

UI = Interfaz usuario
BC = Bussines component
BE = Bussines Entity (lo representamos con un dataset tipado)
SI = service Interface (Depende de un param en el appcpnfig sale por WS o
indigo o local)

Respuesta Responder a este mensaje
#7 Dany Acosta
20/07/2006 - 19:44 | Informe spam
como asi amigo, la verdad no entendi


Maxi escribió:
mmm, eso lo podes hacer asi o sino solo usar la BC para hacer la validacion
de negocios y nada mas, me explico?

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida