apuntes+santiggd+19-5-08

Tras ver los nuevos ejercicios de autoevaluación recordamos como se utiliza xml-rpc y pasamos a probar a usarlo con wordpress siguiendo el ejemplo.

A continuación vemos como también se puede utilizar XML-RPC para acceder a otros servicios como es el caso de las bases de datos XML. En concreto vemos como se utiliza sobre Xindice, aunque este interfaz está bastante mal diseñado y da bastantes problemas de acceso. Por esta razón es mejor utilizar otras bases de datos xml como eXist. El problema de el acceso mediante XML-RPC a las bases de datos xml está en que esto no se encuentra estandarizado, por lo que cada interfaz es distinto, sin embargo el servicio de eXist funciona bastante bien.

Soap es bastante mas complejo que XML-RPC pero al mismo tiempo bastante más flexible, pudiendo usar cualquier protocolo de bajo nivel para transmitir los datos. La forma más fácil de usarlo es usando alguna librería como la de soap de perl. El problema de la flexibilidad es que hay problemas entre los lenguajes fuertemente y débilmente tipificados, donde hay que suponer el tipo de los datos, por lo que lo ideal es que ambos lenguajes, cliente y servidor, sean del mismo nivel de tipificación.
 * Soap**

Vemos ahora un ejemplo en perl, donde cargamos la librería adecuada, definimos el servidor como un cgi, definiendo un espacio de nombres Eval y dos métodos que son los que vamos a utilizar.

El cliente es bastante simple, donde cogemos los argumentos, despues definimos el uri donde se incluye el espacio de nombres y el url del proxy, que en este caso es un cgi. Por último llamamos a la subrutina do y mostramos el resultado, que será lo que devuelva el servidor.

Vemos como se puede implementar un servidor SOAP en ruby, ahora no se trata de un cgi sino de un servidor que va a permanecer a la escucha. Para acceder al servicio podemos usar ruby o perl, no importa el lenguaje, teniendo en cuenta que ambos son debilmente tipificados para que no den problemas. Vemos también que eXist tiene su interfaz SOAP, aunque vemos en el ejemplo que es algo más complicado ya que tenemos que indicar el tipo de los datos.

Muchas veces es utilizar un lenguaje de descripción de servicios en lugar de ir a la api, WSDL permite esta tarea, para adaptarnos a la API de distintos servicios. eXist por ejemplo tiene un interfaz WSDL.
 * WSDL**