Análisis de una aplicación web tipo Gmail

Durante la lectura de la hoja de ruta de MVC4 (en inglés), leo lo siguiente que pica mi curiosidad:

implementing a full-fledged single-page application (e.g. Gmail)

En primer lugar el hecho de que un documento de Microsoft cite a Gmail como ejemplo no es gratuito. Es bien merecido, ya que Gmail supuso una revolución en el concepto de página web y en su transición al concepto de aplicación web, en el sentido de sustituto de las aplicaciones de escritorio tradicionales (ya sabemos que antes ya había aplicaciones web, pero ¿cómo eran? E incluso ¿cómo son muchas ahora?). Pese a su antigüedad, podemos incluso atrevernos a hablar de Gmail como la primera aplicación HTML5, o de una precursora de estas (en realidad es una precursora en el uso de AJAX, pero ¿de dónde sale HTML5 si no?) Dicho esto con todas las precauciones tratándose de un desarrollo que comenzó hace ya varios años (hace sólo 2 años que dejó de ser beta, pero el proyecto se inició en 2004). También podemos señalar otro logro en el haber de Gmail, su contribución a que muchos usuarios asimilaran el concepto de la nube incluso antes de haberlo oído nombrar por primera vez.

En cualquier caso, su referencia en la hoja de ruta se refiere principalmente al modelo de aplicación: completa y en una única página. Es decir, lo tenemos todo disponible sin cambiar de página, con algunas características muy destacables:

  • Navegación: Es como un navegador dentro de un navegador: sólo cambia el contenido, los menús se conservan. De hecho incluso muestra su propio mensaje Cargando… sustituyendo al del navegador.
  • Enlaces: Aún simulando el comportamiento del navegador, se integra perfectamente con él: responde al botón atrás (y toda la gestión del historial), permite abrir un correo en una nueva página o ventana…
  • Caché local: Mantiene los correos descargados en la memoria del navegador, lo que nos permite una navegación muy rápida entre ellos.
  • Carga inicial: Todo esto tiene un coste: la carga inicial no es rápida, de ahí la barra de progreso. Pero aun así tampoco es lenta, podemos decir que es muy soportable.

Un día tengo que profundizar bien en cómo hace Gmail todo esto y lo compartiré con vosotros (aunque si alguien quiere ahorrarme el trabajo, soy todo oídos). Lo bueno de las aplicaciones web es que es fácil aprender de ellas puesto que tenemos su parte de cliente en nuestro navegador, y Gmail es evidentemente una aplicación de cliente: Javascript en estado puro. Lo cual no quiere decir que sea fácil de bichear.

En cualquier caso, y volviendo a MVC (perdón que abrevie, pero me cuesta citar un tercio de alfabeto cada vez, o sea ASP.NET MVC, que son 9 de las 27 letras del abecedario) es evidente que el tipo de aplicaciones cubierto hasta ahora por MVC no es el tipo Gmail, sino todo lo contrario: la típica aplicación web con páginas bien diferenciadas. Evidentemente se puede mejorar, sobre todo con jQuery, cada vez mejor integrado, y con la facilidad que ofrecen los controllers para implementar servicios web, pero sigue sin existir un soporte nativo para este tipo de aplicaciones (léase plantilla de proyecto, helpers, integración con librerías de javascript para tal fin…) ¿Es eso lo que plantean en la hoja de ruta? Evidentemente, los artefactos que planteo pueden desarrollarse sobre MVC3, de hecho muchos los habrán desarrollado en mayor o menor medida. Pero su eventual inclusión en MVC4 contribuiría a su estandarización y a la difusión de su uso.

En resumen, dentro de la gran bola de nieve que es HTML5, el tipo de aplicación en página única es uno de los objetivos que se persiguen con la especificación. Y no sólo depende de características en el navegador (como bien ha demostrado el propio Gmail hace tiempo, aunque sí puedan ayudar a simplificar y mucho su desarrollo); sino que requieren de una fuerte integración entre cliente y servidor. MVC nos ofrece una moderna y flexible plataforma en el servidor, ¿en su nueva versión extenderá sus ramas aún más hacia el cliente con una integración más estrecha con librerías de javascript para simplificar el desarrollo de este tipo de aplicaciones? Tengo que pensar que las extensiones de jQuery desarrolladas por Microsoft (templates, data binding) ya marcaban este camino. ¿Tan lejano está el día en que yo no necesite mirar cómo hace Gmail su magia porque tendremos una plataforma que nos lo proporcione a un alto nivel de abstracción?

Por supuesto, esto no son más que divagaciones mías centradas en tan sólo uno de los numerosos puntos que se marca la hoja de ruta de ASP.NET MVC 4, es una lectura muy recomendable y amena.

Hola Geeks.ms

Hoy estreno mi nuevo blog en geeks.ms, algo que no podía ni imaginar hace sólo unos meses. Pero un grupo fantástico de gente me ha puesto las pilas y me ha convencido de que con muy poquitos conocimientos pero muchas ganas de compartir se puede aportar mucho a la comunidad, y si nos estamos nutriendo siempre de las aportaciones de los demás en nuestro día a día, es de justicia que aportemos también algo, por poco que sea. Así que muchas gracias a Rodrigo por ofrecerme este espacio y a tantos amigos de Twitter que me mantienen despierto todo el día y parte de la noche con sus aportaciones de enorme calidad.

Me siento muy feliz de formar parte de esta gran comunidad y espero poder aportar todo lo que mi tiempo libre me permita. Bueno, aunque libre ya no es, porque ya está también ocupado 😉

Y ahora un poco sobre mí: Aunque me inicié con Visual Basic 6 y ADO, mi mayor experiencia se centra en C#, WPF y Silverlight, con inmersiones más o menos profundas en WinForms, EF, ASP.NET MVC, SQL Server, TFS… y tantos productos relacionados. De ahí que la temática del blog pueda ir cambiando según el proyecto en el que esté trabajando.

Por cierto, no quiero decir con el título que geeks.ms sea el mundo, pero sí es cierto que agrupa una parte importante de nuestro mundo profesional y por eso estoy muy ilusionado por formar parte activa de él.

Nos leemos.