Web Services. El uso de PHP con NuSOAP.
Eliurkis ¿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) y el intercambio de datos entre redes de ordenadores.
Esta interoperabilidad se consigue mediante la adopción de estándares abiertos.
Estándares empleados
- Web Services Protocol Stack: Es el conjunto de servicios y protocolos de los Servicios Web.
- XML: Es el formato estándar usado para los datos que se vayan a ser intercambiados.
- 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. Es una descripción basada en XML de los requisitos funcionales necesarios para establecer una comunicación con 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.
Pero, ¿qué es NuSOAP?
NuSOAP es una reescritura de SOAPx4, provista por NuSphere y Dietrich Ayala. Es un conjunto de clases (no se requiere ninguna extensión de PHP) que permiten a los desarrolladores crear y consumir servicios web basados en SOAP 1.1, WSDL 1.1 y HTTP 1.0/1.1.
La instalación es bastante sencilla, sólo basta con ir a la página en sourceforge de NuSOAP http://sourceforge.net/projects/nusoap/ y bajar el archivo comprimido. Lo descomprimimos en un directorio de nuestro servidor web (como puede ser “nusoap”), y listo, ya podemos hacer uso de NuSOAP.
¿Cómo lo usamos?
Para responder a esto, lo ideal sería realizar un ejemplo donde utilicemos NuSOAP, lo cual nos permitirá terminar de entender bien los conceptos relaciones con los Servicios Web. Primeramente partiremos de la idea de crear un servicio web, y posteriormente consumir el mismo.
El ejemplo que mostraremos es una aplicación simple, que me permita emitir un saludo a una persona indicada. Para crear este Servicio Web (server.php) con PHP usando NuSOAP es de la siguiente manera:
-
// Incluimos NuSoap
-
require_once('../nusoap/nusoap.php');
-
-
// Crear una instancia del soap server
-
$server = new soap_server();
-
-
// Inicializar el soporte para WSDL
-
$server->configureWSDL('holawsdl', 'urn:holawsdl');
-
-
// Registrar el método
-
$server->register('hola', // nombre método
-
'urn:holawsdl', // namespace
-
'urn:holawsdl#hola', // soapaction
-
'rpc', // estilo
-
'encoded', // uso
-
'Saludar a quien se desee' // documentación
-
);
-
-
// Definir el método como una función PHP
-
/**
-
* Saludar a una persona
-
*
-
* @param string $nombre
-
* @return string
-
*/
-
function hola($nombre) {
-
return 'Hola, ' . $nombre;
-
}
-
-
// Usar la petición (en caso de existir) para invocar al servicio
-
-
$server->service($HTTP_RAW_POST_DATA);
Con este código hemos creado un Servicio Web, que al ser invocado saluda a una persona indicada, ahora debemos crear una aplicación que consuma este Servicio Web (client.php).
-
// Incluimos la clase NuSoap
-
require_once('../nusoap/nusoap.php');
-
-
// Dirección del servicio web
-
$url = 'http://dev.deepinphp.com/ejemplos/webservices/server.php?wsdl';
-
-
// Creamos una instancia del objeto Soap en su modo Cliente
-
$soapclient = new soapclient($url, TRUE);
-
-
// Función "hola" a llamar en el webservices
-
$function = 'hola';
-
-
// Parámetros pasados a la función
-
-
// Llamamos a la función publicada en el servicio web y devolvemos el resultado en $result
-
$result = $soapclient->call($function , $params);
-
-
// Imprimimos el resultado
Y de esta forma, hemos creado una aplicación sencilla de creación y consumo de un Servicio Web en PHP, para mostrar ver su funcionamiento pueden hacerlo en http://dev.deepinphp.com/ejemplos/webservices/client.php
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 el contrario, 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.
Archivos de ejemplo
Puede descargar los archivos del ejemplo anterior en http://dev.deepinphp.com/ejemplos/webservices/ejemplo.zip (Incluye la clase NuSoap)
Actualizado: 3 de noviembre del 2008
Posted in PHP, Servicios Web |
24 Comments »

