iframe o AJAX?

Mientras algunos frikis se compraban un nuevo equipo, o no tan nuevos, participe en unas horas de consultoría para una empresa local de software, y eso es lo bueno de estar en Lima hay otras oportunidades de negocio que se puede hacer además de participar en el desarrollo de proyectos, como la consultoría o el entrenamiento, justo hace dos semanas también participe en una capacitación para una empresa local, en fin, en otro post les cuento porque me gusta hacer desarrollo, consultoría, y entrenamiento... claro eso es aparte de los eventos.. y al tema del post :).

En estos últimos meses, he tenido la oportunidad de comprobar, en los proyectos en que participo, en entrenamiento y consultoría a empresas, que el uso de aplicaciones Web como opción para sistemas transaccionales esta siendo muy tomada en cuenta, buena cada empresa debe tener su propio motivo de migrar o crear una aplicación web, que puede ser convicción propia, o por que el pueblo lo demanda :D, el pueblo -> el usuario final, si, ese mismo que lo va usar en el día a día, así que por lo menos tiene que ser tenido en cuenta para el diseño de la aplicación, bueno ese es otro tema.

Pero básicamente los problemas que tienen que enfrentar los proyectos web,  son los mismos para todos los proyectos, frente a una aplicación Windows. El manejo de variables en la aplicación (sesión, cache, viewstate, ..), falta de formularios de dialogo, compartir variables entre ventanas, entre otros temas que son conocidos. Uno de los temas es el "refresco de pantalla", o postback al servidor, y que va de cara con el usuario final. Que pasa si tienes combos dependientes que se cargan unos a otros, por cada uno se estaría haciendo un postback, son controles pequeños que a veces no merece la pena hacer un refresco de toda la página desde la vista del usuario final, en un gridView o listas de datos podrían tolerar, pero cambiar un combo?, no a muchos usuarios finales les gusta. Si van a dejar sus appWindows por aplicaciones Web, tiene que ser algo mejor no?

Ahora en cuanto al manejo de refresco de pantalla, desde hace años se viene implementando tecnologías para evitar estos refrescos, ya don Guino nos dio una clase de historia sobre las opciones para implementar comunicaciones en background. Pero en este post vamos a resumir una comparación entre iframe y ajax, usando las implementaciones básicas y pre-construidas, no haciendo cosas marcianas.

  • Ajax, es multihilo, en el sentido que pueden haber procesando varios pedidos a la vez.
  • Iframe, tiene soporte del historial para su navegación, es decir que puedes retrodecer a tu vista anterior, en cambio en ajax, no. Aunque con ASP.NET AJAX hay una alternativa para lograr esto, pero es un control de terceros.
  • Iframe, tener cross-site scripting, aunque depende si tu tienes control sobre ambos dominios, como se menciona en el artículo original.
  • Ajax, maneja estado, con ajax podemos mostrar un indicador de progreso del pedido actual y que el usuario final no vea esa pantalla blanca de parpadeo, que no le dice nada.

Y aunque con Iframe puedes mejorar la experiencia del usuario durante de la navegación, las páginas cuerpo seguirán haciendo postback, es decir puedes conversar tu menú y head, pero si haces un postback en la página cuerpo, igual verás el refresco de la pantalla aunque sólo de esa frame. Ahora, hablando de ASP.NET AJAX, nosotros con el UpdatePanel podemos ser más granulares, tampoco vamos a colocar un iframe por cada control que tengamos, pero con el UpdatePanel si podemos hacer eso podemos ser granulares y sólo usarlo donde lo necesitemos, además que podemos mostrar un indicador del estado del pedido al usuario, usando el control UpdateProgress.

Pero como dice el autor en su artículo, todo depende del escenario, no pretendan implementar sólo una opción en todos sus escenarios, lo mismo me comento Ivan Mostacero en una reunión virtual el otro día. Por ejemplo Google Maps usa iframes, mientras que Google suggest usa AJAX.

P.D.: Corríjanme si me equivoco, pero otra cosa a tener en cuenta es que el elemento iframe no es valido en el xhtml 1.1, no directamente, por que vi que había en un foro un post de un iframe válido para xhtml 1.1.

Artículos relacionados:

Saludos,


Post cruzado 3Dev Blogs
Published 25/6/2007 5:02 por Sergio Tarrillo
Archivado en: ,,
Comparte este post:
http://geeks.ms/blogs/sergiotarrillo/archive/2007/06/25/16509.aspx

Comentarios

# re: iframe o AJAX?

Hace años usaba una opción que permite no refrescar el cuerpo para hacer postback.

La opción consiste en tener un frameset en el que tienes un frame con tamaño 0 para conservar las variables javascript entre las llamadas y otro frame para hacer los envíos. Cuando se realiza el envió en el frame de envíos la pagina de repuesta generada en el servidor puede contener un javascript que repinta los valores de la pagina con el cuerpo.

¿Qué os parece este enfoque?

Monday, June 25, 2007 12:50 PM por Jorge Dieguez

# re: iframe o AJAX?

que interesante, y no encontraste algunos problemillas en manejar contenidos javaScript entre frames?, imagino que para grandes cantidades de datos se convertía en una tarea compleja?

has publicado el ejemplo en tu blog? :D

Saludos,

Tuesday, June 26, 2007 11:56 PM por Sergio Tarrillo

# re: iframe o AJAX?

mas elegante usasr ajax

Friday, August 21, 2009 12:42 AM por desconocido ajax

# re: iframe o AJAX?

toodo el mundo quiere usar AJAX porque es la última tecnología y les resulta novedoso y elegante. En mi opinión es bastante problematica su implementación, por ejemplo, AJAX y firefox ya hasta me parecen enemigos. Hay que tener mucho cuidado al no enrollarse la vida solo por usar los ultimo. Si te sirve bien, sino, hay otras cosas que se pueden implementar, depende de lo que realmente requieras...

Saludos!

Thursday, September 23, 2010 8:37 PM por carola

# re: iframe o AJAX?

La forma profesional de trabajar es con AJAX, funciona muy bien con todos los navegadores si es que sabes programar de forma estandar (como IE no es estandar hay que hacer excepciones) ahora estoy tratando de hacer AJAX con .net y es una mierda!

Monday, March 21, 2011 3:00 PM por alex