Un servicio web ( WS ) es:
- un servicio ofrecido por un dispositivo electrónico a otro dispositivo electrónico, comunicándose entre sí a través de Internet , o
- un servidor que se ejecuta en un dispositivo informático, que escucha las solicitudes en un puerto específico a través de una red y que sirve documentos web ( HTML , JSON , XML , imágenes).
En un servicio web, se utiliza una tecnología web como HTTP para transferir formatos de archivo legibles por máquina, como XML y JSON.
En la práctica, un servicio web suele proporcionar 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 ofrece una interfaz de usuario al usuario final. Muchas organizaciones que proporcionan datos en páginas HTML formateadas también los ofrecen en su servidor como XML o JSON, a menudo a través de un servicio web para permitir la sindicación . Otra aplicación que se ofrece 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 única interfaz de usuario.
Servicios web (genéricos)
JavaScript asíncrono y XML
AJAX (JavaScript y XML asíncrono) es una tecnología dominante para los servicios web. Desarrollada a partir de la combinación de servidores HTTP, clientes JavaScript y XML estándar (a diferencia de SOAP y los servicios web del W3C), ahora se utiliza con frecuencia junto con JSON , o incluso en lugar de XML.
DESCANSAR
Representational State Transfer (REST) es una arquitectura para servicios web que se comportan correctamente y que pueden funcionar a escala de Internet.
En un documento de 2004, el W3C establece lo siguiente: REST como 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 ]
Tecnologías y protocolos relacionados con los servicios web que utilizan lenguajes de marcado.
Existen varios servicios web que utilizan lenguajes de marcado:
- JSON-RPC .
- JSON-WSP
- Transferencia de estado representacional (REST) frente a llamada a procedimiento remoto (RPC)
- Protocolo simple de acceso a objetos (SOAP)
- Lenguaje de conversación para servicios web (WSCL)
- Lenguaje de descripción de servicios web (WSDL), desarrollado por el W3C
- Lenguaje de flujo de servicios web (WSFL), reemplazado por BPEL.
- Plantilla web
- WS-MetadataExchange
- La interfaz XML para servicios de red (XINS) proporciona un formato de especificación de servicio web al estilo POX .
API web
Una API web es un desarrollo en los servicios web donde el énfasis se ha movido hacia comunicaciones más simples basadas en la transferencia de estado representacional (REST). [ 2 ] Las API RESTful no requieren protocolos de servicios web basados en XML ( SOAP y WSDL) para admitir sus interfaces.
Servicios web del W3C
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 permitir la interacción interoperable entre máquinas a través de una red. Posee una interfaz descrita en un formato procesable por máquina (específicamente WSDL ). Otros sistemas interactúan con el servicio web según lo especificado en su descripción, utilizando mensajes SOAP, generalmente transmitidos mediante HTTP con serialización XML y otros estándares web.
— W3C, Glosario de servicios web [ 3 ]
Los servicios web del W3C pueden utilizar el protocolo SOAP sobre HTTP, lo que permite interacciones más eficientes y menos costosas a través de Internet que mediante 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 requería una implementación estandarizada de un "servicio web".
Explicación

El término "servicio web" describe una forma estandarizada de integrar aplicaciones web mediante los estándares abiertos XML , SOAP, WSDL y UDDI sobre una infraestructura de protocolo de Internet . XML es el formato de datos utilizado para contener la información y proporcionar metadatos; 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. Se trata de una función de software disponible en una dirección de red a través de la web, con un servicio siempre activo, como en el concepto de computación de utilidad.
Muchas organizaciones utilizan múltiples sistemas de software para la gestión. Estos sistemas suelen necesitar 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 del servicio , mientras que el sistema que procesa la solicitud y proporciona los datos se denomina proveedor del servicio .
Los distintos programas informáticos pueden utilizar diferentes lenguajes de programación, por lo que se necesita un método de intercambio de datos que no dependa de un lenguaje de programación específico. Sin embargo, la mayoría de los 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, tales como:
- Cómo un sistema puede solicitar datos a otro sistema.
- ¿Qué parámetros específicos se necesitan en la solicitud de datos?
- ¿Cuál sería la estructura de los datos generados? (Normalmente, los datos se intercambian en archivos XML, y la estructura del archivo XML se valida comparándola con un archivo .xsd).
- ¿Qué mensajes de error mostrar cuando no se respeta una determinada regla de comunicación, para facilitar la resolución de problemas ?
Todas estas reglas de comunicación se definen en un archivo llamado WSDL (Web Services Description Language), que tiene una .wsdlextensión . (Las propuestas para 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 cada tipo de datos. Así, cuando un sistema de software necesita un informe o dato específico, consulta el UDDI para averiguar qué otros sistemas puede contactar para obtenerlo. Una vez que el sistema de software identifica los sistemas con los que debe contactar, lo hace mediante un protocolo especial llamado SOAP (Simple Object Access Protocol). El sistema proveedor de servicios primero valida la solicitud de datos consultando el archivo WSDL, luego procesa la solicitud y envía los datos mediante el protocolo SOAP.
Métodos de diseño automatizados

Las herramientas automatizadas pueden facilitar la creación de un servicio web. Para los servicios que utilizan WSDL, es posible generar automáticamente el WSDL para clases existentes (un modelo ascendente) o generar un esqueleto de clase a partir de un WSDL existente (un modelo descendente).
- Un desarrollador que utiliza un modelo ascendente escribe primero las clases de implementación (en algún lenguaje de programación) y luego utiliza una herramienta generadora de WSDL para exponer los métodos de estas clases como un servicio web. Esto es más sencillo de desarrollar, pero puede ser más difícil de mantener si las clases originales están sujetas a cambios frecuentes. [ 5 ]
- Un desarrollador que utiliza un modelo descendente escribe primero el documento WSDL y luego usa una herramienta de generación de código para producir el esqueleto de la clase, que se completará según sea necesario. Este modelo generalmente se considera más difícil, pero puede producir diseños más limpios y suele ser más resistente a los cambios. Siempre que los formatos de mensaje entre el emisor y el receptor no cambien, los cambios en el emisor y el receptor no afectan al servicio web. Esta técnica también se conoce como "contrato primero", ya que el WSDL (o contrato entre el emisor y el receptor) es el punto de partida. [ 6 ]
- Un desarrollador que utilice un WSDL de subconjunto (SWSDL) [ 7 ] (es decir, un WSDL con la operación de subconjunto en el WSDL original) puede realizar pruebas de servicios web y desarrollo de arriba hacia abajo.
Crítica
Los críticos de los servicios web no RESTful a menudo se quejan de que son demasiado complejos [ 8 ] y se basan en grandes proveedores de software o integradores, en lugar de las implementaciones típicas de código abierto .
También existen preocupaciones sobre el rendimiento debido al uso de XML como formato de mensaje y SOAP/HTTP en el encapsulado y transporte de los servicios web. [ 9 ]
Pruebas de regresión de servicios web
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 llevan a cabo identificando los cambios realizados para actualizar el software. Las necesidades de pruebas de regresión de servicios web se pueden categorizar de tres maneras diferentes: cambios en WSDL, cambios en el código y re-pruebas selectivas de operaciones. Podemos capturar estas tres necesidades en tres formas intermedias de Subset WSDL, [ 7 ] a saber, Difference WSDL (DWSDL), Unit WSDL (UWSDL) y Reduced WSDL (RWSDL), respectivamente. Estos tres Subset WSDL se combinan para formar Combined WSDL (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.
Gestión de cambios de servicios web
Trabajo relacionado con la captura y visualización de cambios realizados en un servicio web. La visualización y el cálculo de cambios se pueden realizar en forma de artefactos intermedios (WSDL de subconjunto). [ 7 ] La comprensión del cálculo del impacto del cambio es útil en 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.
Descubrimiento y búsqueda de servicios web
Aunque UDDI se concibió como un directorio de servicios y un medio para descubrir servicios web, muchos proveedores, incluidos Microsoft, SAP e IBM, entre otros, descontinuaron sus soluciones o repositorios UDDI entre 2005 y 2008. [ 14 ] [ 15 ] Un estudio clave publicado en la Conferencia WWW2008 (Pekín, 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 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 la complejidad de su diseño. [ 17 ]
Véase también
Notas
- ↑ Comparar: Oya 2008 , "Según los servicios web actuales, […] los sistemas de las partes interesadas deben seguir las reglas predefinidas para un servicio empresarial en particular, incluidas las relativas a los protocolos empresariales para enviar/recibir mensajes y al funcionamiento del sistema. […] Se busca un mecanismo más flexible donde los sistemas construidos libremente y que se ejecutan de forma autónoma puedan intercambiar mensajes empresariales sin reglas estrictas preestablecidas. Lo denominamos Servicios Web Autónomos (AWS) y proponemos el marco denominado Armonización Dinámica de Modelos (DMH) con su algoritmo, que ajusta dinámicamente diferentes modelos de procesos empresariales entre sistemas […]." [ 4 ]
Referencias
- ↑ "Arquitectura de servicios web § Relación con la World Wide Web y las arquitecturas REST" . W3C . Consultado el 11 de noviembre de 2017 .
- ↑ Benslimane, D.; Dustdar, S.; Sheth, A. (2008). "Services Mashups: The New Generation of Web Applications" . IEEE Internet Computing . 10 (5): 13– 15. doi : 10.1109/MIC.2008.110 . S2CID 8124905 .
- ↑ "Glosario de servicios web § Servicio web" . W3C . 11 de febrero de 2004. Consultado el 24 de enero de 2017 .
- ↑ Oya, Makoto (2 de septiembre de 2008). «Servicios web autónomos basados en la armonización dinámica de modelos». En Oya, Makoto; Uda, Ryuya; Yasunobu, Chizuko (eds.). Hacia una sociedad sostenible en redes ubicuas: la 8.ª Conferencia IFIP sobre comercio electrónico, servicios electrónicos y sociedad electrónica (I3E 2008), del 24 al 26 de septiembre de 2008, Tokio, Japón . IFIP Advances in Information and Communication Technology. Vol. 286. Springer Science & Business Media (publicado en 2008). pág. 139. ISBN 9780387856902. Consultado el 19 de agosto de 2015 .
- ↑ "Creación de servicios web de abajo hacia arriba" . Eclipse . Consultado el 11 de noviembre de 2017 .
- ↑ "Creación de servicios web de arriba hacia abajo" . Eclipse . Consultado el 11 de noviembre de 2017 .
- 1 2 3 Chaturvedi, Animesh (2014). Subset WSDL to Access Subset Service for Analysis . 2014 IEEE 6th International Conference on Cloud Computing Technology and Science. p. 688. doi : 10.1109/CloudCom.2014.149 . ISBN 978-1-4799-4093-6.
- ↑ Bray, Tim (28-10-2004). "WS-Pagecount" . TBray.org . Consultado el 22-04-2011 .
- ↑ Gray, NAB (2005). "Rendimiento del middleware Java: Java RMI, JAX-RPC y CORBA" . Universidad de Wollongong : 31–39 .
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 considerado en la mayoría de los estudios anteriores.
- 1 2 Chaturvedi, Animesh (2014). Automated Web Service Change Management AWSCM - A Tool . 2014 IEEE 6th International Conference on Cloud Computing Technology and Science. p. 715. doi : 10.1109/CloudCom.2014.144 . ISBN 978-1-4799-4093-6.
- ↑ Chaturvedi, Animesh; Gupta, Atul (2013). Un enfoque con soporte de herramientas para realizar pruebas de regresión eficientes de servicios web . 2013 IEEE 7th International Symposium on the Maintenance and Evolution of Service-Oriented and Cloud-Based Systems. p. 50. doi : 10.1109/MESOCA.2013.6632734 . ISBN 978-1-4673-4889-8.
- ↑ Suite de pruebas de aplicaciones de Oracle
- ↑ Pruebas de servicios web con Oracle Application Testing Suite
- ↑ Krill, Paul (16 de diciembre de 2005). "Microsoft, IBM y SAP abandonan el proyecto de registro UDDI" . InfoWorld . Consultado el 28 de mayo de 2022 .
- ↑ QuinnRadich (27 de abril de 2021). "Eliminación de los servicios UDDI del sistema operativo del servidor: aplicaciones Win32" . docs.microsoft.com . Consultado el 28 de mayo de 2022 .
- ↑ "WWW2008 – WWW 2008: 17.ª Conferencia Internacional de la World Wide Web (Bienvenida)" . Archivado del original el 4 de octubre de 2022. Consultado el 28 de mayo de 2022 .
- ↑ Al-Masri, Eyhab; Mahmoud, Qusay H. (21 de abril de 2008). «Investigación de servicios web en la World Wide Web» . Actas de la 17.ª conferencia internacional sobre la World Wide Web . WWW '08. Nueva York, NY, EE. UU.: Association for Computing Machinery. pp. 795–804 . doi : 10.1145/1367497.1367605 . ISBN 978-1-60558-085-2. S2CID 12570844 .
Enlaces externos
- Patrón de diseño de mensajería archivado el 9 de octubre de 2018 en la documentación de Wayback Machine en SOA Patterns.
- La página de actividad de servicios web en W3C
- Arquitectura de servicios web , nota del grupo de trabajo del W3C (11 de febrero de 2004)
- Investigación de los servicios web en la World Wide Web , el análisis presentado en la conferencia WWW2008.
- Guía para servicios web seguros (SP 800–95) en NIST
- Servicios web