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.
Totalmente de acuerdo!
Si google ha invertido desde el 2004 hasta el 2011, para hacer gmail… pues yo podría invertir desde hoy hasta el final de mis días!