Tutorial Programacion en capas con VB.net y Enterprise Library (Parte 2)

Tutorial Programacion en capas con VB.net y Enterprise Library (Parte 2)

En  la parte 1 terminamos de definir las clases de la capa Data. Para ir a la parte 1 da click aqui

Capa Negocios

1. Crear una clase llamada "Vendedor.vb", todas las clases contenidas en esta capa pueden contener la lógica del negocio como cálculos, validaciones, etc de echo debería ser así pero, muchos programadores no siguen los patrones de diseño y colocan la lógica en la capa de Interfaz de usuario.

Para efectos del ejercicio en nuestra clase Vendedor.vb solo haremos la llamada a los métodos que queramos de nuestra capa de datos:
Imports Entidades
Imports Data
Public Class Vendedor
    Dim vd As New VendedorData
    Public Function ConsultarVendedores() As List(Of VendedorInfo)
        Return vd.ConsultarVendedores()
    End Function

    Public Function ConsultarVendedor(IdVendedor) As VendedorInfo
        Return vd.ConsultarVendedor(IdVendedor)
    End Function

    Public Sub GrabarVendedor(EsNuevo As Boolean, Vendedor As VendedorInfo)
        'Se puede poner validaciones como que el nombre no esté vacio o la edad etc.
        vd.GrabarVendedor(EsNuevo, Vendedor)
    End Sub

    Public Sub EliminaVendedor(IdVendedor As Integer)
        vd.EliminaVendedor(IdVendedor)
    End Sub
End Class

Para el método de grabar se puede incluir validaciones como que haya ingresado nombre, que la edad sea mayor de 18 años, etc, según el caso.

Completar las demás clases de manera similar Ruta.vb, Cliente.vb, TpoVisita.vb, Visita.vb. Recordar que al final del tutorial está el link de descarga de la fuente.

Capa de Interfaz de usuario

1. Diseñamos la siguiente interfaz que contiene:
  • 1 SpliContainer
  • 4 Buttons
  • 2 Labels
  • 2 TextBox
  • 1 DataGridView
diseño interfaz



2. El codigo siguiente le da funcionamiento basico a la forma:

Imports Entidades
Imports Negocios
Public Class frmVendedor
    Dim ev As New VendedorInfo
    Dim nv As New Vendedor
    Dim EsNuevo As Boolean
    Private Sub btnNuevo_Click(sender As System.Object, e As System.EventArgs) Handles btnNuevo.Click
        EsNuevo = True
    End Sub

    Private Sub frmVendedor_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        RefrescaGrid()
    End Sub

    Private Sub RefrescaGrid()
        dgvVendedores.DataSource = nv.ConsultarVendedores()
    End Sub

    Private Sub btnConsultar_Click(sender As System.Object, e As System.EventArgs) Handles btnConsultar.Click
        ev = nv.ConsultarVendedor(Convert.ToInt32(Me.txtIdVendedor.Text))
        SetVendedor()
        EsNuevo = False
    End Sub

    Private Sub BtnGrabar_Click(sender As System.Object, e As System.EventArgs) Handles BtnGrabar.Click
        GetVendedor()
        nv.GrabarVendedor(EsNuevo, ev)
        RefrescaGrid()
    End Sub

    Private Sub btnEliminar_Click(sender As System.Object, e As System.EventArgs) Handles btnEliminar.Click
        nv.EliminaVendedor(txtIdVendedor.Text)
        RefrescaGrid()
    End Sub

    Private Sub GetVendedor()
        ev.IdVendedor = txtIdVendedor.Text
        ev.Nombres = txtNombres.Text
    End Sub
    Private Sub SetVendedor()
        txtIdVendedor.Text = ev.IdVendedor
        txtNombres.Text = ev.Nombres
    End Sub
End Class

3. Ejecutar la aplicación
registro de vendedor


Si no puedes ejecutar la aplicación por un error relacionado con sql.Oracle, se soluciona cambiando el framework de destino de la capa Winform que por defecto está en ".Net framwork 4.0 client profile" a ".Net framwork 4.0". Luego puedes volver a dejar como estaba, es un bug que aún no se soluciona. quizas en las Enterprise librerys 6.0 para el visual 2012 eso desconozco.

Conclusiones:

  • El uso de las Enterprise Librarys/Applicactions blocks facilitan y ahorran mucho código para cuestiones de acceso a datos.
  • Es una buena práctica programar en capas ya que simplifica el uso en la o las capas de usuario
  • Se puede usar las mismas capas Data, Negocios y Entidades para hacer una interfaz Web en asp.net,  WPF o inclusive un WebService.
  • Es de bajo acoplamiento, bajo impacto o nulo hacia nuevas capas de interfaz de usuario.

Descargar fuente: Descargar Aquí!

Comentarios

Publicar un comentario