Servicios Web C/S Flashcards
Escalabilidad Vertical vs Escalabilidad Horizontal
- Vertical: Más recursos en una misma máquina
- Horizontal: Más maquinas. Esto es fácil en arqutecturas C/S
Artquitecturas Monoliticas VS Arquitecturas C/S
- Monoliticas: Un gran servidor y terminales que se conectaban a el. Ej.: Mainframe IBM
- C/S: Los programas se realizan de forma DISTRIBUIDA entre los clientes (PC) y el/los servidores. Hay que pensar que cuando un servidor solicita servicios de otro actua como cliente. Ej.: servidor de aplicaciones solicita a servidor de BBDD info.
Tecnologías de C/S
- RPC: Remote Procedure Call. Protocolo binario sobre TCP - Lenguaje C. Desde una maquina podemos llamar a funciones de otra máquina.
- CORBA: Common Object Request Broker Architecture. Es un estandard. La parte ORB, son productos en cliente y servidor que implementan IIOP para comunicarse, sigue siendo binario.
Una parte expone sevicios y la otra la consume.
Se pueden tener aplicaciones en distintos lenguajes en cada punta. - RMI: Remote Method Invocation. Técnologia de java (jse). Parecido a CORVA pero para java.
- SOAP/WSDL (W3C): Se basan en técnologías XML
- REST: JSON sobre HTTP
Tipos de Middlewere
-
MOM (orientado a mensajes): Message Oriented Middlewere, cola de mensajes. Entrega ASINCRONA de mensajes. Apache ActiveMQ, RabbitMQ, Apache Kafka, ZeroMQ. Podemos asemejar las colas a tablas y los mensajes a filas dentro de las tablas
Desde el cliente java para lanzar a la cola de mensajes usamos JMS - RPC (llamada a procedimientos remotos)
- Monitor de transacciones (TP)
- ORB (solititud o llamadas entres objetos) CORBA
- ESB (integrador de servicios): Enterprise Server Bus. Gestiona y monitoriza los servicios de una entidad. Enrutamiento, transformación de mensajes, reglas de acceso (ACL).
- API (publicación de lógica de aplicación. REST vs SOAP)
Qué es SOA
Service Oriented Architecture
Qué es SOAP
Simple Object Access Protocol
- SOAP: W3C. Llamadas a métodos remotos sobre un unico endPoint
- WSDL: W3C. Descripcion de las operaciones del servicio en XML
- UDDI: OASIS. Registro de servicios
- WS-Security: OASIS. Firma, autenticación, cifrado. En a cabecera SOAP
- MTOM: Envio de ficheros adjunos como extensión MIME
Estructura de un xml SOAP
Con WS-Security
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Header> <dsig:Signature xmlns:dsig="http://www.w3.org/2000/09/..." id="Sample"> ... </dsig:Signature> </s:Header> <s:Body> ... <s:Fault> </s:Body> </s:Envelope>
Como mandariamos un fichero pdf grande, por ejemplo de 100 Mb, por SOAP
Lo adjuntariamos como extensión MIME al xml de la petición. MTOM
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Header> <dsig:Signature xmlns:dsig="http://www.w3.org/2000/09/..." id="Sample"> ... </dsig:Signature> </s:Header> <s:Body> ... <fichero> boundary-alskdfjie </fichero> </s:Body> </s:Envelope> \+ MIME boundary-alskdfjie FICHERO pdf 100Mb boundary-alskdfjie
Como mandariamos un error por SOAP
Con la etiqueta < fault> dentro del body
<?xml version = '1.0' encoding = 'UTF-8'?> <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Body> <s:Fault> <faultcode xsi:type = "xsd:string">SOAP-ENV:Client</faultcode> <faultstring xsi:type = "xsd:string"> Failed to locate method (ValidateCreditCard) in class (examplesCreditCard) at /usr/local/ActivePerl-5.6/lib/site_perl/5.6.0/SOAP/Lite.pm line 1555. </faultstring> </s:Fault> </s:Body> </s:Envelope>
NOTA: Existe otra etiqueta para más detalles < detail>.
NOTA: En 1.2 faultString –> Reason
Estructura de WSDL
Define como es la interface del servicio web.
- Type
- Message 1.1
- PortType/Interface: Definición de operaciones que exponemos
- Operation: Operación concreta
- Iput/output: Parametros de entrada y return
- Operation: Operación concreta
- Bindings: protocolo de transporte sobre el que vamos a mandar las llamadas SOAP. Tipicamente http.
- Service
- Port/Endpoint: es el dominio donde se reciben las peticiones del WS
Motores/proveedores de WS SOAP
- En JAVA –> API JAX-WS y Proveedores –> AXIS, CXF, JBossWS, Metro, Axis2
- En .NET –> ASP.NET ASMX, WSE y WCF
Que es y como se usa wsimport de Java
Es una herramienta del jdk que nos permite generar el código de clientes WS a partir de su WSDL.
Arquitectura de Servicos REST
- REpresentational State Transfer
- Nace de una tesis doctoral (no es un estándar)
- Orientado a recursos (no a operaciones como SOAP) mediante URI’s (multiples endpoints al contrario que SOAP)
- Enfoque Stateless
- Los verbos HTTP ofrecen semántica CRUD sobre los recursos. Create, Read, Update and Delete
- La técnica HATEOAS nos permite “navegación” entre servicios/recursos
- Las tecnologías más utilizadas para la seguridad son: OAuth2, OpenID y JWT
- Para documentar los servicios –> Swagger/OpenAPI o WSDL 2.0
Operaciones REST
- GET
- POST
- PUT
- DELETE
Motores/proveedores de WS REST
- En JAVA –> API JAX-RS y Proveedores –> Restlet, Jersey, Resteasy, CXF
- En .NET –> ASP.NET Web API
¿Qué es la técnica HATEOAS?
La técnica HATEOAS nos permite “navegación” entre
servicios/recursos.
Ej.: Pedimos un departamento y si queremos empleados/proyectos/etc los solicitamos navegando dentro del departamento. Estos links de navegación nos los provee la respuesta
HTTP/1.1 200 OK Content-Type: application/vnd.acme.account+json Content-Length: ... { "account": { "account_number": 12345, "balance": { "currency": "usd", "value": 100.00 }, "links": { "deposit": "/accounts/12345/deposit", "withdraw": "/accounts/12345/withdraw", "transfer": "/accounts/12345/transfer", "close": "/accounts/12345/close" } } }
En cuanto a los códigos de respuesta en API REST
Usamos los códigos de respuesta HTTP: 200’s, 300’s, 400’s, 500’s
¿Qué es JWT (JSON Web Token)?
Mecanismo de seguridad REST.
- El usuario manda las credenciales
- El servidor manda un JWT. Se compone de tres partes en json. Header, Payload, Signature. En el Payload tenemos los Claim, que son campos estandarizados por IANA.
- El token viaja en la cabecera HTTP en ‘Authorization: Bearer + JWTGenerado’
¿Qué es GraphQL?
- Tecnología de Facebook (no es un estándar)
- Volvemos a tener un único endpoint como en SOAP. Se manda un json con query o mutation a un solo dominio.
- La clave es que cada cliente puede enviar una petición con los datos que realmente necesita
- Existen Types (modelo de información), Queries (consultas, get en rest) y Mutations (modificaciones, push,put, delete en rest)
- Se necesitan productos para procesar/construir estas llamadas tanto en cliente (ej. Apollo-Client en JS) como en servidor (ej. Lighthouse en PHP)
¿Qué es gRPC?
Binario sobre HTTP/2, lo usa Kubernettes
¿Qué es Apache Thrift?
Binario
Cuál de las siguientes afirmaciones sobre REST es FALSA:
a) RESTes el acrónimo de Representational State Transfer.
b) Los objetos en REST siempre se manipulan a partir de la URI.
c) URI son las siglas de Unique Resource Identifier.
d) Utiliza un protocolo cliente/servidor sin estado.
c) URI son las siglas de Unique Resource Identifier.
URI —del inglés Uniform Resource Identifier
Señale cuál es un estándar OASIS que define los mecanismos para establecer y compartir contextos de seguridad, y para obtener claves de contextos de seguridad:
a) WS-Addressing
b) WS-Federation
c) WS-SecureConversation
d) WS-Policy
c) WS-SecureConversation
Señale la afirmación correcta con respecto a WSIL:
a) Es un método altemativo al descubrimiento de servicios Web.
b) Define el modelo de programación y la arquitectura de ejecución para desplegar y buscar servicios Web en el entorno Java EE.
c) Define un modo de publicar y encontrar información sobre servicios Web.
d) Es una organización diseñada para promover la interoperatividad de servicios Web entre plataformas, sistemas operativos y lenguajes de programación.
a) Es un método altemativo al descubrimiento de servicios Web.
¿Cuál NO es una característica de los servicios REST?
a) Utiliza métodos del protocolo HTTP de forma explicita.
b) La solicitud no requiere que el servidor recupere información de estado de la aplicación.
c) Son admitidos los formatos XML y el JSON para la transmisión o recepción de datos.
d) Usa la especificación UDDI para publicar y encontrar
d) Usa la especificación UDDI para publicar y encontrar.
Esto es de SOAP
En las arquitecturas de microservicios las funcionalidades se implementan mediante la composición de distintos microservicios. Existen dos estrategias para gestionar esta composición, que son:
a) Coreografía y orquestación.
b) Coreografía y coordinación.
c) Coordinación y orquestación.
d) Gestión y orquestación.
a) Coreografía y orquestación.
En un documento WSDL, ¿cómo se denomina la operación que describe un servicio en el que se recibe un mensaje pero no se responde?
a) One-way.
b) Notification.
c) Request-no response.
d) Pelition-no response.
a) One-way.
De concurso
En cuanto a la tecnologia REST utilizada para la construcción de sistemas con arquitectura orientada a servicios, indique la opción INCORRECTA:
a) Realiza el transporte de datos con los métodos proporcionados por HTTP, como GET, POST, PUT, DELETE o PATCH
b) Utiliza los códigos de respuesta nativos de HTTP como 200, 204, 404 6 409
c) En un sistema REST cada recurso es direccionable a través de su URI.
d) A pesar de la gran variedad de tipos de datos que podemos mandar con REST, no es posible utiizar el formato XML.
d) A pesar de la gran variedad de tipos de datos que podemos mandar con REST, no es posible utiizar el formato XML.
No es típico, pero se pueden mandar datos en XML
¿Cuál de los siguientes NO es un elemento en el esqueleto base de un mensaje SOAP 1.27
a) Envelope
b) Header
c) Body
d) Title
d) Title
En su organismo se está plenteando el uso de servicios web y arquitecturas REST. En este último tipo de arquitecturas, si recibimos una respuesta HTTP con un código de estado 200, ¿qué significa?
a) Que la petición ha sido completada correctamente.
b) Que el recurso de la petición no ha sido encontrado.
c) Que la petición contiene una sintaxis incorrecta 0 no puede procesarse
d) Que el servidor ha fallado.
a) Que la petición ha sido completada correctamente.
En un documento WSDL 2.0, el elemento < binding> especifica:
a) el conjunto de puertos y dirección de los mismos.
b) los protocolos de comunicación usados.
c) los tipos de datos usados en los mensajes.
d) las operaciones permitidas.
b) los protocolos de comunicación usados.
Para la construcción de servicios web en Java podria usar la API Java denominada:
a) JPA
b) Java DOM
c) SOAP
d) JAX-WS
d) JAX-WS
Diferencia entre un MOM y un ESB
- MOM: Es un middlewere asincrono y orientado a mensajes y topic (queue)
Productos: ZeroMQ, RabbitMQ, ActiveMQ, Kafka
NOTA: API Java para trabajar contra un gestor de colas –> JMS - ESB: Gestiona servicios.
- monitoriza servicios
- podemos definir reglas de transformación de datos.
- Orquesta servicios (los conecta en el contexto de un proces de negocio que especificamos con BPEL). Dentro de proceso de negocio.
- Routing, reglas de encaminamiento (integración entre servicios). Se conectan servicios.
Productos: Mule, Fuse, ServiceMix, Microsoft Biztalk, W2S0
API de Java para desarrollar servicios Web REST
JAX- RS (paquete javax.ws.rs)
- @Path(“uri”)
- @GET, @PUT, @DELETE,….
NOTA: Proveedores//Implementadores del API JAX-RS Jersey , Resteasy, Restlet, CXF
API de Java para desarrollar servicios Web SOAP
JAX-WS (javax.jws, javax.xml.ws )
- @WebService
- @WebMethod
- @WebParam
- @WebResult
NOTA: Proveedores/Implementadores del API JAX-WS –> Metro, CXF, AXIS2
NOTA: En .NET existen 3 formas de hacer web services –> ASMX (ASP.Net), WSE (seguridad) y WCF
¿Qué es un endpoint en SOAP?
Una URL (definidad en el WSDL) donde los clientes tienen que enviar las peticiones SOAP (operaciones)
Mecanismo de envío de ficheros en SOAP
Metodo MTOM (w3c) –> Se basa en usar la tecnica MIME para los adjuntos (alias=XOP)
Mecanismo de notificación de errores SOAP
El servidor nos envia un SOAP-Fault
v1.1 .... <envelop> < body> < fault> < faultcode /> < faultstring /> < detail /> < /fault> </ body> </ envelop> v1.2 .... <envelop> < body> < fault> < code /> < reason /> < detail /> < /fault> </ body> </ envelop>
Ventaja principal de gRCP
Que es un protocolo binario sobre HTTP/2 (binario tambíen)
NOTA: El lenguaje IDL (Interface Definition Language) usado en gRPC se llama “protocol buffer”
¿Qué es una mutation de GraphQL?
Es el mensaje que le mandamos al servidor cuando queremos operaciones de tipo actualización, creacion o borrado. Las que no son query
¿Cómo sería la llamada a un servicio REST de consulta de los datos del empleado con identificador 1234?
GET /empleados/1234
Utilidad de OpenAPI
Es el lenguaje de tipo IDL para definir los servicios REST que ofrecemos.
NOTA: Definición –> verbo HTTP, path/uri de los recursos, los códigos HTTP de status (resultado)