Tomando decisiones. ASP.NET AJAX, ExtJS, jQuery, y otros sucedáneos para la Web RIA
Introducción
En los últimos meses me he estado «comiendo» la cabeza de una forma exagerada con respecto a la programación de aplicaciones Web con ASP.NET, bien lo sabe Miguel Sierra al que he hecho alguna pregunta que amablemente me ha respondido (¡gracias!). Pero sobre todo debido a que debo abordar diferentes proyectos y la toma de decisiones afecta a muchas variantes que no es cuestión de explicar detenidamente aquí.
Indudablemente, mi mente está puesta de forma inicial en AJAX y en RIA dejando de lado el tradicional desarrollo de aplicaciones Web (de las de toda la vida), y es ahí justamente donde empiezan mis problemas.
Por un lado Microsoft Silverlight me encanta con respeco a algunos de sus competidores, pero hasta que no estuviera soportado en cualquier entorno de ejecución y en cualquier navegador, no terminaría de satisfacer mis necesidades. Así que Microsoft Silverlight puede ser ejecutado en cualquier navegador Web, y los problemas surgen entonces con la indexación de búsquedas de cara a los buscadores Web y con el soporte a diferentes entornos de ejecución.
El proyecto Mono está ayudando muchísimo en esta línea con su Moonlight, pero aún hoy sigue siendo un problema sin resolver al 100%.
Con esta tesitura inicial, me veo obligado a redirigir mis pensamientos y esfuerzos hacia otra dirección. La dirección que me he marcado es la programación tradicional de toda la vida con orientación AJAX pura. La interactuación del usuario es para mí fundamental y que el refresco de la información dentro de la aplicación Web no fuerce el refresco de toda la aplicación Web sino solo de la parte de la aplicación que debe ser refrescada. En otras palabras, acercar la RIA al usuario.
Las dudas
Y aquí como no, aparecen nuevas dudas.
He estado mirando si es mejor o podría ser mejor ponerse manos a la obra con los controles AJAX de Microsoft o no, pero una vez más, no terminan de satisafacer mis ansias por tener una aplicación que ofrezca una experiencia rica al usuario y se convierta a una RIA pura. Ayudan, pero no termina de convencerme.
Así que me pongo a buscar por Internet, y llega a mi cerebro una cantidad de información que es capaz de agotar a cualquiera.
Me entero de la existencia de MVC (modelo vista controlador) y pienso si debería pensar en usar MVC para desarrollos grandes y para modelar el desarrollo de mis aplicaciones. De momento, no hablamos de presentación, RIA ni AJAX, pero esto empieza a traumatizarme porque me abre más dudas que soluciones. Una vez más, debo desbloquear la toma de decisiones y puesto que el desarrollo Web siempre ha funcionado como lo conocemos hasta ahora, veo que MVC puede ayudarme enormemente para desarrollos Web grandes, como los que tengo que iniciar, pero que provocarían un aprendizaje obligado que no estoy dispuesto a costear en estos momentos (el tiempo apremia… como siempre). Además, pese a que es mejor usar MVC de cara al mantenimiento de la aplicación Web en proyectos de gran envergadura, si el desarrollo con el ASP.NET tradicional se hace ordenadamente, se puede llegar a un control y rendimiento similar respecto al mantenimiento. Por esa razón, deshecho la idea de usar MVC y la dejo aparcada para más adelante, para futuros proyectos, aunque siempre y antes de empezar el proyecto, se puede volver a pensar en MVC, así que ya veremos que pasa finalmente.
Pero como no hay dos sin tres, aparece una nueva sigla en escena… MVP (modelo vista presentación). Miro y remiro un poco, pero aquí sí que prefiero dejarlo para más adelante.
Como dije antes, buscando por Internet recibí muchísima información y eso en parte me venía muy bien, pero por otro lado, llegaba a agobiar un poco.
Lo más importante de todo lo que llegué a ver, era lo relativo a los AJAX Frameworks.
Un AJAX Framework es un framework que tiene por objetivo, facilitar el desarrollo de aplicaciones Web utilizando AJAX. Hasta aquí bien, pero claro, cuando nos ponemos a mirar como usar un AJAX Framework, es posible que nos topemos con una lista bastante grande de ellos. Entre ellos aparecen AJAX Frameworks para JavaScript, ASP.NET, Java, PHP, etc. En nuestro caso nos interesa todo lo relativo a ASP.NET, y aquí vemos que podemos usar tanto los AJAX Frameworks de JavaScript como los AJAX Frameworks de ASP.NET puros.
¿Qué camino debemos tomar?
La pregunta entonces es… ¿cuál utilizar?.
Y aquí nuevamente empezamos a «comernos» la cabeza nuevamente.
La lista no es pequeña… Backbase, ExtJS, jQuery, Ra Ajax, Prototype, Yahoo! UI o YUI, DOJO, etc. Hay incluso algunos de los que muy pocos habrán oído hablar.
Por suerte, hay personas que ya se ha encontrado con los mismos problemas que yo, y que sus aportes ayudan a veces a hacer parte del camino. No todo porque yo por lo menos me baso en no creerme nada de lo que me cuentan (si estuviera leyendo esto tampoco me creería nada de lo que os estoy contando, porque es mejor verlo cada uno por sí mismo), pero me ayuda sin lugar a dudas a no dar palos de ciego o a minimizar el tiempo en encontrar una posible solución. Así que por suerte, me he encontrado con un fichero pdf que corresponde con una matriz (bajo mi punto de vista obsoleta) que compara el uso de AJAX Frameworks en aplicaciones ASP.NET.
También existe una comparativa dentro de la página de Ra Ajax que puede resultar interesante igualmente. No me cuadran los datos obtenidos para jQuery, pero es bueno tenerlo en cuenta por si acaso.
El caso es que he estado mirando pros y contras y me he topado con varias conclusiones. De todas las que he visto, oído, etc., las que más me gustan son Ra Ajax, ExtJS y jQuery además de los propios controles de AJAX de ASP.NET que son muy sencillos de utilizar. Por esa razón, he filtrado y he sacado unas conclusiones muy personales sobre este tema (cada uno que saque sus propias conclusiones, no existen balas de plata).
Lo que he visto de Ra Ajax me ha gustado, pero honestamente, es la que menos conozco, y como dice el refrán, más vale lo malo conocido que lo bueno por conocer.
Las librerías ExtJS me encantan, me chiflan, pero… las veo complejas, muy pesadas y lentas. Sé que hay compresores de librerías JavaScript, pero es una excusa. Por otro lado, la integración con Visual Studio no existe, y aunque hay rumores de que la versión 3.0 que está a punto de aparecer va a tener un diseñador propio y una «posible?» integración con Visual Studio, eso no se puede asegurar de momento y prefiero dejarlo en «standby».
jQuery es para mí tan valioso como ExtJS, pero hay algo que me gusta mucho más. Por un lado, jQuery «pesa» menos y es más ágil, y hay más proyectos y ejemplos de implementación de jQuery para ASP.NET, no como en el caso de ExtJS. Por otro lado, y quizás más importante, jQuery se puede usar con Visual Studio, se puede aplicar Intellisense en el desarrollo, y los planes de Microsoft con ASP.NET es adoptar jQuery (1) y (2), lo cuál me hace pensar en que el soporte está asegurado. Finalmente, tenemos jQuery UI para ayudarnos en la interactuación con controles en la Web.
Por otro lado, la independencia del navegador Web es fundamental y más aún que se pueda interactuar con la aplicación Web en cualquier sistema operativo, algo que Silverlight no me puede ofrecer 100%.
Por otro lado, hay algo que me molesta bastante con respecto al proceso de JavaScript y es que Microsoft Internet Explorer 7 es más lento de procesar que otros navegadores de la red. Espero que Microsoft Internet Explorer 8 sea más rápido al trabajar con JavaScript, pero no es ningún impedimento y sigue siendo siempre mucho más rápido que una aplicación Silverlight o Adobe Flex.
Ahora bien,… partiendo de mi predilección personal por jQuery y ExtJS, ¿conviene usar jQuery, ExtJS y AJAX ASP.NET como un todo?.
Mi posicionamiento es, o utilizamos jQuery o utilizamos ExtJS, pero ¿los dos?. ¿Es realmente necesario?.
Sobre AJAX ASP.NET es tan sencillo de utilizar, que minimiza enormemente algunos desarrollos o parte de ellos, además, podemos utilizarlo sin problemas con un AJAX Framework, por esa razón, igual compensa utilizar AJAX ASP.NET con jQuery o bien AJAX ASP.NET con ExtJS.
Lo que no me termina de convencer es usar el popurrí de ExtJS, jQuery y ASP.NET AJAX en el mismo proyecto.
¿Alguna opinión y/o experiencia que compartir?.
Referencias:
Enlace Web: RIA Frameworks
16 Responsesso far
🙂
Veo que no soy el único que piensa así… La verdad es que a veces, viendo lo que se puede conseguir con estos Frameworks dan unas ganas tremendas de usarlos (sólo hace falta dar un vistazo a ExtJS), pero el manejo desde VS es cuando menos complejo, y el proyecto de CodePlex falla más que una escopeta de feria.
Lo que si es fantástico es la adopción de jQuery, yum!
Yo estuve tambien haciendo la misma seleccion y al final opte por Microsoft Ajax y JQuery.
Jquery es chulisimo y muy reducido, pero la curva de aprendizaje es cortisima y hay plugins para todo lo que te puedas imaginar.
ExtJS tiene algunas funcionalidades buenas tambien, pero no he visto aun nada a nivel de interfaz que no pueda hacer con JQuery bien porque esta ya hecho o porque lo puedes hacer uniendo piezas.Ademas (en mi opinion) en cuanto a interfaz el enfoque debe ser el contrario, debes pensar lo que necesitas (un context menu,un dialogo modal) y despues ver como implementarlo, no al reves, ver una funcionalidad que te gusta y ver donde la puedes meter en tu aplicacion.
Ademas, en estos Frameworks que cambian continuamente es bueno apostar por lo mas solido y maduro posible (si es que lo hay), ya que es lo que generara mas movimiento.Por poner un ejemplo las librerias de Jquery pueden ser descargadas directamente en tiempo de ejecucion desde Google, asi como prototype y demas.Son cosas que van surgiendo y que no se pueden preveer,quizas quieras usarlo y quizas no, pero estan ahi.
Yo también estoy con ese dilema y he realizado algunas pruebas con Flex y Net de lado de servidor en mi opinión Adobe Flex es una muy buena alternativa.
Uff, yo creía que lo tenía claro y después de leer estas líneas me has dejado la cabeza peor de lo que estaba.
Yo soy del parecer que no todo te sirve para todo, porque necesites hacer una aplicación web no tienes que utilizar todo lo que existe ni hacer todas las aplicaciones web iguales. Como cualquier desarrollo las herramientas se tienen que adaptar al análisis y no al revés.
Entendiendo que vas a utilizar algún framework de Ajax, yo estoy de acuerdo con Oscar Calvo y lo que me gusta de JQuery es su compensación entre el peso, facilidad de uso y funcionalidades que aporta.
Saludos.
Buenas,
En mi empresa hemos estado trabajando desde hace mucho con ASP.NET. Creimos que nos aportaría muchas ventajas y aunque inicialmente las aportó, luego descubrimos que a medida que aumentaba la complejidad de las aplicaciones web, crecía el número de problemas.
Siempre nos ha sido especialmente traumático el correcto tratamiento del VIEWSTATE y la cantidad de información innecesaria enviada al servidor en los postback.
Es por ese motivo que empezamos a trastear con jQuery. Hay una excelente web:
http://www.encosia.com
que nos ha ayudado a ver las cosas con otra perspectiva.
jQuery + ASP.NET para nosotros es, hoy por hoy, la solución más rápida y efectiva con la que hemos trabajado.
No hay ningún tipo de color en cuanto al rendimiento entre jQuery+ASP.NET y ASP.NET+AJAX Framework, sobretodo si se utiliza ASP.NET 3.5, donde el uso nativo de codificaciones JSON incrementa el rendimiento y comodidad aún más.
Sólo hace falta buscar en los artículos de Encosia para encontrar uno donde nos ofrecen una comparativa entre la cantidad de información enviada al servidor en un postback de ASP.NET AJAX y la enviada mediante jQuery+ASP.NET 3.5.
Sinceramente creo que la tendencia generalizada es ir a parar a una solución híbrida entre jQuery + ASP.NET MVC.
Si nos fijamos en los desarrollos que estamos haciendo, vemos que están a medio camino entre ASP.NET y ASP.NET MVC por lo tanto, y más viendo que Microsoft añadió jQuery a sus deploys, la solución final que adoptaremos será ASP.NET MVC (cuando esté más maduro) + jQuery.
En cuanto a ExtJS no puedo decir nada porque no lo he probado. Quizás ExtJS + ASP.NET sea una solución igual de cómoda que jQuery + ASP.NET pero desde luego combinar 2 frameworks Javascript no me parece una buena idea. Además, hay que recordar que jQuery es extensible mediante plugins y la comunidad que los desarrolla es muy activa.
Saludos
Miquel Parejo
Uff, me acuerdo cuando estuve en tu misma encrucijada no hace mucho (http://netcodigo.webinfo.es/2008/10/09/frameworks-javascript/). Yo opté por ASP.Net + JQuery. La balanza hacia JQuery la inclinó varios factores, el primero es, como tu comentas, su «adopción» por Microsoft, esto me gusta. Lo segundo, es la rapidez, facilidad y recursos con que cuenta JQuery. Después de unos meses trabajando en este entorno «estoy encantado».
Saludos
En los proyectos que estoy trabajando estoy utilizando el patrón MVP , al principio cuesta un poco (por malacostumbrado a los webforms) pero para mí es más comodo que MVC por ahora ( más que nada porque conozco los controles aspnet y generar el html no me apetece por ahora)
Tal vez jquery mas MVC sea la corriente a seguir más a futuro cuando este todo un poco mas digerido.
Han visto WebGUI ?
Si amigo son muchas la opciones, he trabajado
bastante con Ext Js y con JQuery un poco
menos, los dos frameworks me parecen geniales.
recuerden que ExtJs aunque ciertamente es un
poco más pesado tiene un patron adapter, con el
que puedes usar tanto JQuery,prototype como YUI.
Y valiosos componentes que ahorran muchisimo
trabajo yo uso symfony del lado del servidor
y ExtJs para la presentación,hasta ahora no
tengo quejas….
Gracias por el analisis. Yo tengo que desarrollar segun el cliente que tiene adoptada una tecnologia u otra en su empresa: .NET, Java o PHP. Cuando tengo libertad me voy por php y por una libreria grafica propia que me hice que ‘construye’ los botones y campos en puro html + javascript + moodtools, pero sin ajax; pero ahora tengo que abordar un proyecto grande y estaba valorando una alternativa: estoy entre jQuery y ExtJS para trabajar con PHP, y voy a ver los tutoriales de ambos para decidir. Me gusta lo que comentais de JQuery, pq como despues voy a tener que hacer desarrollos .NET, pues ya me conoceria ese fw.
En mi experiencia personal, ExtJS es una solucion elegante al desarrollo de aplicaciones web con look&feel desktop. ) y desde Extjs se hace un store.load() para hacer un post de formularios y carga de datatables desde .net.
Esta muy bien documentado y una vez superada la curva de aprendizaje, resulta ser una herramienta perfecta.
Se logran capas de presentacion muy lindas.
En cuanto a la conexion con una capa de negocio en .net , se resuelve facil , desde .net se hacer un response.write (
En resumen, no descarten ExtJS por su peso, una web 100% extjs de capa presentacion, logra una presencia muy superior a cualquier otro framework que ande por ahi suelto.
Saludos
Hola a todos, me alegra ver que no soy el único que se come el coco con estás decisiones.
A mí me surge otra duda más, y espero que os haya surgido a vosotros también y podáis ayudarme.
¿Que usaís en el lado de servidor?
WebServices, PageMethods, httphandlers, user controls, páginas aspx…
Entiendo que para realizar transacciones en el servidor los pagemethods, ashx, ó asmx son perfectos, por cierto cual me recomendaís?
No entiendo (que igual se me escapa algo) como no se puede aprovechar el diseño de formularios ó controles de vs para renderizar partes de una página usando ajax, y no creando los controles desde código (en cliente o servidor), he visto algunos artículos cargando user controls dinamicamente pero los veo poco integrados y parece costoso en cuanto a rendimiento. Si lo intentas con una página aspx debes pegarte con las etiquetas form…alguien los utiliza?
No he probado la últimas versiones de vs ni el modelo mvc, pero igual ya hay forma de integrar estas posibilidades??
He visto las jtemplates que pueden ayudar en algunos casos al tratar dataset o listas, pero echo mucho en falta el poder dar uso a los controles de usuario.
Muchas gracias.
Saludos.
Si estáis trabajando en Visual Studio con el framework 3.5 os recomiendo que utilicéis coolite(www.coolite.com). Utiliza ExtJs y funciona realmente bien, es una gozada trabajar con esto y además es muy fácil de aprender ya que en la misma página te proveen ejemplos para todos los tipos controles que incluyen. La única pega es que aún no hay versión para el framework 4.0 Una pena…
¿Todas las opciones de las que hablais son compatibles con el framework 4.0 de Visual Studio 2010?
Un saludo y gracias de antemano:
Depende si es página web mas con pocos grids, combos, layouts muy flexibles me voy con jquery, pero si es un sistema completo obtienes resultados muy muy buenos con EXTJS, casi todos nuestros clientes quedan muy contentos jquery no tiene nada parecido a esto
Creo que jQuery no envidia nada de EXTJS, a mi modp de ver EXTJS es un framework muy bueno, pero de desarrollo o extensibilidad limitada. Me quedo con jQuery.