Un servicio web es un componente de software basado en XML, que permite desarrollar aplicaciones que puedan intercambiar funcionalidades con otras por medio de la red, sin importar la tecnología con las que fueron desarrolladas, de esta forma es posible encontrar aplicaciones escritas en PHP que exploten funcionalidades desarrolladas por java o .NET por medio de interfaces sencillas.

Un servicio web está estructurado en capas (Descubrimiento, Descripción, Empaquetamiento, Transporte y Red), cada una de ellas mediante protocolos abiertos:

  • Capa de descubrimiento: Provee una manera de ubicar un determinado servicio web para luego disponer de él, también se conoce como UDDI (Universal Description, Discovery and Integration; Descripción, Descubrimiento e Integración  Universales).
  • Descripción: En esta capa se encuentra un mecanismo para recibir la funcionalidad del servicio web, el estándar utilizado para este fin es el WSDL (Web Service Description Language; Lenguaje de Descripción de servicios WEB).
  • Empaquetamiento: La capa de empaquetamiento permite establecer un formato de mensajes para comunicar aplicaciones, independientemente del lenguaje de programación o del sistema operativo en el que funcionen, el protocolo usado con este fin es el SOAP (Simple Object Access Protocol; Protocolo Simple de Acceso a Objetos), basado en XML.
  • Transporte: Se especifica un conjunto de reglas para enviar y recibir los mensajes generados, a pesar del tiempo en el mercado, el más popular es el HTTP (Hypertext Transport Protocol; Protocolo de Transporte de Hipertexto), el cual es ampliamente admitido por los navegadores y servidores web.
  • Red: Es la capa destinada al envío y recepción de mensajes de red, el método más usado es el protocolo TCP/IP o una subred.

Para habilitar la extensión SOAP en sistemas Linux, se deberá configurar PHP con la opción soap, en caso de que el sistema operativo sea Windows, se tendrá que descomentar la línea del archivo php.ini extensión=php_soap.dll.

Un ejemplo simplista de cómo se vería la instanciación de un servicio web en PHP sería el siguiente:

<?php

$cliente = new SoapClient(NULL,

array(

“location” => “http://www.misitio.com/ ”,

“uri” => “pre:namespace”

));

$var = $cliente ->_call(

“nombreMetodo”,

Array(

New SoapParam(

“valorParametro”,

“nombreParametro”

)

),

array(

“uri” => “pre:namespaceName”,

“soapaction” => “pre:namespaceName#nombreMetodo”

)

);

?>