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:

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.
July 31, 2009 | Etiquetado en: c#, Linux, Mono, Programación, software libre, Tutoriales | 4 Comments 
Mucho se habla ó se habló de la web 2.0, sin embargo eso ya es un término pasado, ahora la internet sigue evolucionando y estamos a unos pasos de entrar a la era de la web 3.0, según la wikipedia, la web3.0 incluye, la transformación de la red en una base de datos, un movimiento hacia hacer los contenidos accesibles por múltiples aplicaciones non-browser, el empuje de las tecnologías de inteligencia artificial, la web semántica, la Web Geoespacial, o la Web 3D.
La inteligencia artificial generada por ordenadores y redes cada vez más potentes, puede representar importantes avances en usabilidad, en mejora de la experiencia del usuario.
La Web 3.0, o web semántica, lo sabrá todo sobre Internet y comprenderá lo que el cliente necesita de forma inteligente (como sistemas de búsqueda basados en lenguaje natural).En un futuro no muy lejano dispondremos de sistemas capaces de comprender lo que buscamos, realizar un diagnóstico y ofrecernos la respuesta más adecuada con sus propias palabras.
July 25, 2009 | Etiquetado en: | 1 Comment Actualmente me encuentro en un curso de desarrollo de software, en dónde opté por .NET, lógicamente todo lo estamos viendo sobre la plataforma windows, hemos llegado al módulo de Asp.Net, anteriormente he utilizado PHP como lenguaje para desarrollo de aplicaciones web, hay algunas ventajas y desventajas entre uno y otro, y en mi opinio aquí enlisto algunas:
Para desarrollar aplicaciones web con ASP.NET se tiene Visual Studio, que aunque es privativo y es caro, la verdad es de los mejores ó el mejor IDE para programación, ésto es un factor muy importante teniendo encuenta que el tiempo es igual a $.
Asp.net cuenta ya con un gran número de componentes en dónde solamente arrastramos, configuramos y ya tenemos un formulario validado en todos sus campos en el lado del cliente, ésto significa que asp.net genera código javascript que nos hace las validaciones del lado del cliente, haciendo la aplicación más rápida.
Algo muy bueno de asp.net, esque puedes crear módulos (dlls) bastante fácil, el mantenimiento de un proyecto resulta bastante fácil con el manejor de módulos.
Gracias al IDE visual studio, es posible hacer un debugeo completo de toda nuestra aplicación, ésto sin duda, una gran ventaja.
Existen muchas aplicaciones/componentes creados por terceros, algunos de hechos con AJAX, haciendo lucir mejor nuestra aplicación.
A diferencia de otros lenguajes script que el código es interpretado, asp.net es compilado, por lo que se supone debe ser más rápido.
Gracias al proyecto mono, podemos migrar nuestra aplicación web terminada a un servidor web apache corriendo en linux.
A diferencia de asp.net, las páginas php son muchisimo más ligeras y rápidas.
Gracias a que mucha gente utiliza php, existe casi cualquier cosa hecha en php, basta con “googlear” y encontrarás la solución.
Con php se pueden realizar muchos “hacks”, gracias a que convive bastante bien con HTML, javascript, ajax.
A diferencia de asp.net que solamente tiene Visual studio, para php existen muchas plataformas de desarrollo, desde un simple bloc de notas, VIM, Zend, NetBeans, Eclipse, etc…
Como lo podrán ver, los 2 son muy buenos lenguajes para desarrollo web, ustedes por cuál se inclinan?
Con el proyecto KDE on Windows, se puede instalar un KDE 4.3 Plasma sobre una plataforma Windows XP SP2. Ésto gracias al excelente trabajo de los desarrolladores, que con ésto, se extenderá más el uso de aplicaciones libres, si todavía no se quiere dar el paso de migrar a un sistema operativo libre, mínimo comenzar por un escritorio libre. Aquí les dejo un video demostrativo:
Si desean , pueden descargar la aplicación desde la página oficial: Download KDE for windows.
Todos los derechos reservados. Tecnologia.