Implementación
La arquitectura del sistema está
sostenida en la utilización de un servidor que posea el servicio de
transferencia de archivos mediante ssh, con autentificacion por
contraseña. La
aplicación está desarrollada por completo en el lado del host. La
principal
característica es que el usuario no necesita preocuparce de su servidor
pues en
apariencia la información es enviada directametne de host a host.
Host
El software desarrollado para el host consta de 3 pilares fundamentales.
GUI: La interfaz
gráfica es la encargada
de interectuar con el usuario, perminitendole revisar su lista de
contactos o
configurar su cuenta en el servidor utilizado. Está interfaz tambien
posee un
sistema de notificacines en la barra de tareas, enviando un mensaje al
usuario
cada vez que se ha efectuado correctamente una sincornización.
Agenda: Es un
programa
open-source utilizado por
Cliente SSH:
Programa open-source
para windows encargado de enviar y recivir arrchivos desde y hacia el
servidor
cuando se requiere.
Arquitectura de Programación
El sistema está
programado en C++
utilizando las librerias de QT4, que implementan una interfaz de
usuario
atendida por eventos, así la
ejecución
de cada evento es manejada por funciones independientes de forma
análoga a una
interrupción.
La
ejecución inicial despliega una imagen
(splash) publicitaria, lugo el sistema se separa en 3 hebras que tienen
por
funcion:
Hebra principal:
Manejo del GUI
Hebra servidor:
Revisa
constantemente en busca de cambios en el sistema de archivos en caso de
necesitar enviar/recivir hacia/desde el servidor genera un nuevo
proceso con la
indicaciones necesarias para que el cliente ssh efectue la
transferencia con el
servidor.
Hebra de notificación: Es la encargada de desplegar los mensajes informativos en la barra de tareas.
¿Por qué lenguaje QT?
Las
librerías de QT permiten
manejar de forma simple interfaces gráficas atractivas, ya que posee
caracteristicas de manejo 3D y mucha libertad de desarrollo. El
lenguaje de
programación es C++ por lo que continua siendo muy cercano y no
requiere de
mucho tiempo de entrenamiento.
Finalmente
la decisión fue tomada por que
genera código nativo para multiples plataformas sin hacer ningún
cambio,
permitiendo asi tener aplicaciones orientadas a objetos mucho más
eficientes en
tiempo de ejecución y sin restricciones de estructura.