Restful
Restful
Restful
Objetivo
Investigar y conocer los puntos principales del termino Restful.
Introduccin
En el siguiente reporte se explicar el trmino de la arquitectura RESTful, as como sus comienzos, sus ventajas y su funcionamiento. Adems se mostrara la importancia que conlleva tener una pagina web con esta arquitectura.
Desarrollo
RESTful
La Transferencia de Estado Representacional (REpresentation State Transfer REST) describe un estilo arquitectnico de sistemas en red como, por ejemplo, aplicaciones Web. El trmino fue utilizado por primera vez en el ao 2000 durante una conferencia doctoral por Roy Fielding, uno de los principales autores de la especificacin HTTP. REST fue ganando amplia adopcin en toda la web como una alternativa ms simple a SOAP y a los servicios web basados en el Lenguaje de Descripcin de Servicios Web (Web Services Descripcin Lenguaje - WSDL). Ya varios grandes proveedores de Web 2.0 estn migrando a esta tecnologa, incluyendo a Yahoo, Google y Facebook, quienes marcaron como obsoletos a sus servicios SOAP y WSDL y pasaron a usar un modelo ms fcil de usar, orientado a los recursos. REST est comprendida por una serie de limitaciones y principios arquitectnicos. Si una aplicacin o diseo cumple con esas limitaciones y principios, se considera RESTful. El enfoque RESTful de los servicios web surge como una alternativa popular por su naturaleza liviana y a la capacidad de transmitir datos directamente sobre HTTP. Los clientes se implementan usando una gran variedad de lenguajes como programas Java, Perl, Ruby, Python, PHP y Javascript (inclusive Ajax). Generalmente se acede a los servicios web RESTful a travs de un cliente automatizado o una aplicacin que acta en representacin del usuario. Sin embargo, la simplicidad de estos servicios posibilita la interaccin humana directa pudindose construir una URL GET con el navegador Web y leer el contenido devuelto. En un servicio web de estilo REST, cada recurso tiene una direccin. Los recursos en s son los objetivos de las llamadas de los mtodos y todos los recursos comparten una misma lista de mtodos. Los mtodos son estndar; se soportan
los mtodos HTTP GET, POST, PUT, DELETE, y, pueden soportarse los mtodos HEADER y OPTIONS. En una arquitectura de estilo RPC, el foco se establece en los mtodos, mientras que, en la arquitectura de estilo REST, el foco est dado en los recursos, informacin que se recupera como representacin y se manipula usando mtodos estndar. Las representaciones de los recursos se interconectan mediante hipervnculos que se ubican dentro de la representacin.
Han surgido dos frameworks Java que ayudan a construir servicios web RESTful. Restlet, por Jerome Louvel y Dave Pawson es liviano e implementa conceptos como recursos, representacin, conector y tipo de medio para todo tipo de sistemas RESTful, inclusive servicios web. En el framework Restlet, tanto el cliente como el servidor son componentes. Los componentes se comunican entre s a travs de conectores. Las principales clases de este marco son la clase abstracta Uniform y su subclase concreta, Restlet, cuyas subclases son clases especializadas, entre ellas: Application, Filter, Finder, Router, and Route. Estas subclases trabajan juntas en la gestin de la autenticacin, el filtrado, la seguridad, la transformacin de datos y el enrutamiento de las solicitudes entrantes a sus respectivos recursos. La clase Resource genera la presentacin para el cliente.
Arquitectura multinivel para la construccin de servicios web RESTful Los servicios web RESTful y las aplicaciones Web dinmicas se asemejan en muchos aspectos. Suelen proporcionar datos y funciones iguales o muy similares, aunque lo hacen para distintos tipos de clientes. Por ejemplo, un sitio Web de un catlogo de comercio electrnico en lnea proporciona una interfaz de navegador para que los usuarios puedan buscar y ver productos para luego pedirlos. Sera til que este sitio tambin brindase servicios web para que las empresas, los minoristas y hasta los particulares pudieran realizar pedidos de manera automtica. Los servicios web pueden beneficiarse con la separacin de responsabilidades inherente a la arquitectura multinivel de la misma manera que lo hacen las aplicaciones Web ms dinmicas. Los datos y la lgica de negocios pueden compartirse entre clientes tanto automatizados como GUI. Las nicas diferencias estarn dadas en la naturaleza del cliente y la capa Presentation (presentacin) del nivel medio. Adems, la separacin entre la lgica de negocios y el acceso a los datos posibilita la independencia de las bases de datos y proporciona la capacidad de complementacin que permite el uso de diversos tipos de almacenamiento de datos
REST hace que los desarrolladores usen los mtodos HTTP explcitamente de manera que resulte consistente con la definicin del protocolo. Este principio de diseo bsico establece una asociacin uno-a-uno entre las operaciones de crear, leer, actualizar y borrar y los mtodos HTTP. De acuerdo a esta asociacin:
Se usa POST para crear un recurso en el servidor Se usa GET para obtener un recurso Se usa PUT para cambiar el estado de un recurso o actualizarlo Se usa DELETE para eliminar un recurso
Los servicios web REST necesitan escalar para poder satisfacer una demanda en constante crecimiento. Se usan clusters de servidores con balanceadores de carga y alta disponibilidad, proxies, y gateways de manera de conformar una topologa serviciable, que permita transferir peticiones de un equipo a otro para disminuir el tiempo total de respuesta de una invocacin al servicio web. El uso de servidores intermedios para mejorar la escalabilidad hace necesario que los clientes de servicios web REST enven peticiones completas e independientes; es decir, se deben enviar peticiones que incluyan todos los datos necesarios para cumplir el pedido, de manera que los componentes en los servidores intermedios puedan redireccionar y gestionar la carga sin mantener el estado localmente entre las peticiones.
Una peticin completa e independiente hace que el servidor no tenga que recuperar ninguna informacin de contexto o estado al procesar la peticin. Una aplicacin o cliente de servicio web REST debe incluir dentro del encabezado y del cuerpo HTTP de la peticin todos los parmetros, contexto y datos que necesita el servidor para generar la respuesta. De esta manera, el no mantener estado mejora el rendimiento de los servicios web y simplifica el diseo e implementacin de los componentes del servidor, ya que la ausencia de estado en el servidor elimina la necesidad de sincronizar los datos de la sesin con una aplicacin externa.
Los denominados clientes automatizados: Java; scripts de distintos lenguajes como Python, Perl, Ruby, PHP; y herramientas de la lnea de comandos como Curl. Tambin pertenecen a este grupo los Ajax, Flash, JavaFX, GWT, blogs y wikis que se ejecutan dentro del navegador y actan como consumidores del servicio web RESTful, debido a que lo hacen de manera automatizada y en representacin del usuario. Los clientes de servicios web envan solicitudes HTTP al Resource Request Handler en el nivel Web. Las solicitudes sin estado de los clientes contienen la informacin de mtodos en el encabezamiento, a saber: POST, GET, PUT y DELETE y se mapearn hacia las operaciones correspondientes de los recursos que se encuentran en el Resource Request Handler. Cada solicitud contiene toda la informacin necesaria, incluso las credenciales que permiten al Resource Request Handler procesar la solicitud.
Conclusin:
Los servicios de Web RESTful, es un trmino que cada programador debera conocer antes de desarrollar una aplicacin web. Ya que como su nombre lo dice es el estilo de arquitectura para sistemas en red. La mayora de las personas que desarrollan sistemas conocen el trmino del protocolo http, sabemos que funciona de la siguiente forma: El cliente hace una peticin al servidor y este hace vez le devuelve una respuesta. Sin embargo algo que pocos conocemos incluyndome a mi es como funciona la arquitectura de este protocolo. Por lo que eventualmente desarrollamos la aplicacin sin comprender la arquitectura de http. RESTful nos ayuda a comprender un poco esta arquitectura. Anteriormente con la arquitectura SOAP el focus se mantena en los mtodos, sin embargo ahora con REST el focus lo mantienen los recursos. Estos pueden ser cualquier cosa como texto, imgenes, videos, sonido, etc. Actualmente muy pocos desarrolladores utilizan REST, ya que la programacin web esta diseada para que los usuarios o humanos comprendan el sistema y no las maquinas. Si los sistemas se realizaran de tal forma que tanto los humanos como las maquinas comprendiesen el sistema ayudaran a que el sistema fuese ms til. Ya que as las maquinas podran comunicarse. HTTP hace uso de cuatro mtodos o verbos para su utilizacin con este mtodo los cuales son: GET: obtener un recurso POST: crear un recurso. PUT: actualizar un recurso. DELETE: eliminar un recurso.
Si bien REST es una metodologa un tanto compleja, vale la pena comprenderla, ya que esto brindara mayor usabilidad a nuestros sistemas.
Bibliografa:
http://stackoverflow.com/questions/671118/what-exactly-is-restful-programming http://www.ibm.com/developerworks/webservices/library/ws-restful/ http://www.oracle.com/technetwork/articles/javase/index-137171.html