Programación en Ambiente Web (11086)
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
REST vs SOAP
Orientación a Recursos
REST vs RPC
Problemas de definiciones
Es un estilo de diseño
Guía los aspectos de crear
y usar servicios de negocio
Se mantiene durante todo el Ciclo de Vida (Desde la concepción al desmantelamiento)
Forma de definir y proveer una infraestructura IT que permita el intercambio de datos y la participación de operaciones de negocio
Permite heterogeneidad de plataformas de sistemas operativos o lenguajes de programación
Núcleo de las actuales plataformas de servicios (Cloud Computing)
Tecnología: Web Service
Es necesario garantizar QoS al interior del servicio
Autonomía
Responsabilidad intrínseca
Pasaje de mensajes como vía única
Composición
Orquestación
Coreografía
Estándares abiertos
SOAP o REST
Mensajes autosuficientes
Promueve el acuerdo entre organizaciones sin tomar en cuenta tecnologías concretas
Interoperabilidad intrínseca
Descubrimiento
Componibilidad por arquitectura
Reusabilidad inherente
Extensibilidad
Capas de abstracción
Bajo acoplamiento
Servicio
Servicio Web
Interoperabilidad
Endpoint
Orquestación
Roles
Comunicación Persona - Aplicación
SOAP es la tecnología
mas popular históricamente
Comunicación Aplicación - Aplicación
HTTP
Body del mismo machine-firendly
¿Formatos?
Simple Object Access Protocol
HTTP como transporte
Formato XML
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...
<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
Sirve para registrar y anunciar WS
Teniendo este registro o catalogo, permite buscar WS que cumplan determinados criterios
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)
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"
Patrón cliente-servidor, como todo WS
Comunicación sin estado
Stateless
Cada petición cuenta con la cantidad de información necesaria para llevar a cabo la tarea solicitada
Cache
URI Para identificar recurso
Metodo HTTP para identificar accion
Body para representar entidad
(+ Content-Type y Accept Headers)
Estados de HTTP para entender resultado
URI ~= URL
GET: Obtener un recurso
POST: Crear un recurso
PUT: Editar o agregar un recurso
DELETE: Eliminar un recurso
Diferencias entre PUT y POST
Si POST funciona: 201 "Created" y Header Location indica URI de nuevo recurso
Retoma viejos planteos de SOA, pero con la facilidad de implementar servicios REST sencillos, de forma rápida y con muy bajo acoplamiento
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)
Caso de estudio: Aplicación para gestión de viajes
[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.".