Programación En 3 Capas
Enviado por mlimacogaray • 28 de Junio de 2011 • 445 Palabras (2 Páginas) • 1.405 Visitas
Programación en 3 capas (I)
Basado en dataset tipados
Fecha: 27/06/2011
________________________________________
Resumen
Este artículo pretende mostrar una aproximación simplificada a la programación en tres capas con VB.Net 2003, basándose en entidades de negocio que heredan de dataset fuertemente tipados.
Introducción
El código adjunto ha sido simplificado al máximo para lograr una mejor compresión del tema planteado. Supongo que hechareis en falta muchas cosas y se os ocurrirán muchas mejoras pero espero que comprendais que, para que el artículo no sea demasiado denso, se hayan omitido intencionadamente. Estaré encantado de leer vuestros comentarios.
(El ejemplo accede a la base de datos pubs de SQL.)
Arquitectura de 3 capas
Sin entrar en las ventajas o desventajas de este tipo de arquitectura (hay opiniones para todos los gustos) voy a mostrar un modelo sencillo que espero sirva para clarificar a los neofitos (entre los que me cuento) de que va todo esto. Si además alguien lo puede reutilizar, mejor que mejor.
¿Por qué elegí este modelo? Buena pregunta. Cuando empecé en esto de .net y la POO pensé lo bonito que sería abstraer las entidades de lógica empresarial (factura, cliente, cuenta contable, etc) para que se tratasen de forma sencilla durante el desarrollo de la aplicación (intellysense) y fuesen componentes que pudiese arrastrar a mis formularios para enlazarlos (binding) a los controles necesarios. Tambien quería una capa de datos que pudiese extender a distintos servidores de DB. Y mas cosas. Veamos como.
Capa de Datos
Es la que se encargará de 'llenar' los dataset de las entidades de negocio desde la base de datos y, en sentido contrario, 'grabar' los cambios realizados. Para ello necesitaremos un componente por cada entidad de negocio con los métodos 'Leer' y 'Actualizar', que hacen trabajar al DataAdapter correspondiente.
Private Sub Leer(ByVal ds As DataSet)
Me.SqlDataAdapter1.Fill(ds)
End Sub
Private Sub Actualizar(ByVal ds As DataSet)
Me.SqlDataAdapter1.Update(ds)
End Sub
La clase 'ConectionSolver' se encargará de recuperar la cadena de conexión allí donde la tengamos guardada. Cada uno que elija lo que más le convenga. En el ejemplo está como un literal por simplificación.
Capa de Negocio
Las entidades de Negocio heredan de un dataset tipado y se les añaden los metodos 'Cargar' y 'Guardar'
Dim Dal As DCE.Datos.DalEmployee
Public Sub Cargar()
If Dal Is Nothing Then Dal = New DCE.Datos.DalEmployee
Dal.Leer(Me)
End Sub
Public Sub Guardar()
If Dal Is Nothing Then Dal = New DCE.Datos.DalEmployee
Dal.Actualizar(Me)
End Sub
...