En tecnología de la información, un servicio web , según la definición dada por el World Wide Web Consortium (W3C), es un sistema de software diseñado para soportar la interoperabilidad entre diferentes computadoras en la misma red o en un contexto distribuido .
El consorcio OASIS ( Organización para el Avance de los Estándares de Información Estructurada ) y el W3C son los principales responsables de la arquitectura y estandarización de los servicios Web; Para mejorar la interoperabilidad entre las diversas implementaciones de los servicios web, la organización WS-I también está desarrollando una serie de "perfiles" para definir mejor los estándares involucrados.
Esta característica se obtiene asociando la aplicación con una interfaz de software (descrita en un formato elaborable automáticamente como, por ejemplo, el lenguaje de descripción de servicios web ) que expone el (los) servicio (s) asociado (s) y mediante el cual otros sistemas pueden interactuar con la aplicación. mismo activando las operaciones descritas en la interfaz ( servicios o solicitudes de procedimientos remotos ) a través de "mensajes" específicos de solicitud: estos mensajes de solicitud se incluyen en un "sobre" (el más famoso es SOAP ), formateado según los estándares XML , encapsulado y transportado a través de los protocolos de la Web (generalmente HTTP ), de ahí el nombre de servicio Web . De hecho, por lo tanto, el servicio web consiste en una llamada a un servicio muy similar a una función , subrutina o método escrito de forma inusual con respecto al estándar y con los métodos de llamada antes mencionados, útil en términos de interoperabilidad en un complejo típico. arquitectura de tipo modular .
Gracias al uso de estándares basados en XML, a través de una arquitectura basada en Servicios Web (denominada, en terminología inglesa , Arquitectura Orientada a Servicios - SOA ), se pueden utilizar aplicaciones de software escritas en diferentes lenguajes de programación e implementadas en diferentes plataformas de hardware . , a través de las interfaces que estos "exponen" públicamente y mediante el uso de las funciones que son capaces de realizar (los "servicios" que ponen a disposición) para intercambiar información y realizar operaciones complejas (como, por ejemplo, la realización de negocios procesos que involucran a varias áreas de una misma empresa) tanto en redes corporativas como en Internet : la posibilidad de interoperabilidad entre diferentes lenguajes de programación (por ejemplo, entre Java y Python ) y diferentes sistemas operativos (como Windows y Linux ) es posible gracias al uso de estándares "abiertos" .
Algunas de las ventajas que se pueden obtener con el uso de los servicios Web son las siguientes:
Por el contrario, hay que tener en cuenta los siguientes aspectos:
La razón principal de la creación y uso de los servicios web es el "desacoplamiento" que la interfaz estándar expuesta por el servicio web hace posible entre el sistema del usuario y el propio servicio web: las modificaciones a una u otra de las aplicaciones se pueden implementar en una forma "transparente" en la interfaz entre los dos sistemas; esta flexibilidad permite la creación de sistemas de software complejos compuestos por componentes que son independientes entre sí y permite una fuerte reutilización de código y aplicaciones ya desarrolladas.
Los servicios web también han ganado soporte ya que, como protocolo de transporte, pueden usar HTTP "sobre" TCP en el puerto 80; este puerto es normalmente uno de los pocos (si no el único) que los sistemas de firewall dejan "abierto" al tráfico entrante y saliente del exterior a los sistemas de la empresa y esto se debe a que el tráfico HTTP de los navegadores web transita por este puerto : este permite el uso de los servicios web sin cambios en las configuraciones de seguridad de la empresa (un aspecto que, si bien es positivo, plantea problemas de seguridad).
Una última razón que ha favorecido la adopción y proliferación de servicios Web es la falta, antes del desarrollo de SOAP, de interfaces verdaderamente funcionales para el uso de funciones distribuidas en la red: EDI , RPC y otros tipos de API ( Application Programming Interface). ) eran y siguen siendo menos conocidos y fáciles de usar que la arquitectura de servicios Web.
La pila de protocolos de los servicios web es el conjunto de protocolos de red utilizados para definir, localizar, crear y hacer que los servicios web interactúen entre sí; se compone principalmente de cuatro áreas:
Los protocolos estándar adicionales utilizados son: