Servicios Web

Programación en Ambiente Web (11086)

Agenda

  • Web Services
  • Arquitectura Orientada a Servicios (SOA)
  • SOAP
  • REST
  • Microservicios

Web Services

Web Services

Concepto Clave: Interacción entre Procesos

Interacción vía HTTP = Web Service

¿Que se puede ocultar detrás de esta interacción?

Datos

Procesos

Web Services

REST vs SOAP

Orientación a Recursos

REST vs RPC

Problemas de definiciones

Arquitectura Orientada a Servicios SOA

SOA - Contexto

  • Complejidad creciente
  • Software monolítico y modularización
  • En SOA, Modulo = Servicio
  • Operaciones complejas y composición

SOA - Comparación

SOA - Definiciones

Es un estilo de diseño

SOA - Definiciones

Guía los aspectos de crear

y usar servicios de negocio

SOA - Definiciones

Se mantiene durante todo el Ciclo de Vida (Desde la concepción al desmantelamiento)

SOA - Definiciones

Forma de definir y proveer una infraestructura IT que permita el intercambio de datos y la participación de operaciones de negocio

SOA - Definiciones

Permite heterogeneidad de plataformas de sistemas operativos o lenguajes de programación

SOA - Caracteristicas

Núcleo de las actuales plataformas de servicios (Cloud Computing)

 

Tecnología: Web Service

SOA - Caracteristicas

Es necesario garantizar QoS al interior del servicio

 

  • Seguridad
  • Confiabilidad
  • Rendimiento
  • Capacidad Transaccional

SOA - Caracteristicas

Autonomía

Responsabilidad intrínseca

Pasaje de mensajes como vía única

Composición

SOA - Composición

Orquestación

Coreografía

SOA - Caracteristicas

Estándares abiertos

SOAP o REST

SOA - Caracteristicas

Mensajes autosuficientes

SOA - Caracteristicas

Promueve el acuerdo entre organizaciones sin tomar en cuenta tecnologías concretas

SOA - Caracteristicas

  • Variedad de vendors
  • Estándar abierto asegura tecnología agnóstica de proveedores
  • No interesa el entorno, solo los mensajes
  • Entornos propietarios pueden generar servicios abiertos

SOA - Caracteristicas

Interoperabilidad intrínseca

Descubrimiento

Componibilidad por arquitectura

SOA - Caracteristicas

Reusabilidad inherente

SOA - Caracteristicas

Extensibilidad

Capas de abstracción

Bajo acoplamiento

SOA - Terminología

Servicio

Servicio Web

Interoperabilidad

Endpoint

Orquestación

Roles

Simple Object
Access Protocol

 

SOAP

Comunicación Persona - Aplicación

SOAP es la tecnología

mas popular históricamente

Comunicación Aplicación - Aplicación

SOAP - Introducción

SOAP - Introducción

HTTP

 

Body del mismo machine-firendly

 

¿Formatos?

SOAP - Definiciones

Simple Object Access Protocol

 

HTTP como transporte

 

Formato XML

SOAP - Request

SOAP - Response

SOAP - WSDL

Permite "conocer" como

es un web service

 

Define semántica y comunicación de un WS

 

Por ejemplo: Mensajes que se aceptan; tipos de datos; etc...

SOAP - WSDL

<message name="getTermRequest">
  <part name="term" type="xs:string"/>
</message>

<message name="getTermResponse">
  <part name="value" type="xs:string"/>
</message>

<portType name="glossaryTerms">
  <operation name="getTerm">
    <input message="getTermRequest"/>
    <output message="getTermResponse"/>
  </operation>
</portType>

Source: https://www.w3schools.com/xml/xml_wsdl.asp

Ejemplo de WSDL

SOAP - UDDI

Sirve para registrar y anunciar WS

 

Teniendo este registro o catalogo, permite buscar WS que cumplan determinados criterios

SOA Y SOAP

Tener algún servicio publicado con SOAP no es tener una estrategia de SOA

 

Se necesita buenas interfaces que hayan sido bien diseñadas y evolucionen de forma coherente en el tiempo

 

Importante modelar buena capa de servicios y usar patrones adecuados (EBS por ejemplo)

Representational state transfer

 

REST

REST - Conceptos

Abstracción de los elementos arquitecturales (?)

 

Se asienta "fuerte" sobre HTTP y usa todas sus características (mas aun que la web estándar)

 

Defina ciertas restricciones para decir si un servicio cumple mas o menos con REST  (RESTful)

Se suele escuchar que es "orientado a recursos"

REST - Restricciones

Patrón cliente-servidor, como todo WS

REST - Restricciones

Comunicación sin estado

 

Stateless

 

Cada petición cuenta con la cantidad de información necesaria para llevar a cabo la tarea solicitada

 

Cache

REST - Restricciones

Interfaz uniforme

URI Para identificar recurso

 

Metodo HTTP para identificar accion

 

Body para representar entidad

(+ Content-Type y Accept Headers)

 

Estados de HTTP para entender resultado

REST - Restricciones

Interfaz uniforme

 

URI ~= URL

 

GET: Obtener un recurso

POST: Crear un recurso

PUT: Editar o agregar un recurso

DELETE: Eliminar un recurso

 

REST - Restricciones

Interfaz uniforme

Diferencias entre PUT y POST

Si POST funciona: 201 "Created" y Header Location indica URI de nuevo recurso

Ejemplo

Microservicios

Microservicios

Retoma viejos planteos de SOA, pero con la facilidad de implementar servicios REST sencillos, de forma rápida y con muy bajo acoplamiento

Microservicios

SOA y SOAP evolucionaron  a esquemas de aplicaciones "monolíticas" que hablaban sobre HTTP con otras Apps

 

SOA fue muy usado para integrar aplicaciones legacy (aplicaciones muy viejas que necesitaban exponer WS)

Referencias

[Newcomer, 2005]: Newcomer, E., & Lomow, G. (2005). Understanding SOA with Web services. Addison-Wesley.

[Dragoni, 2017]: Dragoni, N., Giallorenzo, S., Lafuente, A. L., Mazzara, M., Montesi, F., Mustafin, R., & Safina, L. (2017). Microservices: yesterday, today, and tomorrow. In Present and Ulterior Software Engineering (pp. 195-216). Springer, Cham.

[Shklar, 2009]: Shklar, L., & Rosen, R. (2009). Web application architecture (pp. 268-330). John Wiley & Sons.

[Richardson, 2008]: Richardson, L., & Ruby, S. (2008). RESTful web services. " O'Reilly Media, Inc.".

Web Services

By Tomas Delvechio

Web Services

Apuntes sobre Servicios Web, SOA, SOAP, REST

  • 1,517