Los servicios web son sistemas de software diseñados para soportar una interacción interoperable máquina a máquina sobre una red. Por lo general son APIs Web, lo que indica que pueden ser accedidos dentro de una red -principalmente Internet- y son ejecutados en el sistema que los aloja.
Esta definición alberga muchos tipos diferentes de sistemas, pero el caso común de uso se refiere a clientes y servidores que se comunican mediante mensajes XML que siguen el estándar SOAP (Simple Object Access Protocol). En los últimos años se ha popularizado un estilo de arquitectura software conocido como REST (Representational State Transfer). Esta nueva arquitectura ha supuesto una nueva opción de estilo de uso de los servicios web.
El SISA emplea 2 estándares para ofrecer sus servicios, SOAP y REST:
- SOAP es un protocolo estándar que define cómo dos objetos en diferentes procesos pueden comunicarse por medio de intercambio de datos XML. Existen múltiples tipos de modelos de mensajes en SOAP pero el más común es el RPC, donde un nodo de red, el cliente, envía un mensaje de solicitud a otro nodo, el servidor, y el servidor inmediatamente responde el mensaje al cliente.
- REST es un estilo de arquitectura de software para sistemas hipermedias distribuidos, tal como es la Web. Estrictamente, REST se refiere a una colección de principios para el diseño de arquitecturas en red, que resumen cómo los recursos son definidos y direccionados. El término con frecuencia es utilizado para describir a cualquier interfaz que transmite datos específicos de un domino sobre HTTP sin una capa adicional, como hace SOAP. Aunque REST no es un estándar, está basado en estándares como HTTP, URL, Tipos MIME: text/xml, text/html.
Generalidades | Ventajas | Desventajas | |
---|---|---|---|
SOAP | - Las operaciones se definen como puertos WSDL. - Una dirección única para todas las operaciones. - Múltiples instancias del proceso comparten la misma operación. - Componentes fuertemente acoplados. |
- Generalmente fácil de utilizar. - La depuración es posible. - Las operaciones complejas pueden ser escondidas detrás de una fachada. - Envolver APIs existentes es sencillo. - Incrementa la privacidad. - Herramientas de desarrollo. |
- Los clientes necesitan saber las operaciones y su semántica antes del uso. - Los clientes necesitan puertos dedicados para diferentes tipos de notificaciones. - Las instancias del proceso son creadas implícitamente. |
REST | - Las operaciones se definen en los mensajes. - Una dirección única para cada instancia del proceso. - Cada objeto soporta las operaciones estándares definidas. - Componentes débilmente acoplados. |
- Bajo consumo de recursos. - Las instancias del proceso son creadas explícitamente. - El cliente no necesita información de enrutamiento a partir de la URI inicial. - Los clientes pueden tener una interfaz listener genérica para las notificaciones. - Generalmente fácil de construir y adoptar. |
- Gran número de objetos. - Manejar el espacio de nombres (URIs) puede ser engorroso. - Descripción sintáctica/semántica muy informal -orientada al usuario-. - Pocas herramientas de desarrollo. |