Web Services. El uso de PHP con NuSOAP.
Los servicios Web (Web Services) y el XML están cada vez más de moda en el mundo de la programación.
¿Qué es un servicio web?Un servicio Web es una colección de protocolos y estándares que sirve para intercambiar datos entre aplicaciones. Distintas aplicaciones de software desarrolladas en lenguajes de programación diferentes, y ejecutadas sobre cualquier plataforma, soportando así la interoperabilidad máquina – máquina (interoperabilidad sintáctica).
La interoperabilidad se consigue mediante la adopción de estandares abiertos.
Estándares empleados
- Web Services Protocol Stack: Así se denomina al conjunto de servicios y protocolos de los servicios Web.
- XML : Es el formato estándar para los datos que se vayan a intercambiar.
- SOAP o XML-RPC: Protocolos sobre los que se establece el intercambio.
- Otros protocolos: los datos en XML también pueden enviarse de una aplicación a otra mediante protocolos normales como HTTP, FTP, o SMTP.
- WSDL: Es el lenguaje de la interfaz pública para los servicios Web. Es una descripción basada en XML de cómo debe establecerse la comunicación de los servicios Web.
- UDDI : Protocolo para publicar la información de los servicios Web. Permite a las aplicaciones comprobar qué servicios web están disponibles.
- WS-Security: Protocolo de seguridad aceptado como estándar por OASIS. Garantiza la autenticación de los actores y la confidencialidad de los mensajes enviados.
Ahora, ¿qué es NuSOAP?
NuSOAP es un kit de herramientas (ToolKit) para desarrollar Web Services bajo el lenguaje PHP, desarrollada por la empresa NuSphere (http://www.nusphere.com/), licenciada bajo LGPL y disponible en sourceforge ( http://sourceforge.net/projects/nusoap/). Está compuesto por una serie de clases que nos harán mucho más fácil el desarrollo de Web Services. Provee soporte para el desarrollo de clientes (aquellos que consumen los Web Services) y de servidores (aquellos que los proveen). NuSOAP está basado en SOAP 1.1, WSDL 1.1 y HTTP 1.0/1.1
Veamos un ejemplo
Este es el ejemplo clásico para imprimir hola mundo.
Para construir un Servicio Web (server.php) basado en NuSOAP con PHP se debe crear de la siguiente forma:
<?php
//incluimos la clase nusoap.php
require_once('nusoap/nusoap.php');
//creamos el objeto de tipo soap_server
$server = new soap_server;
//registramos la función que vamos a implementar
$server->register('hello');
//implementamos la función
function hello ($name){
return "Hola $name.";
}
//llamamos al método service de la clase nusoap
$server->service($HTTP_RAW_POST_DATA);
?>
Ya con esto tenemos implementado un Web Service (server.php), ahora hagamos un cliente (cliente.php) para acceder a este Web Service.
Nota: En el código no se han incluido las comprobaciones de errores para poder facilitar la lectura de los pasos, para lo cual se debería usar el método $soapclient->getError().
<?php
//incluimos la clase nusoap.php
require_once('nusoap/nusoap.php');
//creamos el objeto de tipo soapclient.
//http://www.mydomain.com/server.php se refiere a la url
//donde se encuentra el servicio SOAP que vamos a utilizar.
$soapclient = new soapclient( 'http://www.mydomain.com/server.php');
//Llamamos la función que habíamos implementado en el Web Service
//e imprimimos lo que nos devuelve
echo $soapclient->call('hello',array( 'name'=>'Mundo'));
?>
Conclusiones
Los Servicios Web pueden ser muy útiles en ciertos casos concretos de programación. Los expertos de marketing de empresas de software como Microsoft anuncian a bombo y platillo una revolución debido a la aparición de SOAP, WSDL, UDDI, etc. Sin embargo, no conviene creerse todo lo que cuentan. Hay que tener en cuenta que les interesa que sus clientes actualicen sus herramientas de desarrollo a la versión .NET
La única revolución que podemos vivir en relación a los Servicios Web es la de ver como los servidores de Internet hablan entre ellos, y cada día son más independientes del programador. Y eso es algo que va a pasar completamente desapercibido para el resto de los usuarios de Internet.
Si logramos que existan Servicios Web de utilidad, gratuitos y sencillos, este nuevo esquema de comunicación y programación tendrá futuro. Si por contra, montamos campañas comerciales y vendemos fantasías en torno a palabras bonitas e incomprensibles como UDDI, WSDL, SOAP, XML, etc, habremos perdido nuestro valioso tiempo.