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.