Back Archive at Serakesi

Ruby y Rails

Cada vez encuentro mayor informaci?n sobre esta nueva forma de programar. La verdad, que con el tiempo, uno se da cuenta de lo que puede llegar a enganchar Ruby On Rails. Si todav?a no lo hab?is visto, echarle un vistazo. A nadie le amargar?a acostumbrarse a trabajar con un Framework que hace que entiendas lo que es XTreme Programing: resultados desde las primeras l?neas de c?digo. Ruby fue creado en 1993 por un japon?s llamado Yukihiro Matsumoto, y como bien dijo: Ruby es la combinaci?n de la elegancia conceptual de SmallTalk, la facilidad de uso y aprendizaje de Python, y el pragmatismo de Perl. Es capaz de realizar en un par de l?neas, tareas, que otros lenguajes necesitar?an el triple de c?digo Este lenguaje pas? desapercibido para el mundo occidental, hasta que alguien se percato de sus ventajas a principios de los a?os 90, y se publicaron varios libros. Pero su m?xima explosi?n fue cuando apareci? Rails, un Framework creado por David Heinemeier Hansson. Su fusi?n se denomin? Ruby On Rails. Ruby On Rails, es algo m?s que un t?rmino de moda, ha puesto en el mapa, t?rminos como: Patr?n MVC, Programaci?n ?gil, Convenci?n sobre configuraci?n(no quiero decir con esto que sea la primera vez que se utilizan, m?rese struts, etc.) adem?s de voltear los ojos del mundo a un lenguaje de programaci?n que casi nadie conoc?a. Hay un video (50MB, 10 min.), que demuestra como en pocos minutos, poco c?digo y mucha virguer?a, se puede construir un rudimentario blog. Una excelente introducci?n a Rails que seguramente hace despertar el gusanillo a m?s de uno. A mi personalmente me tienta, sobre todo la capa de abstracci?n que han hecho para gestionar la bases de datos. Como sab?is, ?ltimamente tambi?n se est? hablando mucho de AJAX, en art?culos anteriores (AJAX, AJAX, Segunda parte) explicaba con detalle las ventajas de esta metodolog?a. Pues bien, Rails tambi?n permite el uso de AJAX a trav?s de Ruby. Adem?s consigue convertir esta tarea en algo muy sencillo.Bueno, ya veremos como va evolucionando esta nueva tecnolog?a y si podr? hacer frente a lo existente hoy d?a como PHP5 y JAVA.

AJAX, segunda parte

Vamos a profundizar un poco m?s en esta tecnolog?a y comprender porque es tan interesante.
AJAX es algo como: Asynchronous JavaScript + XML. Como su nombre bien dice, la principal virtud de AJAX est? en la potencia que se le puede extraer al trabajo as?ncrono de peticiones al servidor. Hasta ahora solo hemos trabajado con un modelo de interacci?n sincr?nica basada en clic-petici?n-presentaci?n. Con AJAX la interacci?n pasa a ser as?ncrona. Cada vez que se hace clic no necesariamente se establece una conexi?n con el servidor.

AJAX hace de intermediario entre el servidor y el usuario, anticipando peticiones de datos al servidor, de modo que cuando el usuario hace un clic determinado,AJAX ya tiene listos esos datos y los muestra directamente, sin tener que volver a hacer una nueva petici?n.

En ciertos procesos se muestran en la p?gina sin retardo alguno, y mientras el usuario miraba unos datos en la pantalla, AJAX le estaba preparando los siguientes que iba a necesitar.

El siguiente gr?fico explica la diferencia de funcionamiento (sincr?nica vs. as?ncrona) respecto del modelo tradicional comparado con AJAX:

C?mo funciona AJAX
Un buen ejemplo de una aplicaci?n realizada en AJAX, ser?a Gmail. Si he entendido bien el mecanismo de funcionamiento as?ncrono de AJAX, cuando leemos el correo en Gmail y abrimos un mensaje, s?lo se nos muestra el ?ltimo mensaje recibido del emisor. Mientras leemos ese mensaje Gmail va cargando el resto de mensajes de esa conversaci?n, de forma que cuando pulsamos en la opci?n de Expandir los mensajes, nos muestra inmediatamente los siguientes y que la url no var?a.

MVC como Patr?n de Dise?o

Todos los programadores, buscamos constantemente reutilizar c?digo una y otra vez en los proyectos en los que nos vamos metiendo. Cuando adquirimos experiencia, el sistema de programaci?n cada vez se acerca m?s a un sistema modular, basado en capas o grupos. Esto parece ser normal y ha dado lugar a los patrones de dise?o, que no son m?s que guiones a seguir para llegar a un mismo resultado.

De todos los patrones existentes, uno de ellos es el MVC que significa Modelo, Vista y Controlador.

Modelo Vista Controlador (MVC) es un patr?n de dise?o de software que separa los datos de una aplicaci?n, la interfaz de usuario y la l?gica de control en tres componentes distintos, de forma que las modificaciones al componente de la vista pueden ser hechas con un m?nimo impacto en el componente del Modelo de datos.

Definici?n de las partes:
El Modelo es todo acceso a base de datos, y las funciones llevan lo que llaman “L?gica de Negocio”. Se utiliza para manejar informaci?n y notificar los cambios realizados en dicha informaci?n.

La Vista es la responsable de mostrar los datos que recibe del Modelo. Cuando este cambia, la Vista redise?a autom?ticamente la parte afectada y solicita los servicios correctos al Modelo.

El Controlador es lo que une la Vista y el Modelo. Por ejemplo, son las funciones que toman los valores de un formulario, consultan la base de datos a trav?s del modelo y producen valores, que la Vista tomar? y convertir? en HTML. Regula el acceso del usuario a los datos y ordena que la Vista y el Modelo realicen las acciones basadas en la ese acceso. Si el usuario clica sobre un art?culo de un men?, el Controlador es el responsable de decidir cual va a ser la respuesta y la Vista la muestra.

El Modelo, la Vista y el Controlador, est?n constantemente en contacto, referenciados entre si.

En la figura siguiente, vemos la arquitectura MVC en su forma m?s general. Hay un Modelo, m?ltiples Controladores que manipulan ese Modelo y hay varias Vistas de los datos del Modelo, cambian cuando cambia el estado de ese Modelo.

Estructura MVC

Esta arquitectura presenta varias ventajas:

  • Hay una clara separaci?n entre los componentes de un programa; lo cual nos permite implementarlos por separado.
  • La conexi?n entre el Modelo y sus Vistas es din?mica; se produce en tiempo de ejecuci?n, no en tiempo de compilaci?n.

Al incorporar el modelo de arquitectura MVC a un dise?o, las piezas de un programa se pueden construir por separado y luego unirlas en tiempo de ejecuci?n. Si uno de los Componentes, posteriormente, se observa que funciona mal, puede reemplazarse sin que las otras piezas se vean afectadas.

Ajax

La primera vez que se habl? de la arquitectura AJAX fue a mediados de febrero. No se trata de una nueva tecnolog??a ni de un nuevo invento, sino de un concepto que aglutina tecnolog?as ya existentes, como la utilizaci?n de XHTML, CSS, DOM, Javascript, XML, XSL.
En las aplicaciones web tradicionales, los usuarios interact?an mediante formularios, que al enviarse, realizan una petici?n al servidor web. El servidor se comporta seg?n lo enviado y contesta enviando una nueva p?gina web. Se utiliza ancho de banda y normalmente la misma estructura de HTML devuelta est? presente en la p?gina de petici?n.

AJAX, puede enviar una petici?n al servidor y recibir ?nicamente la informaci?n necesaria, empleando SOAP para servicios web, basado en XML, y utilizando Javascript en el cliente para procesar la respuesta del servidor web. Procesando la informaci?n directamente en el cliente, liberamos al servidor de trabajo, consumiendo un m??nimo ancho de banda.

Esto da una sensaci?n de interacci?n parecida a las aplicaciones convencionales en local.

Una de las desventajas de AJAX, es que existe el riesgo de que el cliente tenga el Javascript de su navegador deshabilitado. Para ello se debe tener en cuenta y dar la posibilidad de trabajar con el refresco tradicional de las web sin el uso de AJAX.

Hay que saber que el usuario est? acostumbrado al sistema tradicional de refresco de la p?gina cuando cargan nuevos datos, con AJAX esto no sucede y por lo tanto se debe informar de alguna manera (mensaje de carga), que la p?gina est? cargando nuevos datos.

Tampoco es recomendable la utilizaci?n de grandes c?digos Javascript, ya que esto tambi?n puede afectar el ancho de banda y un aumento del tiempo de proceso, que puede llegar a bloquear el navegador y dejarlo colgado.

El concepto AJAX, est? siendo potenciado por numerosas aplicaciones realizadas por Google, como: Gmail, Google Groups, Google Suggest, Google Maps. As?? tambi?n Empresas en Crecimiento que actualmente est?n Desarrollando Aplicaciones en AJAX.

Enlaces a aplicaciones que utilizan AJAX:

  • A9, buscador de Amazon.
  • Flickr. ?lbumes de fotos online.
  • Oddpost, servicio avanzado de webmail de Yahoo!