JASoft.org

El blog de José Manuel Alarcón Aguín. Programación web y mucho más...

MENÚ - JASoft: JM Alarcón

Plantillas de lado cliente con JavaScript: ¿Qué tecnología utilizar?

asp-net-ajaxEn septiembre de 2009 Krasis Press lanzó al mercado mi libro “Tecnologías ASP.NET 4.0 (Saltando desde la versión 2.0)”. Fue un libro que se adelantaba en varios meses a la futura versión de la plataforma y el entorno de desarrollo. En el momento de escribirlo, en Julio de 2009, las últimas noticias sobre el lanzamiento del producto apuntaban a Octubre de 2009, y que muy pocos cambios iban a aparecer en la versión final. Por ello, a pocos meses vista de esa versión definitiva, aún con la Beta 1 de la plataforma, nos decidimos a lanzarlo al mercado.

Trabajar con las Betas de Microsoft tiene muchas ventajas, pues te permite estar al cabo de la calle y adelantarte al mercado en las tecnologías que vendrán. Pero también tiene algunos inconvenientes, entre ellos que puede haber cambios de última hora que echen a perder el tiempo invertido. Al final, la versión definitiva de .NET 4.0 se fue retrasando y apareció el 12 de Abril de 2010. Este mayor ciclo de vida para las versiones previas del producto hizo que algunas características sufrieran algunos cambios más de los inicialmente esperados. Esto fue precisamente lo que ocurrió con una de las tecnologías más interesantes que aparecían en la parte Web con la versión 4.0: las plantillas de lado de cliente en ASP.NET Ajax Library.

El capítulo 5 de mi libro trata este tema con bastante profundidad. Enseña a utilizar AJAX para producir al vuelo páginas Web enlazadas a datos desde el propio navegador. Esto representa una nueva filosofía de trabajo y proporciona una potencia increíble a los programadores de aplicaciones Web.

Dentro de las cosas que explica ese capítulo 5 se encuentran las plantillas de lado cliente. La idea es la siguiente: tráete los datos desde el servidor llamando a un servicio mediante AJAX y en lugar de cargar otra página o renderizar una vista parcial de la actual (como hace un UpdatePanel), construye dinámicamente la nueva interfaz para trabajar con los datos. Ello implica entre otras cosas poder definir plantillas HTML para visualizar datos, permitir enlazado a datos con JavaScript entre la interfaz y el modelo JSON, enviar datos automáticamente al servidor para guardar cambios, etc... Es una característica compleja que implica sacar un partido muy grande a un lenguaje como JavaScript. Ni sus padres reconocerían lo que es capaz de hacer hoy en día este lenguaje. De hecho creo que no hay ningún otro libro en el mercado que explique esta tecnología pues en su momento, cuando lo escribí, no había apenas documentación y prácticamente tuve que leerme el código fuente completo para entender cómo diablos funcionaban.

La mala noticia para mi esfuerzo es que en la versión definitiva de ASP.NET 4.0 hubo cambios significativos en cuanto a la biblioteca JavaScript de lado cliente de Microsoft. Entre ellos que ya no se incluía de serie con ASP.NET sino que iba dentro del Control Toolkit, y además había habido algunos cambios menores en la tecnología de plantillas de lado cliente que hacían que lo explicado en el libro no funcionase correctamente. Por ello lancé poco después un apéndice a mi libro (lo puedes leer gratuitamente en este enlace) que explicaba estos cambios y permitía seguir sacando partido a esta tecnología.

¿Qué pasa con la biblioteca de lado cliente de Microsoft?

Recientemente he recibido un correo de un lector de mi libro preguntándome acerca de esta tecnología. Cuando había aprendido sobre ella en el libro le había entusiasmado, pero ahora al ver el pobre soporte que daba Microsoft para la misma estaba decepcionado y no sabía a qué atenerse. Me preguntaba qué le podía recomendar a la hora de crear este tipo de interfaces basadas en código de lado cliente. ¿es interesante seguir usando la tecnología de Microsoft o hay otras alternativas? ¿Qué pasa con jQuery?

Lo diré sin paños calientes: la parte de cliente de ASP.NET AJAX está muerta y no merece la pena invertir en ella. No ocurre lo mismo con la parte servidor, es decir, ScriptManager, UpdatePanel y similares, y los controles del Control Toolkit, que siguen siendo muy útiles.

Nota: otra batalla sería dilucidar si las aberraciones que comente la gente usando el UpdatePanel y compañía compensa la gran utilidad que se les puede sacar a estos controles si se los sabe usar bien. Me hace gracia cuando algunas veces veo aplicaciones Web basadas en ASP.NET AJAX que van lentísimas y los programadores que las han hecho se quejan de la tecnología: No, perdona, esa tecnología es estupenda, pero como no te has preocupado de entender cómo funciona por debajo y las implicaciones que tiene usarla (comprándote mi libro, por ejemplo, donde lo explico con detalle) pues entonces pasa lo que pasa. Antes de echar la culpa a una tecnología primero hay que entenderla bien. Y lo dejo que si no me pierdo ;-)

El motivo de que diga esto es que Microsoft quiso hacer unas bibliotecas de lado cliente muy potentes que dejaran hacer muchas cosas, como las plantillas que están en mi libro. Sin embargo, en lugar de apoyar algún proyecto potente y maduro que ya existiera, como por ejemplo jQuery, hicieron su propio sistema. Típico de Microsoft por desgracia.

JQueryUn poco antes de haber sacado .NET 4.0 y VS2010, de repente vieron la luz y decidieron hacer lo que tenían que haber hecho desde el principio: apoyar jQuery y no reinventar la rueda. jQuery es super-potente y está muy probado siendo casi el estándar para desarrollo Web con JavaScript hoy en día. Por lo tanto decidieron no seguir desarrollando su parte de cliente y apoyar a jQuery. Es más, los controles del AJAX Control Toolkit aparte de funcionar en lado cliente con la tecnología de Microsoft, a su vez son todos plugins de jQuery para facilitar su uso desde este framework.

Tanto apoyaron a jQuery que en ese momento decidieron ayudar con el desarrollo de algunas de sus funcionalidades, entre ellas las funcionalidades para plantillas de lado cliente. Además, en lugar de usar lo que ya tenían, hicieron una cosa completamente diferente llamada jQuery Templates.

La verdad es que también estaban muy bien y me ilusionaron durante un tiempo, pero si estás pensando: "estupendo, me va a recomendar usar esto", te diré que NO.

El problema es que la primera beta del proyecto es de marzo de 2010, justo antes de que saliera VS2010, y parecía que iba a muy buen ritmo, pero en abril de 2011 decidieron parar el desarrollo por todos los problemas que tenían. Así que ahora hay dos proyectos oficiales en jQuery destinados a hacer platillas: JSRender y JSViews que trabajan en conjunto para conseguir plantillas de lado cliente. Hoy por hoy, yo no los recomendaría porque están todavía haciendo cambios y de vez en cuando los modifican y dejan de funcionar cosas.

Si tengo que recomendar algo quizá sería utilizar el framework de JavaScript llamado Knockout. Es muy bueno y se complementa bien con jQuery (se pueden usar en paralelo). Además Microsoft parece que lo apoya también y en las betas de Visual Studio 11 viene incluido por defecto en los proyectos. Entre otras muchas cosas lo más importante son las plantillas enlazadas a datos muy potentes, sencillas y estables.

Knockout

Espero que a más gente le pueda servir de orientación este post.

José Manuel Alarcón José Manuel Alarcón
Fundador y director de campusMVP.es, el proyecto de referencia en formación on-line para programadores en lengua española. Autor de varios libros y cientos de artículos. Galardonado como MVP de Microsoft desde 2004. Gallego de Vigo, amante de la ciencia y la tecnología, la música y la lectura. Ayudando a la gente en Internet desde 1996.
Descarga GRATIS mi último libro (no técnico): "Tres Monos, Diez Minutos".
Banner

Comentarios (4) -

Argentina lontivero

Gracias José Manuel por la puesta al día.

Responder

Spain Sergio León

Gracias por arrojar un poco de luz al asunto.
Hace poco hablábamos sobre ello en twitter y no llegamos a ningún fin.
Apostaré por Knockout!
Un saludo.

Responder

Spain Alberto Basalo

Hola José Manuel, estoy empezando a usar un framework de telerik llamado KendoUI que ofrece un sistema propio de plantillas que dice ser rapidísimo.
Te paso unos enlaces por si te interesa.
http://www.kendoui.com/
http://demos.kendoui.com/web/templates/index.html

Si estás interesado te puedo pasar algunos ejemplos de lo que estoy haciendo.

Responder

Spain José Manuel Alarcón

Hola Alberto,

Sabía de él pero no lo controlo nada. No me metí porque sabía que no era open Source (al menos la versión gratuita) y me pareció una apuesta más segura Knockout. Pero gracias por la referncia. A otra gente le puede resultar interesante.

Saludos,

Responder

Pingbacks and trackbacks (1)+

Agregar comentario