Una buena práctica a la hora de desarrollar un sistema, es tratar de que la arquitectura sea de mínimo 3 capas: Presentación, lógica de negocio y datos.

En ésta imágen se puede entender mejor la arquitectura de 3 capas:

3 capas

En la capa de presentación sería la interfaz del usuario, ya sea con windows form, GTK ó Web; la capa de la lógica de negocio serían todas las validaciones y/o métodos, mientras que la capa de datos sería la fuente de datos, puede ser una base de datos, un archivo XML, etc…

Cómo práctica haremos una pequeña aplicación en 3 capas sobre un login en c# con la ayuda de monodevelop. Para comenzar creamos una nueva solución en blanco llamada Proyecto3Capas.

Primero comenzaremos con la capa de datos, para ello, damos click derecho en la solución llamada Proyecto3Capas->Añadir->Nuevo Proyecto, seleccionamos un proyecto web vacio y le ponemos de nombre Datos:

Nuestra capa de datos será un webservice dónde contendra el usuario y password del login. Una vez tengamos damos click derecho en el proyecto Datos->Añadir->Nuevo archivo y seleccionamos Servicio web con code Behide, si tienes dificultades para crear el webservice puede ir al post: crear un webservice en monodevelop.

En el archivo webservice.asmx.cs agregaremos un nuevo método:

  [WebMethod]
    public bool Datos(string user, string pass)

    {

        if(user=="admin" && pass=="admin")
				return true;
			else
				return false;

    }

Es un simple método que valida usuario = admin y password también admin.

Luego, seguirá la lógica de negocio, para ello, damos click derecho en la solución, Añadir->Nuevo proyecto, y seleccionamos una Librería en c# (puede ser VB.NET si lo desea),le pondremos como nombre Logica, lo bueno de ésto es que se creará una DLL por lo que puede ser escrita en cualquier lenguaje.

Para ser uso de la capa de Datos , damos click derecho en la carpeta de Referencia->Editar referencia , vamos a la pestaña de Proyectos y agregamos la capa de Datos:

Agregaremos un método llamado Autentificacion con lo siguiente:

	public bool Autentificacion(string user, string pass)
		{
			Datos.webservice service = new Datos.webservice();
			bool resultado = service.Datos(user,pass);
			if(resultado==true)
				return true;
			else
				return false;
		}

Ahora Falta crear la capa de Presentación, nuevamente damos click derecho en la solución y añadimos un proyecto GTK# llamado Presentación, una vez creado, agregamos la referencia de la capa de la lógica.

Creamos una interfaz donde acepte un usuario, contraseña, un label para mostrar resultado y un botón, en el evento click del botón, añadimos lo siguiente:

Logica.Logica login = new Logica.Logica();
bool result = login.Autentificacion(this.entry1.Text,this.entry2.Text);
	if(result==true)
		label3.Text = "correcto";
	else
		label3.Text = "incorrecto";

Ésto sería un proyecto muy sencillo pero muy claro de como se puede dividir un proyecto en 3 capas, ésto nos ayudará a identificar mejor los posibles errores, mantenible,etc…

Les dejo el proyecto terminado para su descarga: Proyecto 3 Capas.zip

Comentarios, dudas, sugerencias son bien aceptadas.

Tags: , , , , ,

2 Responses to “Programación en 3 capas”

  1. FRANTON 24. Nov, 2009 at 10:20 am #

    Excelente Aporte!

  2. Juan 19. Jan, 2010 at 3:45 am #

    He visto tutoriales y muchos se confunden, aunque halla comentarios de excelente y que se tomarian el agua con que se bañe el autor, el tuyo es mas exacto y muchisimo mas facil de comprender no dire que excelente pero si gracias