Y Como es eso de Programar en Capas con .NET (Parte 4)

Capa de Presentación

Esta es la parte que nuestros usuarios actuan con la capa de aplicacion. Ahora tenemos que establecer la referencia para que podamos usar las funciones y los métodos de nuestra LIbLogicaNegocio, cuando haya finalizado la configuración de la referencia, haga doble clic en el botón “Guardar” y empezar a programar.

Private Sub ButtonGuardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonGuardar.Click

Dim obj As LibLogicaNegocio.Cliente = New LibLogicaNegocio.Cliente

Dim ape As String = TextBoxApe.Text

Dim nom As String = TextBoxNom.Text

Dim dir As String = TextBoxDir.Text

Dim fono As String = TextBoxFono.Text

Dim email As String = TextBoxEmail.Text

Dim res As Integer = 0

Try

res = obj.GuardarCliente(ape, nom, dir, fono, email)

Catch ex As Exception

MessageBox.Show(ex.Message)

End Try

If res = 1 Then

MessageBox.Show(“Datos guardados correctamente”)

Else

MessageBox.Show(“Error al guardar los datos”)

End If

End Sub

Después de que haya terminado, recuerde que hay un botón de limpieza, esto es sólo una cosa extra, no tiene nada que ver con la tres capas. Hay un botón de limpieza. Haga doble clic en él para agregar código.

Private Sub ButtonClear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonClear.Click

Me.TextBoxApe.Clear()

Me.TextBoxNom.Clear()

Me.TextBoxDir.Clear()

Me.TextBoxFono.Clear()

Me.TextBoxEmail.Clear()

End Sub

Bien espero que haya sido util el pequeño ejemplo y les dejo el link de descarga Aqui

Anuncios

Y Como es Eso de Programar en capas con .NET (Parte 3)

Capa de Lógica de Negocio

Public Class Cliente
    Public Function GuardarCliente(ByVal _apellidos As String, ByVal _nombres As String, _
         ByVal _direccion As String, ByVal _telefono As String, ByVal _email As String) As Integer

        Dim bopass As Boolean = True
        bopass = Reglas(_apellidos, _nombres, _direccion, _telefono, _email)
        Dim obj As LibAccesoDatos.AccesoDatos = New LibAccesoDatos.AccesoDatos
        Dim res As Integer = 0

        Try
            If bopass = True Then
                obj.InsertarCliente(_apellidos, _nombres, _direccion, _telefono, _email)
                res = 1
            Else
                res = 0
            End If
        Catch ex As Exception
            Throw
        End Try
        Return res
    End Function
    Private Function Reglas(ByVal ape As String, ByVal nom As String, _
        ByVal dir As String, ByVal tel As String, ByVal e As String) As Boolean

        Dim bolres As Boolean = True
        If ape = "" Then
            bolres = False
        Else
            If nom = "" Then
                bolres = False
            End If
            If e = "" Then
                bolres = False
            End If
        End If
        Return bolres
    End Function

End Class

Y Como es eso de Programar en Capas con .NET (Parte 2)

Capa de Acceso a Datos

Vamos a empezar por la codificación del esta capa de acceso a datos. Abra la clase AccesoDatos. Necesitamos agregar espacios de nombres que no están automáticamente disponibles. Vamos a importar los espacios de nombres.

Imports System.Data

Imports System.Data.SqlClient

Public Class AccesoDatos

Private strCnn As String = “Data Source=.\sqlexpress;Initial Catalog=BD;” & _

“Integrated Security=true”

Private cmdInsertar As SqlCommand

Private con As SqlConnection

Public Sub InsertarCliente(ByVal apellidos As String, ByVal nombres As String, _

ByVal direccion As String, ByVal telefono As String, ByVal email As String)

cmdInsertar = New SqlCommand

cmdInsertar.CommandText = “dbo.InsertarCliente”

cmdInsertar.CommandTimeout = 0

cmdInsertar.CommandType = CommandType.StoredProcedure

con = New SqlConnection(strCnn)

cmdInsertar.Connection = con

cmdInsertar.Parameters.Add(“@Apellidos”, SqlDbType.VarChar, 50).Value = apellidos

cmdInsertar.Parameters.Add(“@Nombres”, SqlDbType.VarChar, 50).Value = nombres

cmdInsertar.Parameters.Add(“@Direccion”, SqlDbType.VarChar, 50).Value = direccion

cmdInsertar.Parameters.Add(“@telefono”, SqlDbType.NChar, 15).Value = telefono

cmdInsertar.Parameters.Add(“@Email”, SqlDbType.VarChar, 50).Value = email

Try

con.Open()

cmdInsertar.ExecuteNonQuery()

con.Close()

Catch ex As SqlException

Throw

End Try

End Sub

End Class

Ahora que nuestra clase AccesoDatosque sólo tiene un método InsertarCliente(), y recuerdemos que nuestro Cliente no debe acceder a nuestro Capa Acceso a Datos directamente y eso significa que nuestra Capa de Logica de Negocio debe ser el intermediario entre el Acceso a Datos y el Client. Eso significa que tenemos que agregar una referencia a nuestro proyecto LibLogicaNegocio que sera el proyecto de LibAccesoDatos y en el proyecto de WinUsuario, vamos a agregar una referencia que sera LinLogicaNegocio.

Y Como es eso de Programar en Capas con .NET ?

Introducción

 

Podemos encontrar un sin fin de conceptos y ejemplos de la programación en capas y quizás esto sea un ejemplo mas pero vale la pena verdad. De acuerdo con la figura podemos apreciar que una aplicación en capas es más bien la distribución de la misma en niveles físicos, para este ejemplo diseñaremos la capa de presentación, lógica de negocios y la capa de acceso a datos que entonces básicamente estaríamos hablando de una aplicación elaborada en tres capas que es lo mas común en el desarrollo hoy en día.

bueno ahora para empezar vamos mostrando primero la capa de presentación, específicamente la interfaz de usuario (un formulario) que lo llamaremos clientes.

 

 

 

 

 

 

 

 

 

 

Vamos viendo que tenemos presente los campos de dicho cliente aunque no pongo el ID o digamos la clave primaria del cliente que ya verán que es un campo auto numérico que no necesitamos porque ira incrementándose automáticamente, entonces desde ya estarán pensando cómo se llama la base de datos y la tabla bien sin más presento la script para esto que se puede trabajar con el gestor de base de datos Microsoft SQLServer ya sea en su versión 2005 y/o 2008:

Primero crearemos la Base de Datos que lo llamaremos “BD”

USE [master]

GO

CREATE DATABASE [BD2] ON  PRIMARY

( NAME = N’BD2′, FILENAME = N’C:\Archivos de programa\Microsoft SQL Server\MSSQL.1\

MSSQL\DATA\BD2.mdf’ , SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )

LOG ON

( NAME = N’BD2_log’, FILENAME = N’C:\Archivos de programa\Microsoft SQL Server\MSSQL.1\

MSSQL\DATA\BD2_log.ldf’ , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)

GO

Y seguidamente creamos la tabla clientes:

CREATE TABLE [dbo].[Clientes](

[ClienteID] [int] IDENTITY(1,1) NOT NULL,

[Apellidos] [varchar](50) NULL,

[Nombres] [varchar](50) NULL,

[Direccion] [varchar](50) NULL,

[Telefono] [nchar](15) NULL,

[Email] [varchar](50) NULL,

CONSTRAINT [PK_Clientes] PRIMARY KEY CLUSTERED

(

Y bien ahora solo nos queda crear un procedimiento almacenado para la tabla cliente, para este caso solo crearemos un procedimiento almacenado para agregar un registro de cliente

CREATE PROCEDURE [dbo].[InsertarCliente]

(

@Apellidos varchar(50),

@Nombres varchar(50),

@Direccion varchar(50),

@Telefono nchar(15),

@Email varchar(50)

)

AS

SET NOCOUNT ON;

INSERT INTO Clientes

VALUES

( @Apellidos, @Nombres, @Direccion, @Telefono, @Email );

Pues bien entonces quedando claro hasta esta parte crearemos un proyecto en nuestro Visual Studio la cual dividiremos como ya dijimos al principio en capas, lo cual lo conseguiremos creando tres proyectos en nuestra solución veamos como quedaría esto, considerando que acerca de crear proyecto ya muchos lo saben, nuestra solución se llamara WinCapas, agregaremos a esta solución las tres capas primero un proyecto que será la capa de presentación llamado WinUsuario con la interfaz de formulario que vimos al principio, después agregaremos un clase de librería al proyecto que será nuestra segunda capa llamada LibLogicaNegocio que será la Lógica de Negocio que albergara una clase llamada cliente, y por ultimo agregaremos otra librería de clases llamada LibAccesoDatos que como dice el nombre sera la capa de Acceso a Datos y bien si todo queda bien lo tendríamos así: