res - transferencia de estado representacional

13
Integrantes: o Lizzette Betancourt o Robert Caraguay Tutor: o Ing. Luis Jumbo Fecha: o 17 / 11/ 2014 Componente: o Arquitectura de Aplicaciones OCTUBRE 2014 – FEBRERO 2015 Universidad Técnica Particular de Loja REST Representational State Transfe

Upload: robert-caraguay

Post on 19-Jul-2015

183 views

Category:

Software


6 download

TRANSCRIPT

Page 1: RES - Transferencia de Estado Representacional

Integrantes:

o Lizzette Betancourt

o Robert Caraguay

Tutor:

o Ing. Luis Jumbo

Fecha:

o 17 / 11/ 2014

Componente:

o Arquitectura de Aplicaciones

OCTUBRE 2014 – FEBRERO 2015

Universidad Técnica Particular de Loja

REST

Representational State Transfe

Page 2: RES - Transferencia de Estado Representacional

INTRODUCCION

Los servicios web son Apis Web que son accesibles desde las Web, dentro de

una red y son ejecutadas desde un sistema. Estos servicios tienen diferentes

tipos de sistemas, entre ellos REST, éstos se comunican por mensajes XML que

cumplen con el estándar SOAP.

La transferencia de estado representacional o Representational State Transfer

(REST), es una técnica de arquitectura de software en red para sistemas

distribuidos que aprovecha de las tecnologías y protocolos de las World Wide

Web (www).

Cabe destacar que REST no es una especificación ni un estándar. Este es solo

una técnica de arquitectura que está basada en varios estándares, algunos de

ellos son:

HTTP

URL

Recursos XML

Dicho servicio web REST, posee una serie de elementos que se los detalla a

continuación.

Identificación de recursos: Los recursos deben ser totalmente accesibles,

es decir deben poseer una URI de identificación, que es única

Manipulación de recursos: Uso de recursos HTTP que son accedidos, para

implementarlos mediante CRUD (Get, post, put delete).

Metadatos para describir nuevos recursos: Usa métodos o tecnologías

estándar como HTTP, URI, XML, RDF, JSON, ETC

Comunicación sin estado: no guardas las transacciones entre el cliente y

servidor.

Page 3: RES - Transferencia de Estado Representacional

HISTORIA

La tecnología REST se originó en el año 2000, gracias al

tema de tesis doctoral sobre la web escrita por de Roy

Fielding, desarrollada en la Universidad de California en

Irvine, en conjunto con el Consorcio World Wide Web (W3C)

en paralelo con HTTP 1.1.

Fielding desarrolló este tipo de arquitectura de desarrollo web, para identificar

los problemas que existían en la web, y así poder comparar soluciones

alternativas a estos inconvenientes y por consiguiente certificar que las

extensiones de protocolo no vulnerarían las restricciones esenciales que hacen

que la web sea exitosa. La World Wide Web (www) representa la mayor

implementación de un sistema conforme al estilo arquitectónico REST.

Por estas razones los autores describen al término REST, como cualquier

interfaz simple que se utiliza para la trasmisión de datos de un dominio específico

a través del protocolo HTTP, sin requerir de capas externas como mensajería o

seguimiento de sesión.

Transferencia de estado representacional, fue desarrollado para que consuma

menos software del lado del cliente, es decir un navegador estándar puede

acceder a cualquier aplicación y a sus recursos de datos.

Page 4: RES - Transferencia de Estado Representacional

Overview

La transferencia de estado representacional o Representational State Transfer

(REST), es una técnica arquitectónica para el diseño de aplicaciones en la red.

Dicho término se originó por el Doctor Roy Fielding en el año 2000, mediante su

tesis doctoral Estilos Arquitecturales y el Diseño de Arquitecturas de Software

basadas en Red, en el cual definió REST como un enfoque para desarrollar

servicios web, y para describir los principios de redes que caracteriza la World

Wide Web.

Rest fue ganando espacio en la web como una opción más simple a SOAP

(Simple Object Access Protocol) y a los servicios Web basados en el lenguaje

de descripción de servicios web WSDL. El impacto de rest fue demasiado

grande que logró desplazar a SOAP y a interfaces basadas en WSDL, por su

manera fácil de utilizar. Rest es orientado a recursos, más no a métodos.

Objetivos

Dentro de esta arquitectura se tiene varios objetivos que deben ser cumplidos.

Escalabilidad de los componentes de interacción:

Generalidad de interfaces: cualquier cliente puede interactuar con algún

servidor http, sin que se haga una configuración.

Puesta en funcionamiento independiente: los servidores antiguos o

viejos tienen que ser capaces de entenderse con cliente nuevo y

viceversa.

Compatibilidad con componentes intermedios: permite reducir la latencia

de interacción y mejorar la seguridad.

Elementos de la Arquitectura REST

Elementos de datos

Rest define varios principios arquitectónicos o características por los que se

diseñan los servicios web, se clasifican en:

Page 5: RES - Transferencia de Estado Representacional

Identificación de recursos

Todo recurso es identificado de manera única como en HTTP, que es un

protocolo que se basa en URIs (Uniform Resource Identifier), ésto es lo que

permite identificar un recurso. Un recurso es considerado como una entidad que

representa un concepto de negocio que puede ser accedido de manera pública,

éste posee un estado interno que no puede ser accedido desde el exterior, a lo

que se puede acceder es a las representaciones (xml, json, rdf), dicha de otra

manera se puede acceder al formato de datos que contenga este estado, para

la fácil transferencia entre el cliente y el servidor.

Manipulación de recursos

Todos los recursos comparten una interfaz uniforme formada por un conjunto

de operaciones, éstas nos permiten manipular el estado público de un recurso.

Los métodos más importantes de http son:

Get: Obtener la representación de un recurso.(read)

Post: Crear un nuevo recurso (create)

Put: Actualizar un recurso (update)

Delete: eliminar un recurso.(delete)

Éstos suelen ser confundidos con las operaciones de Base de Datos, CRUD:

create, read, update, delete. Ya que se dice que rest es crud, implementado en

la web.

Metadatos para describir nuevos recursos

Varios de los recursos de los que se habla, tienen diversos formatos, entre

ellos,html, xml, pdf, json, rdf entre otros.

Comunicación sin estado:

Rest exige que el estado sea transformado en estado del recurso lógico o

físico, y sea mantenido en el cliente. El servidor no debe guardar el estado de

la comunicación que tiene con cualquiera de los clientes en cada una de sus

peticiones.

A esta razón se la llama escalabilidad, ya que el número de clientes que se

comunican o interactúan con el servidor estaría afectado profundamente si, se

tuviera que mantener el estado del cliente.

Conector

Es un mecanismo en el que se hace posible la comunicación y coordinación

entre componentes, éste no tiene que almacenar cualquier información del

estado, esta comunicación puede ser en paralelo.

Page 6: RES - Transferencia de Estado Representacional

Cliente /servidor:

Es el que inicia la comunicación a través de una petición,

mientras que el servidor es el que responde a dichas peticiones

para dar acceso a los usuarios.

Cache:

Puede ser utilizado por un cliente para evitar que la comunicación

de red, está repetida, o por un servidor para evitar la repetición

del proceso que genera una respuesta

Componentes

Producen un conjunto de métodos definidos en los recursos, para así capturar el

estado actual, de dicho recurso.

Estos componentes se clasifican en:

Agente usuario: usa un conector de tipo cliente, para poder iniciar la

petición y ser el receptor de la misma.

Servidor: usa un conector de tipo servidor, que realiza la representación

de sus recursos y debe ser el último receptor de las peticiones, en las que

se solicite modificar valores de los recursos de la misma.

Gateway: es un sistema intermedio que lo proporciona la red, se lo usa

para dar el mejor funcionamiento y seguridad a la transmisión de datos.

Proxy: es un sistema intermedio que el cliente lo selecciona, para cumplir

con la encapsulación de la interfaz de otros servicios, y también para dar

mejor funcionamiento y seguridad a la transmisión de datos.

La diferencia entre Gateway y Proxy, es que el cliente es el encargado de ver

cuándo va a usar un proxy.

Restricciones de la Arquitectura Rest

Para poder llevar a cabo los objetivos antes mencionados, se debe cumplir con

las siguientes restricciones.

Cliente / Servidor:

Este promueve dos componente, la lógica de negocios que es parte del Servidor

y la lógica de presentación a cargo del cliente; esto permite que las

modificaciones se hagan de manera independiente en la capa de presentación,

no puede afectar la lógica de negocio.

Sin estado (Stateless)

Estos servicios web no mantienen estado asociado a un cliente, por lo que

cada petición que se realiza es independientemente de la siguiente petición.

Page 7: RES - Transferencia de Estado Representacional

Cacheable:

Es decir que cuando se realiza un a petición al servidor, el resto de peticiones

pueden hacer uso de las de la cache, si lo necesitan.

Interfaz uniforme

Dicha interfaz está diseñada para tener el trabajo eficiente en cuanto a

transferencias de datos de hipermedios, ya que está optimizando para la mayor

parte de la Web.

Sistemas de capas.

Permiten mejorar la conducta de la escalabilidad en internet, permitiendo tener

una arquitectura con componentes separados, esto para poder limitar el

comportamiento de diversos componentes, ya que se puede ver o modificar el

contenido de una capa, sin afectar a la otra.

Código bajo demanda

Esta restricción es opcional, ya que permite a los clientes poder descargar el y

ejecutar el código fuente a manera de scripts o applets. También posee una

desventaja que es que reduce la visibilidad y puede influir en la seguridad del

sistema

Rest y XML

Rest como está orientado a los sistemas distribuidos de hipermedia, tiene la

necesidad de crear sus representaciones a partir de recursos como lo son

videos, sonidos, html, etc., Para esto en sus comienzos apostó por XML, como

una de las soluciones para la codificación de representaciones que pueden ser

codificadas o no están estandarizadas.

XSLT con REST

XSLT es un lenguaje de estilo utilizado para transformar documentos XML en

documentos XHTML o de otros documentos basados en texto. A Través la

combinación de la interfaz REST con XSLT, es posible construir formas

respectivamente simples para recuperar datos XML desde el servicio web y

presentarlos en el navegador usando HTML.

Page 8: RES - Transferencia de Estado Representacional

Construcción de la XSLT

Existen dos pasos para inicializar los datos XML utilizando REST y XLST, el

primer consiste en la construcción del archivo XLST, que prácticamente permite

convertir los datos del XML en otro formato como HTML. La segunda forma

consiste en la recuperación de los datos desde el servidor web y la aplicación.

Ejemplo:

<Font face = "Arial, Helvetica, sans-serif" size = "2"> Identificador Único: <xsl:

value-of select = "@ uid" /> <br/> </ font>

<Font face = "Arial, Helvetica, sans-serif" size = "2"> Elemento Code: <xsl: value-

of select = "@ speciesCode" /> <br/> </ font>

<Font face = "Arial, Helvetica, sans-serif" size = "2">

Taxonomía informal:

<Xsl: for-each select = "// ns: taxonomyName">

<Xsl: if test = "! Posición () = 1">

<Xsl: text> - </ xsl: text>

</ Xsl: if>

<Xsl: value-of select = "@ nombre" />

</ Xsl: for-each>

</ Font>

Representación de la salida

El procesamiento de XSLT no es más que XSLT + XML que da como resultado

la salida del documento. Una vez visto como construir un XSLT, ahora se tratará

de ver cómo recuperar el documento XML desde el servidor web, utilizando la

interfaz basada en REST. Los parámetros ingresan en la interfaz establecida en

REST, en la misma forma que está en la página web o también se puede añadir

al final de la URL o al inicio de la cabecera http un POST. Una vez que los dos

parámetros se rellenan, la URL a continuación, se puede enviar mediante

programación o simplemente ingresando en el navegador donde se puede

observar los datos.

Page 9: RES - Transferencia de Estado Representacional

Tecnología y/o Framework

Tecnología Descripción

Ruby on Rails Este framework ofrece el módulo Active Resource, que

proporciona la infraestructura necesaria para crear de

manera sencilla recursos REST, el cual está presente en las

últimas versiones, desplazando a otros modelos como

SOAP.

.NET .NET permite el consumo del api de Bing Maps Servicios

REST. Estos son un conjunto de servicios web REST full

que permiten la recolección de recursos a través de una url

y de los métodos get y post de http. Este enfoque se utiliza

en tecnologías de Windows Store y Windows Presentation

Foundation (WPF).

Blogsfera

(blogs)

Los blogs están basados en REST, dado que implica

descargar ficheros XML (en formato RSS o Atom) que

contienen listas de enlaces a otros recursos.

Amazon

Simple

Storage

Service

(Amazon S3)

Ofrece su api REST a sus desarrolladores para que hagan

uso de su servicio web que permite almacenar datos en la

nube. Describe las diversas operaciones como: petición y

respuesta estructuras relacionadas, y códigos de error.

"Seniors

Canada On-

line"

El gobierno de Canadá ofrece una interfaz REST, la cual

proporcionar información amalgamada para los jubilados de

todos los niveles de gobierno.

“La aplicación REST comparte su base de datos y aplicación

de la lógica con el sitio web HTML, por lo que la parte XML

es sólo una vista fina escrita en la parte superior de todo lo

que, en paralelo con la vista HTML” (David Megginson,

2005).

Bloglines Actúa como una caché de RSS, resolviendo así el problema

de ancho de banda RSS. El Bloglines Web Services se

puede utilizar para desarrollar notificadores más avanzados.

Yahoo

Developed

Yahoo ofrece un API en REST a los desarrolladores, con la

finalidad de desarrollar y optimizar sus aplicaciones

(PlaceFinder, Flickr, Tumblr, etc.).

Page 10: RES - Transferencia de Estado Representacional

WCF Data

Services 4.5

de Microsoft

Es un componente de .NET para crear servicios que utilizan

el protocolo de datos abierto (OData), el que permite

consumir datos a través de Internet o intranet, a través del

uso de transferencia de estado representacional (REST).

Estos datos abiertos exponen los datos como recursos que

son direccionables por URI. Los cuales acceden a los datos

y cambiar utilizando los verbos HTTP estándar de GET,

PUT, POST y DELETE.

Restlet - java Es un marco de la API REST web líder para Java. Su API

de Java está disponible en ambos lados de cliente y

servidor, en seis ediciones compatibles: Java SE, Java EE,

Android, GAE, GWT y OSGi.

Django REST Contiene un gran conjunto de herramientas de gran alcance

y hace que sea flexible y fácil de con construir APIs Web.

Para poder hacer uso de este framework, se requiere de lo

siguiente:

Python

Django

Zend

Framework

Es un Framework que ofrece capacidades de cliente y

servidor. El componente del servidor posee funciones y

clases que utilizan un significativo y sencillo formato XML,

es decir al momentos que se accede a estos servicios a

través del cliente, es posible recuperar fácilmente los datos

de retorno de la llamada remota.

El servicio del servidor es Zend_Rest_Server y el del cliente

Zend_Rest_Client_Response.

Slim Este micro framework de PHP permite y ayuda a la creación

rápida de aplicaciones web (RESt) simple pero poderosa.

Permite desde el router asociar cierto pedido HTTP con

funciones anónimas.

Bullet PHP

Micro-

Framework

Es un micro framework con PHP, que permite crear con

facilidad api RESt y aplicaciones web, que cumplen con los

requisitos especificos de http. Este es un recurso orientado

a URI que viene pre-cargado con las funciones de HTTP.

Maneja un segmento a la ruta de acceso a la vez, y ejecuta

la devolución de llamada antes de procesar el siguiente

segmento.

Limonade

Es un micro marco de PHP para la creación de aplicaciones

web, de manera rápida y sencilla. Su principal objetivo es

Page 11: RES - Transferencia de Estado Representacional

ser simple, ligero y extremadamente flexible para los

desarrolladores.

Limonade es sumamente fácil de aprender y utilizar, le

ofrece al desarrollador todo lo que se puede usar en marco

moderno REST.

Fat-Free

Framework

Es de uso gratuito y ayuda a que la creación de un sitio web

sea fácil, posee el mismo poder y variedad que otros

herramientas y librerías como Javascript. Facilita la escritura

en programas PHP, dando un mejor aspecto, resultando

mucho más fácil de entender el código del programa,

obteniendo muy bueno resultados.

Silex Es un framework PHP, está construida sobre Symfony2 y

Pimple e inspirado por Sinatra. Ofrece la construcción de

aplicaciones web de un solo archivo simple. Pretende ser:

Conciso: exponiendo una API intuitiva y concisa.

Extensible: posee un sistema de extensión en torno a

micro-servicio con la finalidad de enlazar las

bibliotecas de terceros.

Comprobable: utiliza Symfony2 de HttpKernel para la

petición y respuesta. Además respeta la

especificación HTTP.

Phalcon “Nuestra misión es darle una herramienta avanzada para el

desarrollo de sitios web y aplicaciones sin tener que

preocuparse por el rendimiento marco” (Phalcon, s.f.).

Es de código abierto para PHP 5 con extensión C,

optimizado para tener un alto rendimiento. Los

desarrolladores no necesitan saber C, ya que la

funcionalidad se presenta como clases PHP.

Utiliza los métodos HTTP:

GETa recuperar y buscar datos

POST para agregar datos

PUT para actualizar los datos

DELETE para eliminar los datos

Page 12: RES - Transferencia de Estado Representacional

Conclusiones

Rest es una técnica arquitectónica para producir entornos web, no es una

especificación o un estándar, se basa en ciertos objetivos que se los debe

cumplir conjuntamente con las restricciones para que todo salga a la

perfección.

La arquitectura de Transferencia de Estado Representacional (REST) es

una técnica muy utilizada actualmente en el desarrollo de aplicaciones

web, debido a que posee las operaciones del protocolo HTTP, es fácil de

utilizar y completa.

La arquitectura por capas permite reducir el riesgo de daño al momento

de modificar algún bloque, ya que afecta sólo a la capa en donde modifica

Al aplicar la restricción de Cache, se reduce el tiempo de espera de las

interacciones, ya que mejoran la eficiencia y escalabilidad.

En la actualidad esta técnica (REST) para el desarrollo web, posee una

gran variedad de Frameworks disponibles para poder utilizarla, los

mismos que permiten que la construcción de sistemas web sea fácil,

novedoso, y completo.

Page 13: RES - Transferencia de Estado Representacional

Bibliografía

Rusell, Kay (2007). Representational State Transfer (REST). Recuperado el

15/11/2014, de Computerworld. Sitio web:

http://www.computerworld.com/article/2552929/networking/representational-

state-transfer--rest-.html

s.a (s.f). REPRESENTATIONAL STATE TRANSFER: REST. Recuperado el

15/11/2014 desde Internet:

http://bibing.us.es/proyectos/abreproy/11247/fichero/Memoria%252F8-

Representational+State+Transfer+(REST).pdf

Amazon. (2006). REST API. Recuperado el 15/11/2014, de Amazon. Sitio web:

http://docs.aws.amazon.com/AmazonS3/latest/API/APIRest.html

Microsoft developer Network. (s.f.). Using the REST Services with .NET.

Recuperado el 15/11/2014, de Microsoft. Sitio web:

http://msdn.microsoft.com/en-us/library/jj819168.aspx

Bloglines. (s.f.). Servicios Bloglines. Recuperado el 15/11/2014, de Bloglines

Sitio web: http://www.bloglines.com/services/

Megginson, D. (2005). Grandes, de aplicación REST público: Mayores de

Canadá en línea. Recuperado el 15/11/2014, de Quoderat. Sitio web:

http://quoderat.megginson.com/2005/03/09/public-rest-application-seniors-

canada-online/

Microsoft developer Network. . (s.f.). WCF Data Services 4.5. Recuperado el

15/11/2014, de Microsoft Sitio web: http://msdn.microsoft.com/en-

us/library/cc668792.aspx

Wikipedia. (2014). Ruby on Rails. Recuperado el 15/11/2014, de Wikipedia Sitio

web: http://es.wikipedia.org/wiki/Ruby_on_Rails

Restlet. (s.f.). The Leading Web API Platform for Java. Recuperado el

15/11/2014, de Restlet Sitio web: http://restlet.com/

Bullet. (2012). Bullet PHP Micro-Framework. Recuperado el 15/11/2014, de

Bullet Sitio web: http://bulletphp.com/

Slim. (2012). Slim. Recuperado el 15/11/2014, de Slimframework Sitio web:

http://www.slimframework.com/

Django. (s.f.). Django Rest Framework. Recuperado el 15/11/2014, de Django

Rest. Sitio web: http://www.slimframework.com/