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)

Ejemplos de app monolítica vs microservicio

 

Caso de estudio: Aplicación para gestión de viajes

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.".

Made with Slides.com