Documentos de Académico
Documentos de Profesional
Documentos de Cultura
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
1
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
ÍNDICE
1. INTRODUCCIÓN 3
2. CONCEPTOS GENERALES DE LA ARQUITECTURA CLIENTE/SERVIDOR 4
2.1 PRINCIPALES CARACTERÍSTICAS 4
2.2 SEPARACIÓN DE FUNCIONES EN CAPAS 5
2.3 COMPONENTES 7
2.4 VENTAJAS DE LA ARQUITECTURA CLIENTE/SERVIDOR 7
2.5 DESVENTAJAS DE LA ARQUITECTURA CLIENTE/SERVIDOR 7
3. ARQUITECTURA DE SERVICIOS WEB 8
3.1 ARQUITECTURAS ORIENTADAS A SERVICIOS (SOA) 8
3.2 SERVICIOS WEB 9
3.3 SOAP 10
3.3.1 PARTES DE UN MENSAJE SOAP 10
3.3.2 TIPOS DE DATOS EN SOAP Y SERIALIZACIÓN 12
3.3.2.1 STRUCTS 13
3.3.2.2 ARRAYS 13
3.3.3 SOAP Y HTTP 13
3.4 UDDI 14
3.5 WSDL 15
3.5.1 WSDL: DESCRIPCIÓN DE LA INTERFAZ DEL SERVICIO 15
3.5.1.1 TIPOS 15
3.5.1.2 OPERACIONES E INTERFACES 16
3.5.2 WSDL: DESCRIPCIÓN DE LA IMPLEMENTACIÓN DEL SERVICIO 17
3.5.2.1 BINDINGS 17
3.5.2.2 SERVICIOS Y ENDPOINTS 17
3.5.3 WSDL: EL EJEMPLO COMPLETO 17
3.5.4 WSDL 2.0 Y WSDL 1.1 19
2
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
3
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
1. INTRODUCCIÓN
4
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
● El servidor presenta a todos sus clientes una interfaz única y bien definida.
● El cliente no necesita conocer la lógica del servidor, sólo su interfaz externa
(encapsulación)
● El cliente no depende de la ubicación física del servidor, ni del tipo de equipo físico en el
que se encuentra, ni de su sistema operativo (interoperabilidad)
● Los cambios en el servidor implican pocos o ningún cambio en el cliente (bajo
acoplamiento)
● Un servidor puede atender a muchos clientes al mismo tiempo y regular sus accesos a
los recursos compartidos.
● Los clientes y servidores interactúan utilizando un mecanismo de paso de mensajes. El
mensaje es el soporte para las peticiones de servicios y las respuestas.
● El código y los datos del servidor se mantienen centralizados, con lo que es menos
costoso su mantenimiento y el control de la integridad de los datos compartidos.
● Escalabilidad. Permite, sin necesidad de realizar cambios en las aplicaciones, el
crecimiento horizontal (capacidad de añadir o suprimir estaciones de trabajo que hagan
uso de la aplicación, es decir, clientes) o vertical (migración hacia servidores de mayor o
menor capacidad y velocidad o de un tipo diferente)
5
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
6
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
La diferencia entre las arquitecturas de dos y tres niveles estriba en la forma de distribución de
las tres capas de la aplicación entre el cliente y el servidor.
En una arquitectura de dos niveles hay dos opciones:
● En el cliente se alojan la lógica de presentación y la lógica de negocio, mientras que los
datos se alojan y gestionan en el servidor. Son las aplicaciones tradicionales que
requieren de una instalación del software en el cliente. Un ejemplo podría ser una
aplicación instalada en cliente que se conecta, por ejemplo usando ODBC, a una base de
datos remota.
● En el cliente se aloja únicamente la lógica de presentación, mientras que la lógica de
negocio y los datos se alojan en el servidor.
En las arquitecturas de tres niveles, la lógica de presentación, la lógica de negocio y la lógica de
datos están separadas, de tal forma que mientras la lógica de presentación se ejecutará en el
cliente, la lógica de negocio se ejecuta en un servidor de aplicaciones y la de datos lo hará en un
servidor de base de datos. Es el modelo más habitual en aplicaciones web, donde el cliente es el
navegador, que se ocupa únicamente de presentar la información y de capturar la interacción
del usuario con la aplicación, un servidor de aplicaciones ejecuta la lógica de negocio y un
segundo servidor almacena la base de datos, como se muestra a continuación:
7
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
Debe tenerse en cuenta en cualquier caso que el número de equipos no tiene por qué
condicionar ni estar condicionado por el número de niveles de la arquitectura. Puede
perfectamente implementarse toda la arquitectura en un mismo equipo (aunque no tendría
demasiado sentido porque se perderían la mayor parte de las ventajas)
2.3 COMPONENTES
8
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
La evolución de los sistemas de información ha supuesto una interacción cada vez mayor entre
aplicaciones de características muy diferentes. Esto supone un aumento en la complejidad de
los sistemas que hace necesario el establecer modelos que permitan que dicha complejidad
pueda gestionarse adecuadamente.
En este contexto, SOA (Service Oriented Architecture) se define como una forma de construir
soluciones software, mediante el uso de diferentes servicios independientes, en un entorno
distribuido (es decir, no centralizado)
Cada uno de estos servicios es una funcionalidad empaquetada como un componente
reutilizable para su utilización en un proceso de negocio.
Tienen cuatro características esenciales:
● Implementan una actividad de negocio repetible, con un resultado concreto.
● Son autocontenidos, es decir, implementan la actividad de negocio de manera completa.
● Se comportan como una caja negra frente a quién los usa, presentando una interfaz de
comunicación que oculta los detalles de la implementación.
● Pueden hacer uso de otros servicios.
No hay estándares que definan de manera exacta cómo debe implementarse una arquitectura
SOA, pero hay una serie de principios sobre los que en la práctica se ha alcanzado un consenso
entre los distintos fabricantes.
- Los servicios presentan un contrato formal: su interfaz de comunicación está claramente
definida y publicada en uno o varios documentos.
- Los servicios deben presentar un nivel mínimo de acoplamiento: cada servicio que
invoca a otros servicios, conoce de éstos solamente su existencia, no sabe
absolutamente nada de su implementación o de su ubicación.
- Los servicios deben perdurar en el tiempo y ser estables: cada servicio que invoca a
otros servicios, no debería necesitar modificar la forma en que realiza dicha invocación
siempre que lo que necesite de éstos no cambie.
- Los servicios deben ser ‘sin estado’: el resultado obtenido de la invocación a un servicio
debe ser siempre el mismo y no estar sujeto a condiciones previas.
- Los servicios deben poder estar implementados como llamadas a otros servicios.
- Los servicios deben facilitar un medio para ser descubiertos: para ello, deben publicarse
acompañados de metadatos que permitan su localización y su invocación.
9
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
Los Servicios Web (Web Services) son en la actualidad la implementación más habitual de la
arquitectura SOA. El W3C los define como:
Sistema software diseñado para soportar la interacción máquina-a-máquina a través de
una red y de forma interoperable.
Más específicamente, un Servicio Web es una unidad de la lógica del negocio que proporciona
datos y servicios para otras aplicaciones. Las aplicaciones acceden a los Servicios Web vía
protocolos web como HTTP y SOAP y formatos de datos universales como XML, sin necesidad
de preocuparse de cómo cada Servicio Web es implementado, por tanto, facilitan la integración
de aplicaciones desarrolladas en entornos tecnológicos heterogéneos, tanto a nivel software
como hardware.
Un Servicio Web es similar a un sitio web que no cuenta con un interfaz de usuario y que da
servicio a las aplicaciones en lugar de a las personas y, en vez de obtener solicitudes desde el
navegador y retornar páginas web como respuesta, recibe solicitudes a través de un mensaje
formateado en XML desde una aplicación, realiza una tarea y devuelve un mensaje de respuesta
también en formato XML.
Algunos de los frameworks más populares para trabajar con Servicios Web son: Apache Axis
(Java y C++), Java Web Service Development Pack, JWSDP (Java), Apache CXF (Java), gSOAP (C
y C++)
10
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
3.3 SOAP
SOAP (Simple Object Access Protocol), es un protocolo estandarizado por el W3C que
proporciona un mecanismo de intercambio de información entre dos puntos usando mensajes
construidos con el lenguaje XML.
11
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
Un mensaje SOAP es un documento en formato XML constituido por tres partes bien definidas:
Ejemplo de mensaje SOAP, en este caso solicitando información del opositor con el ID = 100:
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap=”http://www.w3.org/2003/05/soap-envelope”
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
<soap:Body>
<m:GetOpositor xmlns m=”http://www.ejemplos.com/ejem1”>
<m:OpositorId>100</m:OpositorId>
</m:GetOpositor>
</soap:Body>
</soap:Envelope>
12
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
</soap:Body>
</soap:Envelope>
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap=”http://www.w3.org/2003/05/soap-envelope”
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>Error procesando petición</stringcode>
<faultactor/>
<detail/>
</soap:Fault>
</soap:Body>
</soap:Envelope>
SOAP define una serie de tipos básicos que se empaquetan de forma directa y una serie de
mecanismos para empaquetar tipos complejos y estructurados formados por elementos
simples.
En sus versiones iniciales, SOAP contemplaba un conjunto de tipos como tipos simples con el fin
de realizar un mapeo directo entre el propio documento SOAP y tipos básicos de Java.
Actualmente este conjunto ha aumentado de forma que existe un número bastante grande de
tipos que se tratan como tipos simple. Algunos de los más importantes, junto con la
correspondiente clase Java a la que equivalen, son los siguientes:
SOAP Java
SOAP-ENC:int java.lang.Integer
SOAP-ENC:long java.lang.Long
SOAP-ENC:short java.lang.Short
SOAP-ENC:string java.lang.String
SOAP-ENC:boolean java.lang.Boolean
SOAP-ENC:float java.lang.Float
13
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
SOAP-ENC:double java.lang.Double
SOAP-ENC:byte java.lang.Byte
Además de todos los tipos sencillos, SOAP implementa una serie de mecanismos para serializar
tipos complejos con elementos simples en su interior:
3.3.2.1 STRUCTS
Un struct es un elemento que contiene a su vez un conjunto de elementos hijos almacenados
cada uno de ellos en un campo propio. Por ejemplo:
<Opositor xmlns=" http://www.ejemplos.com/ejemp2">
<OpositorId>100</OpositorId>
<Nombre>Juan</Nombre>
<Apellido>Español</Apellido>
</Opositor>
que representa un elemento de tipo Opositor dentro del cual hay tres elementos sencillos, uno
de tipo int y dos de tipo string.
3.3.2.2 ARRAYS
En un mensaje SOAP se representan mediante un elemento cuyo tipo es SOAP-ENC:Array.
Aunque en la mayoría de lenguajes de programación sea obligatorio que dentro de un array
haya únicamente elementos del mismo tipo, SOAP no presenta esta restricción, sino que es
posible albergar elementos de distintos tipos en un mismo array. Por ejemplo:
<EjemploDeArrayHeterogeneo xsi:type=”SOAP-ENC:Array”>
<OpositorId xsi:type=”xsd:int”>100</OpositorId>
<Nombre xsi:type=”xsd:string”>Juan</Nombre>
<Apellido xsi:type=”xsd:string”>Español</ Apellido>
</ EjemploDeArrayHeterogeneo>
Una de las funcionalidades más importantes con que cuenta SOAP es el envío de mensajes
usando el protocolo HTTP, de forma directa por medio de las librerías de SOAP.
14
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
Esto provoca que existan ciertas diferencias entre un mensaje SOAP normal y uno enviado
haciendo uso del protocolo HTTP. En este último caso deben cumplirse dos condiciones:
● El HTTP header del mensaje de petición al Servicio Web debe contener un campo
SOAPAction. El campo SOAPAction alerta a los servidores web y firewalls por los que
pase de que el mensaje contiene documento SOAP, de manera que los firewalls filtran
las peticiones SOAP sin necesidad de tener que explorar el contenido del body del
mensaje.
● Si la petición SOAP al Servicio Web falla, el servidor debe devolver en el mensaje de
respuesta un error del tipo HTTP 500 Internal Server Error en vez de un 200 OK que se
devuelve cuando todo ha ido bien.
3.4 UDDI
Permite que proveedores de Servicios Web publiquen sus servicios y potenciales consumidores
de dichos servicios los descubran y los utilicen.
El registro de los servicios así como el descubrimiento de los mismos se realiza mediante el
intercambio de mensajes SOAP (el protocolo UDDI define precisamente el formato de dichos
mensajes). Cuando se descubre un servicio, lo que se recibe es un archivo WSDL con toda la
información necesaria para su consumo.
● Páginas blancas: Entidades que han publicados servicios, con sus datos identificativos y
de contacto.
● Páginas amarillas: Relación y descripción de los servicios, así como clasificación de los
mismos según una serie de taxonomías. Para una misma entrada en las páginas blancas
(entidad de negocio que publica servicios), habrá varias entradas en las páginas
amarillas (una por cada servicio que proporciona)
● Páginas verdes: Descripción técnica de los servicios y acceso a los mismos. Dado que un
mismo servicio puede constar de diversas operaciones, para una misma entrada en las
páginas amarillas (servicio) puede haber múltiples entradas en las páginas verdes (una
por cada operación)
Hay diversas empresas que ofrecen servicios de registro UDDI: IBM, SAP, Microsoft.
15
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
3.5 WSDL
WSDL (Web Services Description Language) es un lenguaje XML que permite describir un
Servicio Web, es decir, contiene toda la información necesaria para su consumo.
Está estandarizado por el W3C, siendo la última versión la 2.0, de 2007 (notar que en la versión
1.1 de WSDL, la ‘D’ no era la inicial de Description, sino de Definition)
3.5.1.1 TIPOS
Aquí se define el conjunto de datos (y sus tipos) que será utilizado por el servicio web e
intercambiado dentro de los mensajes.
Esta información es compartida entre cliente y servidor para que puedan ser interpretados
correctamente a ambos lados.
● El servicio web necesita acceder a la información que el cliente ha usado para codificar
los datos y debe entender cómo decodificarlos.
● El cliente del servicio web debe saber cómo codificar los datos para que el servicio los
acepte.
Ejemplo:
16
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
<wsdl:types>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.ejemplos.com/Servicio/">
<xsd:element name="tOperacion">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" name="n1" type="xsd:int" />
<xsd:element minOccurs="0" name="n2" type="xsd:int" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xsd:element name="tOperacionResp">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" name="resultado" type="xsd:int" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xsd:schema>
</wsdl:types>
Se han definido dos tipos, uno de ellos, llamado tOperacion, consta a su vez de dos elementos
de tipo entero, n1 y n2. El segundo, llamado tOperacionResp tiene un solo elemento, llamado
resultado, también de tipo entero
Las operaciones pueden ser de entrada (el servicio recibe un mensaje asíncrono), de salida (el
servicio envía un mensaje asíncrono), entrada-salida (el servicio recibe un mensaje y quién lo
envía permanece a la espera de respuesta) o salida-entrada (el servicio envía un mensaje y
queda esperando a recibir una respuesta)
Las interfaces agrupan las operaciones que realiza el servicio web. A continuación se puede ver
un ejemplo de una interfaz con una operación (la definida en el apartado anterior)
Ejemplo de una interfaz con una operación de entrada-salida:
<wsdl:interface name="calcularInterface">
<wsdl:operation name="sumar"
pattern="http://www.w3.org/ns/wsdl/in-out">
<wsdl:input messageLabel="Entrada" element="ns:tOperacion"/>
<wsdl:output messageLabel="Salida" element="ns:tOperacionResp"/>
</wsdl:operation>
</wsdl:interface>
17
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
En una operación de entrada sólo aparecerían mensajes de tipo input, en una de salida sólo de
tipo output y en una de salida-entrada aparecería en primer lugar el mensaje de tipo output y a
continuación el de tipo input.
3.5.2.1 BINDINGS
Definen cómo debe accederse a las operaciones que proporciona el Servicio Web. En el ejemplo
siguiente, el binding se refiere a las operaciones recogidas en la interfaz calcularInterface
(segunda línea), la tercera línea (type) determina que la forma de invocar al servicio es SOAP y
la cuarta línea indica que el protocolo usado HTTP.
<wsdl:binding name="calcularBinding"
interface="ns:calcularInterface"
type="http://www.w3.org/ns/wsdl/soap"
wsoap:protocol="http://www.w3.org/2003/05/soap/bindings/HTTP/">
<wsdl:operation ref="ns:sumar"
wsoap:mep="http://www.w3.org/2003/05/soap/mep/soap-response"/>
</wsdl:binding>
En el ejemplo siguiente se define un endpoint que indica la dirección (address) donde está la
interfaz indicada en la línea 2 y cuya forma de invocación define el binding indicado en la línea 4
<wsdl:service name="calcularService"
interface="ns:calcularInterface">
<wsdl:endpoint name="calcularEndpoint"
binding="ns:calcularBinding"
address="http://www.ejemplo.com/Servicio/sumar.php"/>
</wsdl:service>
18
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
<wsdl:types>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.ejemplos.com/Servicio/">
<xsd:element name="tOperacion"> (punto 1)
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" name="n1" type="xsd:int" />
<xsd:element minOccurs="0" name="n2" type="xsd:int" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xsd:element name="tOperacionResp"> (punto 2)
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" name="res" type="xsd:int" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xsd:schema>
</wsdl:types>
<wsdl:interface name="calcularInterface">
<wsdl:operation name="sumar" (punto 3)
pattern="http://www.w3.org/ns/wsdl/in-out">
<wsdl:input messageLabel="Entrada" element="ns:tOperacion"/> (punto 4)
<wsdl:output messageLabel="Salida" element="ns:tOperacionResp"/> (pto.5)
</wsdl:operation>
</wsdl:interface>
<wsdl:binding name="calcularBinding"
interface="ns:calcularInterface" (punto 6)
type="http://www.w3.org/ns/wsdl/soap" (punto 7)
wsoap:protocol="http://www.w3.org/2003/05/soap/bindings/HTTP/"> (punto 8)
<wsdl:operation ref="ns:sumar"
wsoap:mep="http://www.w3.org/2003/05/soap/mep/soap-response"/>
</wsdl:binding>
</wsdl:description>
Este WSDL describiría un Servicio Web llamado calcularService (punto 9), definido por un
endpoint llamado calcularEndpoint (punto 11) accesible en la dirección indicada en el punto 13
y que implementa lo definido en la interfaz calcularInterface (punto 10)
19
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
El endpoint está enlazado al binding calcularBinding (punto 12), el cual se ha definido con un
protocolo de comunicación, SOAP (punto 7) sobre HTTP (punto 8)
El binding está enlazado con la interfaz calcularInterface (punto 6), la cual tiene definida una
operación llamada sumar (punto 3), que requiere de un elemento de entrada de tipo
tOperacion (punto 4) y uno de salida tipo tOperacionResp (punto 5)
Por último, los dos tipos, tOperacion y tOperacionResp, se definen en la sección type (puntos 1 y
2 respectivamente)
Hay algunas diferencias significativas en la estructura de un fichero WSDL entre la versión 1.1 y
la 2.0, que se detallan en el cuadro siguiente:
A modo de resumen:
20
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
● Asegurar una autenticación mutua entre el cliente que accede a los servicios web y el
proveedor de dichos servicios.
● Mantener una política de autorización del acceso a recursos y, más importante, a
operaciones y procesos en un entorno en el que debe administrarse y controlarse el
acceso de numerosos actores.
● Mantener al cliente identificado, de manera que pueda acceder a servicios en diversos
sistemas, sin que resulte necesario identificarse nuevamente en cada uno de ellos.
● Controlar y asegurar la confidencialidad de los datos intercambiados, ya que SOAP no es
capaz de cifrar la información, la cual viaja en claro a través de la red. Es necesario
asegurar la comunicación con algún estándar que permita crear un canal seguro de
comunicación.
● Asegurar la integridad de los datos, de manera que estén protegidos frente a ataques o
manipulaciones fortuitas.
● Comprobar que no se repudian las operaciones, para lo cual es necesario mantener
firmas en XML.
3.6.2 WS-SECURITY
Se basa en estándares y certificaciones digitales para dotar a los mensajes SOAP de los criterios
de seguridad necesarios. Se definen cabeceras y usa XML Signature para el manejo de firmas en
el mensaje. La encriptación de la información la realiza mediante XML Encryption. Hace uso así
mismo del intercambio de credenciales de los clientes.
21
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
● Resulta más flexible puesto que se pueden firmar o cifrar partes del mensaje en lugar del
mensaje completo. De este modo, los intermediarios pueden ver las partes del mensaje
destinadas a ellos.
● Los intermediarios pueden agregar sus propios encabezados al mensaje y firmarlos para
llevar a cabo el registro de auditorías.
● El mensaje protegido se puede enviar a través de diferentes protocolos, como SMTP,
FTP y TCP, sin necesidad de basarse en el protocolo para la seguridad.
Con el tiempo salieron las especificaciones WS-* que daban soluciones avanzadas, pero a la vez
que crecían las capacidades de SOAP, crecía su complejidad.
Al final, muchas de esas capacidades de los Servicios Web SOAP con esa complejidad intrínseca,
en la mayoría de los casos no se necesitan.
Por su parte REST es simple, puesto que no pretende dar soluciones para todo y por lo tanto, no
está penalizado por una excesiva complejidad. De manera que en todas esas ocasiones en que
22
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
no son necesarias funcionalidades avanzadas, se opta por el uso de REST frente a SOAP debido
a su mayor sencillez.
Una diferencia fundamental entre un Servicio Web clásico (SOAP) y un servicio REST es que el
primero está orientado a RPC, es decir, a invocar métodos sobre un servicio remoto, mientras
que el segundo está orientado a recursos.
En una API REST la idea de “servicio” como tal desaparece. Se tienen recursos, accesibles
mediante identificadores (URIs), sobre los que se pueden realizar acciones, generalmente
diferenciadas a través de distintos verbos HTTP.
Así, en un Servicio Web clásico (SOAP) que gestione, por ejemplo, una “Colección de productos”
se tendría un servicio llamado ProductService que tendría un método llamado GetAll() que
devolvería todos los productos. La idea, independientemente de la tecnología usada para
consumir el Servicio Web, es que se llama a un método (GetAll) de un servicio remoto
(ProductService). Así, para obtener un producto concreto se llamaría al método GetById()
pasándole el id del producto.
Un producto forma parte de la “Colección de productos” así que a partir de la colección entera
(/Products) se puede acceder a uno de sus elementos con una URI tipo /Products/123, siendo
123 el ID del producto.
En un servicio SOAP, para dar de alta un nuevo producto se llamaría a un método AddProduct()
de ProductService, y se le pasarían los datos del producto a añadir. En cambio, en la API REST
añadir un producto consiste en usar la URI del mismo, (por ejemplo /Products/456 si se está
añadiendo el producto con ID 456) usando POST o PUT como verbo HTTP y colocando los datos
del producto en el cuerpo de la petición. La URI para acceder al producto con ID 456 es siempre
/Products/456 y es el verbo HTTP (GET, POST, PUT, DELETE,...) el que indica cual es la operación
que deseamos hacer con ese producto.
En una API REST se usan los métodos del protocolo HTTP (infrautilizados en los Servicios Web
clásicos) para indicar el tipo de operación que a realizar sobre los recursos que ofrecen los
servicios.
23
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
De este modo, una misma URL, o endpoint, como /Product/77 puede servir para realizar
múltiples operaciones, todo depende del método de la solicitud HTTP que se utilice.
Del mismo modo que REST es una alternativa más sencilla a SOAP que en muchos escenarios
permite cubrir la misma funcionalidad, JSON es un formato de intercambio de información más
sencillo que XML, y que también es suficiente en un número elevado de escenarios. De ahí que
REST y JSON se usen muchas veces juntos.
La principal ventaja de JSON respecto de XML es que dada la sencillez de su formato, el parseo
de una cadena JSON es muy sencillo, hasta el punto de que basta con emplear la función eval()
de Javascript para hacerlo (y dada la disponibilidad de Javascript es casi todos los navegadores
web, no es necesario programar ni instalar componentes adicionales). En cualquier caso, todos
los lenguajes de programación modernos disponen de APIs para su tratamiento.
24
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
25
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
26
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
27
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
b) Es un estándar ISO
c) Es una norma UNE
d) Es un estándar ANSI
Pregunta 3.43: Para la implementación de una arquitectura cliente/servidor de tipo "cliente
fino-servidor grueso": (apartado 2.2)
a) Se necesitan un mínimo de dos equipos si se utiliza el modelo de dos capas
b) Se necesitan un mínimo de tres equipos si se utiliza el modelo de tres capas
c) Puede ser implantada en un único equipo
d) El cliente es el responsable del acceso a los datos físicos y de procesar la lógica de
negocio
Proceso Selectivo 2015. Promoción interna (2 preguntas)
Pregunta 3.20: Axis2 es: (apartado 3.2)
a) Una base de datos NoSQL
b) Un motor de búsqueda
c) Un motor nuclear de servicios web
d) Una librería para la automatización de tareas de compilación y despliegue de
aplicaciones
Pregunta 3.21: ¿Cuál de las siguientes NO es una característica propia de las arquitecturas
cliente/servidor? (apartado 2.1)
a) Encapsulamiento de servicios
b) Escalabilidad horizontal y vertical
c) Acoplamiento de sistemas
d) Interoperabilidad de plataformas
Proceso Selectivo 2016. Turno libre (2 preguntas)
Pregunta 3.32: ¿A cuál de los siguientes elementos de la arquitectura cliente-servidor se le
conoce también con el término front-end? (apartado 2)
a) Base de datos
b) Servidor
c) Cliente
d) Al conjunto de la arquitectura
Pregunta 3.33: Señale la respuesta correcta en relación con los servicios web (apartado 3.1)
a) Las arquitecturas orientadas a servicios (SOA) se implementan con HTML5, CSS3 y
Javascript
b) Las arquitecturas SOA están formadas por servicios de aplicación fuertemente
acoplados y altamente interoperables
c) Las arquitecturas SOA son un modelo orientado a la reutilización de los servicios en
entornos de sistemas distribuidos
28
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
30
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
31
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
8. GLOSARIO
32
Centro de Estudios TIC
www.cetic.es
Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
9. CONCLUSIÓN
A lo largo del tema se han visto los conceptos más importantes relacionados con la arquitectura
cliente/servidor y la arquitectura de Servicios Web.
La primera parte del tema, arquitectura cliente/servidor, se ha centrado en comentar sus
características básicas, los conceptos de niveles y capas (y las funciones asociadas a cada una de
ellas), los componentes de la arquitectura y las ventajas y desventajas de trabajar con la misma.
Después se ha entrado en detalle a hablar de la arquitectura de Servicios Web, dentro del
contexto de las arquitecturas orientadas a servicios (SOA) y se han comentado los aspectos más
destacados de la misma: SOAP, UDDI, WSDL, aspectos relaticos a seguridad.
Por último se habla de REST, como alternativa al uso de servicios web para escenarios más
sencillos y de JSON como formato de intercambio de datos.
Los anexos incluyen las preguntas aparecidas en los exámenes de los procesos selectivos de
acceso a los cuerpos GSI y TAI de la AGE desde 2015 hasta el día de hoy (este tema no aparece
en el temario del cuerpo TIC), así como un glosario de las siglas aparecidas a lo largo del tema.
Como se podrá observar, las preguntas relacionadas con este tema son bastante más numerosas
en el proceso selectivo del cuerpo TAI que en el GSI, pero realizar las preguntas de test del
proceso TAI que aparecen en este tema puede ser una muy buena forma de prepararlo y de
testear el grado de dominio de los conceptos que se manejan en él.
33