introduccion a los servicios web rest

68
Introducción a Servicios Web David J. Brenes Martínez Desarrollador en Grupo Índigo Estructura de una aplicación ¿Cómo se comunican las aplicaciones? HTTP como protocolo de transporte XML-RPC SOAP REST Conclusiones Créditos y Licencia Introducción a Servicios Web David J. Brenes Martínez Desarrollador en Grupo Índigo Curso de Extensión Universitaria Desarrollo de aplicaciones web mediante servicios web y APIs abiertas Universidad de Oviedo 2009/07/20

Upload: david-j-brenes

Post on 20-Jan-2015

12.305 views

Category:

Education


3 download

DESCRIPTION

En estas transparencias se hace un repaso a las ventajas de la computación distribuida y a las distintas iniciativas de Servicios Web, para terminar en los servicios de tipo REST. Estas transparencias son la introducción a las transparencias sobre consumo de Servicios Web REST en PHP (http://www.slideshare.net/brenes/rest-en-php). Usado en el Curso de Extensión Universitaria "Desarrollo de aplicaciones web mediante servicios web y APIs abiertas" de la Universidad de Oviedo: http://directo.uniovi.es/postgrado/cabecera_ep.asp?Curso=2008&IdPrograma=5187

TRANSCRIPT

Page 1: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Introducción a Servicios Web

David J. Brenes MartínezDesarrollador en Grupo Índigo

Curso de Extensión UniversitariaDesarrollo de aplicaciones web mediante servicios web y APIs abiertas

Universidad de Oviedo

2009/07/20

Page 2: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

La visión del desconocimiento

La aplicación es unbloqueTodas las operacionesestán dentro de lamisma aplicación.Los datos están en lapropia aplicación.

Page 3: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Una visión un poco más realista

La aplicación estáformada porcomponentes.Algunas operacionesno pertenecen a laaplicación.Los datos están ensitios externos.

Page 4: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Una visión un poco más óptima

Componentes endiferentesordenadores.Comunicaciónmediante protocolos.Desacoplamientoentre aplicaciones.

Page 5: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Una visión un poco distribuida

Compartición dedatos entreaplicaciones.Posible medio decomunicación entreaplicaciones.

Page 6: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Una visión distribuida

Partes de laaplicación en otrosordenadores.Solicitud de servicios.Mayordesacoplamientoentre aplicaciones.

Page 7: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Una visión realmente distribuida

Componentesreaprovechables.Simplificación dedesarrollo.

Page 8: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Abundantes escenarios

Conexión a Base de DatosAplicaciones clientes-servidor.Conexiones FTP/TelnetNavegador Web

Page 9: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Ya... ¿pero cómo?

Protocolos ad-hoc.Las aplicaciones se mandan mensajes unas a otras.Los mensajes pueden ser órdenes a ejecutar.Los interlocutores deben tener la lógica para enviarmensajes.

Page 10: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Pidiendo cosas... RPC

Remote Procedure CallLlamadas a operaciones en aplicaciones remotas.Se mandan los parámetros y la orden a ejecutar. Serecibe el resultado.Hay muy diversas implementaciones

Java RMI.NET Remoting¡¡CORBA!!

Page 11: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Pidiendo cosas... RPC

Ejemplo de RPCobjeto.metodo();

El método podría ejecutarse en remoto...Normalmente se acompañan de lenguajes dedescripción

Facilidad de programaciónEstandarizaciónAutomatización

Page 12: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Formatos ad-hoc

Se ajustan el 100% al problemaPueden ser optimizados y modificadosTienen una adopción más rápida en escenariossimples

Page 13: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Formatos ad-hoc

Cada implementación empieza de ceroRequieren un proceso de diseño del protocoloRequiere la adopción del protocolo por parte del clientey el servidor

Page 14: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

¿Qué se necesita?

Estándar reconocidoMúltiples implementacionesSoporte de envío de mensajesFormato ‘simple’ que soporte cosas complejas

Page 15: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Who are you gonna call?

Page 16: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Estructurando el mensaje

XML permite representar entidadesLos mensajes consisten de entidades (Llamada amétodo, tipos, parámetro, valor de retorno, fallo. . . )El formato permite intercambiar mensajes equivalentesa llamadas de métodos

Page 17: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Estructurando el mensaje

Ejemplo de RPC<?xml version="1.0"?><methodCall><methodName>examples.getStateName</methodName><params><param><value><i4>40</i4></value></param></params></methodCall>

Page 18: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Implementaciones

PHPC++Java.NETRubyPythonObjetive-C (Mac)PerlAction Script¡Haskell!

Page 19: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Ventajas

Todo lenguaje...

Capaz de realizar peticiones HTTP puede realizar lacomunicación.Capaz de procesar XML puede procesar la respuesta.

XML-RPC = HTTP + XML

Page 20: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Más información sobre el servicio

XML-RPC describe las llamadas que se puedenrealizar.Más información podría llevar a una mayorautomatización.XML-RPC no está preparado para crecer.

Page 21: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Más información sobre el servicio

SOAP permite una mayor descripciónMás información => mayor automatización.Más información => más funcionalidad

Page 22: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Datos sobre SOAP

Evolución de XML-RPCFormato adoptado por el W3CEstá en su versión 2.0, aunque la más soportada es la1.1Forma parte del conjunto WS-*

Page 23: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Describiendo el servicio

SOAP recupera los lenguajes de descripción deservicio.Se describen tipos, operaciones, excepciones, ‘puntosde entrada’ y másLa descripción se realiza mediante un fichero WSDL

Page 24: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Describiendo el servicio

Ejemplo de WSDL<?xml version="1.0" encoding="UTF-8"?><description xmlns="http://www.w3.org/ns/wsdl"xmlns:tns="http://www.example.com/wsdl20sample"xmlns:whttp="http://www.w3.org/ns/wsdl/http"xmlns:wsoap="http://www.w3.org/ns/wsdl/soap"targetNamespace="http://www.example.com/wsdl20sample">...</description>

Page 25: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Creando tipos

En XML-RPC se pueden crear estructuras nuevasEN SOAP se permite la definición de nuevos tiposUso de XML-Schema

Page 26: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Creando tipos

Ejemplo de WSDL - Tipos<types><xs:schemaxmlns="http://www.example.com/wsdl20sample"xmlns:xs="http://www.w3.org/2001/XMLSchema" target-Namespace="http://www.example.com/wsdl20sample"><xs:element name="request"><xs:complexType><xs:attribute name="method" type="xs:string"use="required"/></xs:complexType></xs:element></xs:schema></types>

Page 27: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Definiendo la interface

Se define qué operaciones se permitenSe definen los parámetros y respuestasSe definen las excepciones

Page 28: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Definiendo la interface

Ejemplo de WSDL - Interfaces<interface name="RESTfulInterface"><fault name="ClientError" element="tns:response"/><operation name="Get"pattern="http://www.w3.org/ns/wsdl/in-out"><input messageLabel="GetMsg" element="tns:request"/><output messageLabel="SuccessfulMsg"element="tns:response"/></operation></interface>

Page 29: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Especificando la capa de transporte

SOAP permite a priori varias capas de transporte, nosolo HTTP.Se pueden especificar varios protocolos de transporte.

Page 30: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Especificando la capa de transporte

Ejemplo de WSDL - Binding

<binding name="RESTfulInterfaceHttpBinding"interface="tns:RESTfulInterface"type="http://www.w3.org/ns/wsdl/http"><operation ref="tns:Get" whttp:method="GET"/><operation ref="tns:Post" whttp:method="POST"whttp:inputSerialization="application/x-www-form-urlencoded"/><operation ref="tns:Put" whttp:method="PUT"whttp:inputSerialization="application/x-www-form-urlencoded"/><operation ref="tns:Delete" whttp:method="DELETE"/></binding>

Page 31: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Indicando el punto de entrada

Se puede indicar la URL en la que responderá elservicio webHay un solo punto de entrada para todas lasoperacionesSOAP indica en el mensaje la operación concreta quedeseamos

Page 32: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Indicando el punto de entrada

Ejemplo de WSDL - Servicicios<service name="RESTfulService"interface="tns:RESTfulInterface"><endpoint name="RESTfulServiceHttpEndpoint"binding="tns:RESTfulInterfaceHttpBinding"address="http://www.example.com/rest/"/></service>

Page 33: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

El ecosistema WS-*

Conjunto de especificaciones sobre servicios webSOAPCada especificación se especializa en un aspecto delos Servicios WebJuntos forman un conjunto bastante coherente

Page 34: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

El ecosistema WS-*

WS-Addressing: Encaminamiento de mensajes SOAP.WS-Transfer: Transferencia de recursos involucradosen WS-AdressingWS-Eventing: Suscripción a otros Servicios WebWS-Policy: Soporte de políticas (de uso, de servicio. . . )WS-Security: Aspectos de seguridadWS-BPEL y WS-Choreography: Relaciones entreservicios web para definir procesos de negocio

Page 35: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

¿Suficiente descripción?

La toma de decisiones no se automatizaNecesidad de aplicar sistemas de razonamiento einferenciaWeb Semántica + Servicios Web = Servicios WebSemánticos

Page 36: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Implementación

El desarrollo de un WSDL puede ser muy duroEl procesado de los mensajes y sus respuestas ya noes trivialExistencia de múltiples herramientas de automatización‘Necesidad’ de dichas herramientas

Page 37: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Generación de código

Ejemplos:

PHP: NuSOAPJAVA: wsdl2java.NET: Visual Studio

Page 38: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Generación de código

Se indica el fichero descriptorLa herramienta genera clases que se encargan de todala comunicación por HTTPSe crean clases que simbolizan las operaciones ytienen métodos para realizar la llamada.En lenguajes dinámicos las clases se crean al vuelo

Page 39: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Generación de WSDL

Ejemplos:

PHP: NuSOAPPHP (Symfony): ckWebServiceJAVA: java2wsdl.NET: Visual Studio

Page 40: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Generación de WSDL

Se indican las operaciones a exponerLa herramienta genera la descripción de los serviciosSe crean tipos para hacer corresponder con losremotos

Page 41: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Ventajas

Mayor descripción del servicioMás funcionalidades (especificaciones para seguridad,orquestación de servicios. . . )Herramientas que facilitan el desarrollo

Page 42: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Ventajas

Más estables y fiables (la descripción indica losdetalles sobre la comunicación)las modificaciones solo requieren ejecutar de nuevo laherramenta de generación de códigoUsados en entornos donde se requiere muy altafiabilidad

Page 43: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Back to basics

SOAP exige una descripción más detalladaSOAP da soporte a muchas funcionalidades extra(seguridad, confianza. . . )SOAP requiere herramientas adecuadas

SOAP es demasiado complejo.

Page 44: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Back to basics

HTTP es un método de transporte válidoHTTP ofrece alguna funcionalidad extra (HTTPS paraconexiones seguras)HTTP dispone de diversos ‘verbos’ para distintasacciones (GET, POST, PUT. . . )

Page 45: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Filosofía REST

Las peticiones se hacen a recursos, no a métodosNo es ‘dame los datos del alumno 1’ sino ‘acceder alalumno 1’

Cada recurso equivale a un punto de entrada para elservicio web

SOAP disponía de 1 punto de accesoLos métodos que se pueden invocar son los delestándar HTTP

Para el mismo punto de acceso (recurso) se puedenejecutar distintas acciones

Está basado en HTTP

Page 46: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Filosofía REST

Concepto publicado por Roy Fielding en su tesis doctoral.

REST enables intermediate processing by constrainingmessages to be self-descriptive: interaction is statelessbetween requests, standard methods and media types areused to indicate semantics and exchange information, andresponses explicitly indicate cacheability.

Page 47: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Filosofía REST

No es un estándarNo define formatosEs una manera de desarrollar servicios web

Page 48: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

REST y CRUD

En un sistema basado en métodos (RPC) hay ‘n’acciones posiblesEn un sistema basado en recursos (RES) hay ‘n’recursos, pero solo 4 acciones básicasUn recurso:

Se creaSe obtieneSe actualizaSe elimina

Page 49: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

REST y CRUD

Problema básico de gestión de datos: CRUD

CREATERETRIEVEUPDATEDELETE

Page 50: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

REST y CRUD

Problema básico de gestión de datos: CRUD => PGPD

CREATE => PUTRETRIEVE => GETUPDATE => POSTDELETE => DELETE

Page 51: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Método PUT

RFC 2616, HTTP PUTThe PUT method requests that the enclosed entity bestored under the supplied Request-URI.If the Request-URI refers to an already existing resource,the enclosed entity SHOULD be considered as a modifiedversion of the one residing on the origin server.

Page 52: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Método PUT

Page 53: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Método GET

RFC 2616, HTTP GETThe GET method means retrieve whatever information (inthe form of an entity) is identified by the Request-URI.

Page 54: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Método GET

Page 55: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Método POST

RFC 2616, HTTP POSTThe POST method is used to request that the origin serveraccept the entity enclosed in the request as a newsubordinate of the resource identified by the Request-URI inthe Request-Line.

Page 56: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Método POST

RFC 2616, HTTP POST- Annotation of existing resources;- Extending a database through an append operation.

Page 57: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Método POST

Page 58: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Método DELETE

RFC 2616, HTTP DELETEThe DELETE method requests that the origin server deletethe resource identified by the Request-URI.

Page 59: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Método DELETE

Page 60: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

REST y otros protocolos

REST no detalla formatosXML-RPC podría implementarse sobre RESTSOAP 2.0 permite crear servicios web RESTful

Page 61: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Definición del servicio

REST no habla de definición de servicioLa respuesta puede tener el formato que se quiera(XML, JSON, HTML. . . )REST no contempla el lanzamiento de excepciones

HTTP posee códigos de error para indicar problemas

Puede usarse un lenguaje de descripción sobre REST

Page 62: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Funcionalidades añadidas

Las funcionalidades están presentes en HTTP

Seguridad mediante HTTPSAutenticación mediante HTTP-AuthGestión de erroresPosibilidad de incorporar certificados digitalesManejo de sesiones en el servidor

Page 63: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Comunicación entre aplicaciones

Una aplicación aislada está muy limitada.La separación de funciones permite optimizardesarrollos y aplicacionesLa comunicación puede realizarse entre distintosordenadoresLas aplicaciones pueden comunicarse con variasaplicaciones

Page 64: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Formatos de comunicación

Un formato ad-hoc es rápido de diseñar (mal)Un formato estándar puede no ajustarse al 100%Un formato estandar cuenta con más experienciaUn formato estándar contará con implementaciónHTTP es un formato estándar de comunicaciones

Page 65: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Servicios Web

Intercambio de mensajes a través de HTTPXML-RPC: Formato básico de llamada a procedimientoremoto.SOAP: Formato RPC más elaborado y con variosestándares a su alrededorREST: Filosofía de desarrollo de Servicios Webbasada en HTTP

Page 66: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Servicios Web

Y basta de teoría por hoy

Page 67: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Créditos

Los ejemplos sobre SOAP provienen de la Wikipedia

Page 68: Introduccion a los Servicios Web Rest

Introducción aServicios Web

David J.Brenes

MartínezDesarrollador

en GrupoÍndigo

Estructura deuna aplicación

¿Cómo secomunican lasaplicaciones?

HTTP comoprotocolo detransporteXML-RPC

SOAP

REST

Conclusiones

Créditos yLicencia

Licencia

Estas transparencias se publican bajo licencia CreativeCommons y se pueden redistribuir o modificar bajo lassiguientes condiciones:

Se dé reconocimiento al autor de estas transparencias.No se use con propósitos comerciales.Se distribuya con la misma licencia.

Texto de la licencia: http://creativecommons.org/licenses/by-nc-sa/3.0/