Servicios Web usando WDDX y PHP

Escrito el 1 febrero, 2001 – 14:04 | por storm | 2.660 lecturas

Continuando con nuestra serie de tutoriales hacia “la web de servicios” en este articulo explicamos como construir servicios web usando WDDX (un vocabulario de XML para guardar estructuras de datos) desde PHP4.

Como proveer servicios web desde PHP usando WDDX


Garland Foster

Exclusivo de Maldita Internet

Como hemos visto en articulos anteriores la web de servicios es una de las mas inminentes evoluciones de la web actual y consiste en proveer ya no solo paginas o documentos en la web sino autenticos servicios. Para ello es necesario acrecentar notablemente la interoperatibilidad existente hoy en dia entre aplicaciones web.

WDDX es un standard para el intercambio de estructuras de datos entre distintos lenguajes de programacion utilizando XML. Segun sus creadores WDDX es:

“un mecanismo para intercambiar estructuras de datos complejas entre distintos ambientes de aplicaciones. Ha sido designado con aplicaciones web en mente. WDDX es un vocabulario que provee una representacion independiente de la plataforma de los datos usando XML. El proceso de convertir datos en WDDX se denomina serializacion y el proceso de convertir datos de WDDX a un cierto lenguaje se denomina desserializacion”

Analicemos como esto puede ser util en varias circunstancias, por ejemplo una organizacion dispone de una amplia gama de documentos sobre un determinado tema y desea ofrecer como servicio un buscador sobre dichos articulos usando HTTP. La organizacion puede facilmente crear un script que reciba parametros por POST o por GET via HTTP y realice la busqueda, pero ahora debe idear una forma de devolver los resultados en algun formato neutro que pueda ser usado por cualquier otra organizacion que necesite el servicio. Este es uno de los ambitos en los cuales WDDX puede ser util.

PHP dispone en forma nativa de una extension WDDX por lo cual lo unico que tenemos que hacer para tener a nuestro alcance las funciones WDDX de PHP es compilarlo con la opcion –enable-wddx.

Para analizar el uso de WDDX desde PHP vamos a cubrir por separado el proceso de serializacion y el proceso de desserializacion de datos.

Serializacion

PHP permite serializar datos en paquetes WDDX de distintas formas, cuando solamente queremos serializar una variable podemos hacerlo facilmente de la siguiente manera:


string wddx_serialize_value(var,[comment]);

Por ejemplo:


$wddx=wddx_serialize_value($foo);

Lo que hace la funcion es convertir la variable $foo cualquiera sea su estructura en un paquete wddx listo para ser utilizado. Foo puede ser una estructura compleja, como por ejemplo un vector asociativo donde algun elemento es a su vez un vector o estructuras aun mas complejas. El resultado es devuelto como un string.

Cuando deseamos serializar mas de una variable es necesario crear un paquete wddx y luego ir agregando las variables a serializar al paquete.

$paq=wddx_paquet_start();
wddx_add_vars($paq,”foo”);
wddx_add_vars($par,”name”);
$wddx=wddx_paquet_end($paq);

Lo que hacemos aqui es crear un paquete y luego agregar $foo y $name al paquete, finalmente la funcion que cierra el paquete devuelve en un string el paquete wddx listo para ser usado.

Atencion: Notar como estas funciones usan el “nombre” de la variable mientras que wddx_serialize_value usa la variable misma.

Des-serializacion

Para des-serializar un paquete wddx usamos la funcion:


$result=wddx_deserialize($wddx);

Que recibe un paquete wddx y devuelve la variable des-serializada o bien un vector asociativo de la forma nombre_var => valor_var si la estructura no era atomica. Una vez des-serializados los datos pueden usarse de la forma que se desee.

Los paquetes serializados con WDDX pueden des-serializarse no solo desde PHP sino tambien desde Perl, Python, C, C++, Java y muchos lenguajes mas lo cual hace que WDDX sea una opcion atractiva para proveer servicios en la web ya que luego es sencillo desde cualquier lenguaje hacer uso de dichos servicios.

Otro ambiente dentro del cual WDDX es muy util es el intercambio de informacion entre distintos servidores de un sistema transaccional dentro de una misma organizacion, WDDX sirve en este caso como un standard para el intercambio de datos que permite el dia de mañana re-escribir las aplicaciones en otros lenguajes y plataformas sin tener que alterar demasiado la forma en la cual se envia y se reciben los datos entre las mismas. En muchos ambientes en el cual el intercambio de informacion es habitual entre servidores internos existe un amplio caos en cuanto a de que forma se envian y se reciben los datos que puede resolverse en forma elegante usando WDDX.

Garland Foster.

You must be logged in to post a comment.

Buscar: