Programación en 3 capas (I)Basado en dataset tipados
Fecha: 12/Oct/2005 (11/10/05)
|
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 SubLa 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 SubCapa de presentación
Agregar las entidades de negocio a la barra de herramientas y arrastrarlas al formulario donde vayan a ser 'bindeadas'. Muy sencillo, no?
En la siguiente entrega complicaremos un poco la cosa viendo de que manera podemos implementar transacciones en las que intervengan varias entidades de negocio.
Espacios de nombres usados en el código de este artículo:
System
System.Data
System.Data.XML
System.Data.Drawing
System.Data.Windows.Froms
Fichero con el código de ejemplo: Tomasmm_3capas.zip - (30) KB