Un servicio web ( WS ) es:
En un servicio web, se utiliza una tecnología web como HTTP para transferir formatos de archivos legibles por máquinas, como XML y JSON.
En la práctica, un servicio web proporciona comúnmente una interfaz web orientada a objetos a un servidor de base de datos, utilizada por ejemplo por otro servidor web o por una aplicación móvil , que proporciona una interfaz de usuario al usuario final. Muchas organizaciones que proporcionan datos en páginas HTML formateadas también proporcionarán esos datos en su servidor como XML o JSON, a menudo a través de un servicio web para permitir la sindicación . Otra aplicación ofrecida al usuario final puede ser un mashup , donde un servidor web consume varios servicios web en diferentes máquinas y compila el contenido en una interfaz de usuario.
Asynchronous JavaScript and XML (AJAX) es una tecnología dominante para los servicios web. Se desarrolló a partir de la combinación de servidores HTTP, clientes JavaScript y Plain Old XML (a diferencia de SOAP y los servicios web W3C), y ahora se usa con frecuencia con JSON y también con XML, o en lugar de este.
La transferencia de estado representacional (REST) es una arquitectura para servicios web de buen comportamiento que pueden funcionar a escala de Internet.
En un documento de 2004, el W3C establece lo siguiente: REST es una característica distintiva clave de los servicios web:
Podemos identificar dos clases principales de servicios web:
- Servicios web compatibles con REST , en los que el propósito principal del servicio es manipular representaciones XML de recursos web utilizando un conjunto uniforme de operaciones sin estado ; y
- servicios web arbitrarios, en los que el servicio puede exponer un conjunto arbitrario de operaciones.
— W3C, Arquitectura de servicios web [1]
Hay varios servicios web que utilizan lenguajes de marcado:
Una API web es un desarrollo en servicios web donde el énfasis se ha movido hacia comunicaciones más simples basadas en transferencia de estado representacional (REST). [2] Las API REST no requieren protocolos de servicios web basados en XML ( SOAP y WSDL) para soportar sus interfaces.
En relación con los servicios web del W3C, el W3C definió un servicio web como:
Un servicio web es un sistema de software diseñado para soportar la interacción interoperable de máquina a máquina a través de una red. Tiene una interfaz descrita en un formato procesable por máquina (específicamente WSDL ). Otros sistemas interactúan con el servicio web de una manera prescrita por su descripción utilizando mensajes SOAP, generalmente transmitidos mediante HTTP con una serialización XML junto con otros estándares relacionados con la web.
— W3C, Glosario de servicios web [3]
Los servicios web del W3C pueden utilizar SOAP sobre el protocolo HTTP, lo que permite interacciones menos costosas (más eficientes) a través de Internet que a través de soluciones propietarias como EDI/B2B. Además de SOAP sobre HTTP, los servicios web también pueden implementarse en otros mecanismos de transporte fiables como FTP . En un documento de 2002, el Grupo de trabajo de arquitectura de servicios web definió una arquitectura de servicios web, que requiere una implementación estandarizada de un "servicio web".
El término "servicio web" describe una forma estandarizada de integrar aplicaciones basadas en la Web utilizando los estándares abiertos XML , SOAP, WSDL y UDDI sobre una estructura de protocolo de Internet . XML es el formato de datos utilizado para contener los datos y proporcionar metadatos a su alrededor, SOAP se utiliza para transferir los datos, WSDL se utiliza para describir los servicios disponibles y UDDI enumera los servicios disponibles.
Un servicio web es un método de comunicación entre dos dispositivos electrónicos a través de una red. Es una función de software que se proporciona en una dirección de red a través de la Web y que está siempre activa, como en el concepto de computación de utilidad.
Muchas organizaciones utilizan varios sistemas de software para la gestión. [ cita requerida ] A menudo, los diferentes sistemas de software necesitan intercambiar datos entre sí, y un servicio web es un método de comunicación que permite que dos sistemas de software intercambien estos datos a través de Internet. El sistema de software que solicita los datos se denomina solicitante de servicios , mientras que el sistema de software que procesaría la solicitud y proporcionaría los datos se denomina proveedor de servicios .
Los distintos programas pueden utilizar distintos lenguajes de programación, por lo que es necesario contar con un método de intercambio de datos que no dependa de un lenguaje de programación en particular. Sin embargo, la mayoría de los tipos de programas pueden interpretar etiquetas XML. Por lo tanto, los servicios web pueden utilizar archivos XML para el intercambio de datos.
Es necesario definir reglas para la comunicación con diferentes sistemas, como por ejemplo:
Todas estas reglas de comunicación se definen en un archivo llamado WSDL (Web Services Description Language), que tiene una .wsdl
extensión . (Las propuestas de Servicios Web Autónomos ( AWS ) buscan desarrollar servicios web más flexibles que no dependan de reglas estrictas. [a] )
Un directorio llamado UDDI (Universal Description, Discovery, and Integration) define qué sistema de software debe contactarse para obtener qué tipo de datos. De esta forma, cuando un sistema de software necesita un informe o dato en particular, se dirige al UDDI y busca con qué otros sistemas puede contactarse para recibir esos datos. Una vez que el sistema de software encuentra con qué otros sistemas debe contactarse, se comunica con ese sistema mediante un protocolo especial llamado SOAP (Simple Object Access Protocol). El sistema del proveedor de servicios primero valida la solicitud de datos consultando el archivo WSDL y luego procesa la solicitud y envía los datos según el protocolo SOAP.
Las herramientas automatizadas pueden ayudar en la creación de un servicio web. En el caso de los servicios que utilizan WSDL, es posible generar automáticamente WSDL para clases existentes (un modelo ascendente) o generar un esqueleto de clase a partir de WSDL existentes (un modelo descendente).
Los críticos de los servicios web que no son RESTful a menudo se quejan de que son demasiado complejos [8] y se basan en grandes proveedores de software o integradores, en lugar de implementaciones típicas de código abierto .
También existen preocupaciones sobre el rendimiento debido al uso de XML como formato de mensaje y de SOAP/HTTP en el envoltorio y transporte de los servicios web. [9]
Las pruebas funcionales y no funcionales de los servicios web se realizan con la ayuda del análisis de WSDL. Las pruebas de regresión se realizan identificando los cambios realizados para actualizar el software. Las necesidades de pruebas de regresión de servicios web se pueden clasificar de tres formas diferentes, a saber, cambios en WSDL, cambios en el código y nuevas pruebas selectivas de operaciones. Podemos capturar las tres necesidades anteriores en tres formas intermedias de WSDL de subconjunto, [7] a saber, WSDL de diferencia (DWSDL), WSDL de unidad (UWSDL) y WSDL reducido (RWSDL), respectivamente. Estos tres WSDL de subconjunto se combinan luego para formar WSDL combinado (CWSDL) que se utiliza posteriormente para las pruebas de regresión del servicio web. Esto ayudará en la gestión automatizada de cambios de servicios web (AWSCM), [10] al realizar la selección de los casos de prueba relevantes para construir un conjunto de pruebas reducido a partir del conjunto de pruebas anterior. [11]
Las pruebas de servicios web también se pueden automatizar utilizando varias herramientas de automatización de pruebas como SoapUI , Oracle Application Testing Suite (OATS), [12] [13] Unified Functional Testing, Selenium, etc.
Trabajo relacionado con la captura y visualización de los cambios realizados en un servicio web. La visualización y el cálculo de los cambios se pueden realizar en forma de artefactos intermedios (WSDL de subconjunto). [7] La información sobre el cálculo del impacto del cambio es útil para las pruebas, el desarrollo descendente y la reducción de las pruebas de regresión. AWSCM [10] es una herramienta que puede identificar operaciones de subconjunto en un archivo WSDL para construir un WSDL de subconjunto.
Si bien UDDI fue concebido para servir como directorio de servicios y convertirse en el medio para descubrir servicios web, muchos proveedores descontinuaron sus soluciones UDDI o repositorios entre 2005 y 2008, incluidos Microsoft, SAP, IBM, entre otros. [14] [15] Un estudio clave publicado en la Conferencia WWW2008 (Beijing, China) [16] presentó el estado de los servicios web basados en SOAP y concluyó que solo el 63% de los servicios web basados en SOAP disponibles en el momento del estudio estaban realmente activos o podían invocarse. El estudio también encontró que los motores de búsqueda se estaban convirtiendo en una fuente ideal para buscar servicios web en comparación con los registros de servicios como UDDI debido a su complejidad de diseño. [17]
Los resultados presentados en este artículo muestran que la naturaleza de los datos de respuesta tiene un mayor impacto en el rendimiento relativo de lo que se ha permitido en la mayoría de los estudios anteriores.