viernes, 18 de diciembre de 2009

Aplicaciones desarrolladas en la Arquitectura de 3 Capas

Hola..........., en esta entrega mostrare como se realizar una sencilla aplicacion demostrativa de utilizacion de la arquitectura en 3 capas.

Primeramente quiero señalar que la idea de las capas es solo un concepto lógico de división. (Divide y venceras). El hecho mismo reside en que las capas agrupan componentes que tienen funciones similares.

Por este hecho la arquitectura de 3 capas generalmente es definida en:

Capa de Presentacion o DNN; que es la interfaz con el usuario
Capa de Negocio o LLB; se encarga de la definicion de las reglas del negocio
Capa de Acceso a Datos o DAL; se ocupa de la interaccion de y hacia de la BD


Pero como funcionan estas capas???? bueno es sencillo con un poco de imaginación.. :)

En la DNN tendremos los controles, como ser texboxs, datagrids, buttons, y todo lo necesario para una interfaz de usuario, recalquemos que los datos que manejemos tendremos que volverlos en objetos.

en LLB, solo nos fijaremos de hacer cumplir nuestras reglas, como por ejemplo: la validacion de datos, que un campo sea obligatrio; tal vez tengamos restricciones para la eliminacion e insercion, y todo eso lo hacemos en esta capa.

En la DAL, solo nos ocuparemos de transformar nuestros objetos en una tupla para la BD y tambien a la inversa, transformar una tupla en objetos.

El hecho de manejar diferenes clases para cada capa, es lo que hace que realmente sea facil manejar e interpretar el código escrito.

Veanlo de esta manera.

En la DNN, supongamos que tengo un textbox que se refiera a un Apellido, solo me ocupare de recuperar su valor (propiedad Text) y tranformarlo en un objeto y pasarlo a la otra capa y no me preocupo de nada mas.....


ejm:


//Creo una instancia del objeto para pasarla a la capa de negocios
clsEntidades myCliente = new clsEntidades();

//Aqui es donde se transforma lo que tengo en la interfaz
myCliente.apellido = txtApellido.Text;

// Ahora creo una instancia en la capa de negocios
clsNegocio myClienteNegocio = new clsNegocio();

En la LLB, recupero el objeto creado en la DNN y empiezo a realizar la validacion, como era un apellido, aqui puedo hacer controles de que su valor (propiedad Text) no este vacio, no contenga números, etc, todo lo que se me pueda ocurrir. Si la validación es correcta entonces mando ese objeto a la DAL, caso contrario rechazo y vuelvo a la DNN

ejm:

//Aplico las reglas de validacion
if (myCliente.nombre != "" && myCliente.apellido != "")
{
// Creo una instancia de la capa de datos
clsDatos objDatos = new clsDatos();
}
else
{lo rechazo}

En la DAL, me ocupo de hacer la interaccion del objeto con la BD.

ejem

// Metodo concetar, que solo hace la conexion de la BD y la deja abierta para poder interatuar
Conectar();

// Le indicamos cual stores procedure usar
oCmd.CommandText = "sp_addCliente";
// Le asignamos los par metros para el stored procedure
oCmd.Parameters.AddWithValue("@ape", myCli.apellido);

Así de facil, es en teoria.... :)

A primera vista es mucha complicación para tareas simples y comunes... como la analogia con un TextBox..

Pero cuando se trata de Desarrollo de Sistemas, las capacidades que nos da la POO, son muchas, pues podemos tener abstracion, herencia, encapsulacion. y estas cualidades las aprovechamos con una arquitectura de capas.