Aplicación Escritorio vs Aplicación web

Posted by jmacias · 9 Comments 

Se ha hablado mucho de este tema, y se seguirá hablando durante mucho tiempo. Mientras que las grandes empresas nos dicen que el futuro son las aplicaciones web, que se puede hacer lo mismo que con una aplicación de escritorio, etc.., la realidad y el usuario, nos dice otra cosa.

Como ejemplo siempre pongo Google, tiende a desarrollar todo en Web, sin embargo, cuando hay dinero por en medio y el usuario lo pide, hace una aplicación de escritorio, como el editar de anuncios AdWords Editor.

Seamos prácticos, las aplicaciones web tardarán algunos años más en equiparse a las de escritorio, pero además, no sólo se tienen que equiparar, hay que equiparar también la facilidad de desarrollo en web.

¿Por qué son mejores las aplicaciones de Escritorio?

Estas son mis razones, está claro que se pueden solucionar de una forma u otra, pero, siguen siendo un grave problema.

1. Botón Atrás. Parece una tontería, pero no lo es, el botón atrás del explorador es uno de los mayores enemigos de las aplicaciones web, generando multitud de errores diferente, por que, en algunos casos, puede que vaya a la pantalla anterior, pero en otros casos, acabamos con registros duplicados, formularios que se vacían sólos, etc…

2. Tecla Borrar. La tecla borrar, en cualquier navegador, es volver atrás, sabéis lo que fastidia estar en medio de un formulario y darle a borrar y que se vaya a la pantalla anterior y tener que empezar de nuevo????

3. La sesión. Te llaman por teléfono, vuelves a tu teclado, y cuando le das a aceptar… pummmm La sesión a expirado. Ha empezar de nuevo o… no se sabe por donde…

4. Múltiples Ventanas. Salvo contadas excepciones, como WordPress, o alguno más, la mayoría de las aplicaciones web sólo son capaces de hacer una sola cosa a la vez. Me explico, estoy escribiendo este artículo, y al mismo tiempo puedo dar de alta Categorías, para hacer otra cosa, tendría que abrir una nueva ventana/pestña!!!! En las aplicaciones de Escritorio puedes hacer muchas cosas al mismo tiempo.

5. Acceso a las recursos del sistema. Si tienes un programa que necesita dos impresoras diferentes, según el tipo de documento, con una aplicación web la hemos liado. No se puede, tenemos que estar cambiando de impresora. Es un ejemplo, pero es la realidad, el acceso a los recursos locales es muy limitado.

6. El browser se muere…. Cuando mezclamos una aplicación web en el mismo browser, con el facebook, el último video de youtube, radio online, etc.. llega un momento en que se muere y crash… al final me he tenido que instalar 2 browsers, una para aplicaciones y otro que utilizo para cosas que pueden hacer el browser morir. Ya sé que es culpa del browser, pero…

7. AJAX. Es bueno, es muy bueno, siempre que se utilice bien, pero utilizarlo bien, tiene un coste altísimo, y pocas personas son capaces de hacer aplicaciones COMPATIBLES en AJAX que funcionen bien.

8. Compatibilidad. Magento es uno de los sistemas de comercio electrónico de nueva generación más famosos, pues bien, no me funciona en mi browser, es incompatible.

9. Favoritos e Historial. No hay cosa más peligrosa que un usuario acceda a una página directamente de una aplicación, sin pasar por los pasos necesarios. He visto usuarios que se guardaban en el favorito patallas que requerían pasar por un paso previo, y al acceder directamente, montaba unos líos increíbles.

10. Ancho de Banda. Si, si, ancho de bando. Una aplicación web tiene que transmitir, la pantalla, las librerías de AJAX, la hoja de estilo, las imágenes, y los datos!!! mientras que una aplicación de escritorio, sólo transmite los datos.

Técnicas para mejorar rendimiento

Posted by jmacias · Leave a Comment 

Existe mucha literatura sobre como mejorar el rendimiento de las aplicaciones, pero a menudo nos olvidamos de ellas, recopilamos aquí, las técnicas más usadas en aplicaciones de escritorio:

1. Cache, cache y mas cache

Es totalmente innecesario acceder a los mismos datos en la base de datos una y otra vez, es mucho mejor, guardar estos datos en memoria o en disco, y utilizarlos en las sucesivas llamadas.

Además de este tipo de datos, están los parámetros, las preferencias de usuarios, etc…

El uso de cache, mejora radicalmente la velocidad de una aplicación.

2. Arranque Rápido.

Esta es mi técnica preferida, ideal para redes lentas. No es fácil de implementar y requiere un poco de lógica. Se recoge estadística de las tablas y recursos más usados por la aplicación cuando arranca, por ejemplo, podemos tener una aplicación que normalmente abre un formulario y que tiene una lista desplegable con provincias.

Basándonos en las estadísticas, hacemos que arranque en paralelo y proceso que precarge los datos más usado, de forma que cuando el usuario acceda, no tiene que esperar que lleguen los datos.

3. Optimización de Base de Datos

No voy a detallar todas las técnicas, pues hay muchas, pero las principales son optimización de índices, minimizar los accesos a bases de datos, desnormalización cuando es necesario, estudio de planes de ejecución de consultas, etc..

4. Escalabilidad

Quizás, la parte más complicada a la hora de desarrollar una aplicación. Lo primero es ¿como sabemos si es escalable? Existen herramientas que simulan la carga de trabajo de miles de usuairos, es un buen punto de partida.

Pero ¿como lo hacemos más escalable? Existen muchas técnicas, pero la más sencilla y útil es diseñar los sistemas para que se puedan ejecutar en paralelo, no diseñar un proceso central que lo hace todo en el servidor, es mejor diseñar, pequeños procesos de trabajo que se pueden ejecutar en paralelo.

Ahora estamos probando la ejecución distribuida de los procesos del servidor, de forma, que todos los ordenadores de la oficina, participan en el proceso global, aportanto parte de su CPU.

5. Sensación y percepción

Un día llegó a mis manos un documento de Microsoft muy curioso, sobre la percepción que tiene el usuario de la velocidad de un programa, y me pareció muy interesante. La típica barra de progreso que tenía Windows al principio al iniciar, fue sustituida por una barra que se movía a toda prisa y daba varias vueltas. La percepción del usuario es importante, y tenemos que cuidar todos los tiempos muertos de la aplicación, utilizar iconos con reloj, animaciones, etc….