viernes, 22 de enero de 2010

Aplicaciones en N Capas Visual Basic .Net

Modelos de Acceso a datos
Los modelos de acceso a datos han  evolucionado junto a los modelos de equipos, desde los modelos centralizados hasta los modelos distribuidos. La cantidad de usuarios de los sistemas antes no tenia en número que tiene ahora cambiando desde aplicaciones de un usuario o aplicaciones simples (en un equipo unicamente) hasta aplicaciones en Internet, el último modelo es el modelo de Servicios Web XML (XML Web Services).

Definición de Capa
En el modelo de acceso a datos, una capa es un nivel lógico en el cual residen componentes o aplicaciones lógicas. Las capas pueden residir en uno a mas equipos o servidores, el número de capas hace referencia al número de niveles y no al número de equipos en los cuales los servicios son divididos. Las capas que generalmente se incluyen en aplicaciones son:

  1. Capa de Cliente: conocida como capa dePresentación es la que contiene las interfaces en las que el usuariointeractua con el sistema.
  2. Capa de la Lógica de Negocios: el cualcontiene la lógica que interactua con el origen de datos. Esta capa intermedia contiene la parte de la aplicación que interactua con los datos, por ejemplo: la creación de una cadena de conexión al origen de datos.
  3. Capa de acceso a Datos: la cual se relaciona directamente con el origen de datos
Beneficios del trabajo con Capas
  • Escalabilidad en las aplicaciones
  • Distribución mas efectiva
  • Cambios en la aplicaciones mas sencillos de manejar eimplementar
  • Separación de funciones
  • Permite aplicaciones en diferentes sistemas operativos
  • Clientes menos pesados (thin Client)


El ejemplo
El formulario tiene el siguiente aspecto:

Aplicación en N Capas..un ejemplo
A continuación sigue código en Visual Basic (o C# o C++.NET):
La Biblioteca de clases del Acceso a Datos: VBNCapasAccesoDatos




Imports System.Data
Imports System.Data.SqlClient  
Public Class VBNCapasAcceso
    'Capa de Acceso a Datos
    'Definición del String de Cadena de conexión
    Protected Const sCN As String = _
        "user id=sa;initial catalog=Northwind;persist security info=False"
    'Los Adaptadores
    Private daCat As SqlDataAdapter
    Private daProd As SqlDataAdapter
    'Declarar eventos que proveen información a la Capa de Presentación
    Public Event DataSetCreado(ByVal vCreado As Boolean)
     'Creamos una función para retornar el DataSet
    Public Function CrearDataSet() As DataSet
        Dim dsDatos As DataSet
        Dim cn As New SqlConnection(sCN)
        'Las instancias de los Adaptadores
        daCat = New SqlDataAdapter("Select CategoryId, CategoryName, Description from Categories", cn)
        daProd = New SqlDataAdapter("Select * from Products", cn)

        dsDatos = New DataSet
        daCat.Fill(dsDatos, "Categorias")
        daProd.Fill(dsDatos, "Productos")
        'Indica que el evento de creación del DataSet fue exitoso
        RaiseEvent DataSetCreado(True)
        'Retorna el DataSet
        Return dsDatos
    End Function
End Class 



En la zona de declaraciones del formulario

    Dim dsDatos1 As DataSet
    'Definir dos DataTables
    Dim dtCat As DataTable
    Dim dtProd As DataTable
    'Las Vistas
    Dim dvCat As DataView
    Dim dvProd As DataView
    'Instanciar la clase de acceso a datos
    Protected WithEvents cAcceso As VBNCapasAcceso


Al cargar el Windows Form

    'PROCEDIMIENTO AL CARGAR EL FORMULARIO
    Private Sub Cargar(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles MyBase.Load
        'Instanciar la clase
        cAcceso = New VBNCapasAcceso


        'Obtener el DataSet de la Clase VBNCapasAcceso
        dsDatos1 = cAcceso.CrearDataSet
        'Origen de los DataTable
        dtCat = dsDatos1.Tables("Categorias")
        dtProd = dsDatos1.Tables("Productos")

        'Origen de las Vistas
        dvCat = dtCat.DefaultView
        dvProd = dtProd.DefaultView

        'Origen de los Grid
        dgCat.DataSource = dvCat
        dgCat.CaptionText = "Categorias"
        dgCat.Select(0)

        'Llenar el Grid de Productos
        LlenarGridProductos()

        EstilosGrid()   'Solamente para las Categorías...por espacio y tiempo
    End Sub

No hay comentarios:

Publicar un comentario