SOAP es un protocolo estándar que define cómo dos objetos en diferentes procesos pueden comunicarse por medio de intercambio de datos XML. Recibe este nombre debido al formato en que representan los mensajes, sigue el estándar SOAP. En SOAP se utiliza el lenguaje XML para definir tanto el protocolo de mensaje como el contenido de estos. La descripción de interfaz de servicios de un servicio web SOAP se realiza usando un lenguaje basado en XML llamado XDSL. Un servicio SOAP debe cumplir:
- Expresar de manera formal la interfaz, se suele hacer en WSDL.
- La arquitectura del servicio debe ser capaz de soportar la realización y procesamiento de peticiones de forma asíncrona.
WSDL son las siglas de web service description language o lenguaje de descripción de servicios web. Se trata de un metalenguaje que permite describir los servicios web de manera integral. Un servicio web es, a su vez, un servicio que un servidor proporciona a los clientes a través de Internet (u otra red). Este proceso se lleva a cabo al margen de la plataforma, esto es, entre los sistemas y aplicaciones más diversos. Para que el cliente pueda conocer los procedimientos y posibilidades del servicio web, un archivo WSDL en el servidor web contiene la información que indica al cliente cómo llamar al servicio web.
WSDL se basa en el lenguaje XML (extensible markup language) o lenguaje de marcado extensible, así como en el lenguaje XML Schema (XSD). En otras palabras, WSDL utiliza elementos XML.
Asumiendo que podemos obtener la descripción WSDL de cualquier servicio podemos consumirlo directamente generando un proxy. Para poder acceder al servicio Web desde PowerShell tendremos, por lo tanto, que crear un objeto de la clase generada en el proxy.
1 2 |
$calc = New-WebServiceProxy -Uri "http://www.dneonline.com/calculator.asmx?wsdl" $calc.Multiply(3,3) |
Gracias a recursos como SOAP, XML, HTTP y WSDL es posible el ofrecimiento de servicios que pueden ser consumidos independientemente de la plataformas hardware y software, de sistemas operativos y lenguajes de programación.