Tutorial sobre web services: SOAP

Escrito el 3 enero, 2002 – 15:44 | por storm | 31.170 lecturas

Continuando con nuestra serie de difusion sobre “Web services” ofrecemos un breve tutorial que permite usando Perl implementar rapidamente web-services y tambien crear clientes que llamen a estos servicios o bien a otros.

Tutorial sobre Web services: SOAP
Garland Foster

Que es un Web Service?

Un web service es basicamente una funcion o procedimiento que puede ser accedida via web por cualquier
programa o aplicacion sin importar en que plataforma reside el servicio o en que lenguaje ha sido desarrollado,
el termino “web” implica que el acceso se hace mediante una conexion a internet habitualmente via http aunque
otros protocolos de transporte pueden ser utilizados. De esta forma, una aplicacion Visual Basic puede, por
ejemplo, usar una rutina de conversion de metros a yardas que fue realizada en Python y reside en un servidor
de la India.

Protocolos para implementar web services

Para que semejante grado de interoperabilidad sea posible es necesario que el “llamador” y el servidor
que implementa el servicio acuerden un protocolo mediante el cual se define como se invoca el servicio,
como se pasan parametros, como se recibe un resultado, como se manejan errores, etc. Los dos protocolos
mas usados son XML-RPC, que hemos cubierto en una nota previa y SOAP. En este articulo no vamos a describir el protocolo SOAP en si mismo sino
como puede usarse SOAP para escribir clientes y servidores basados en esta tecnologia.

Lenguajes

Hay implementaciones de SOAP a nivel cliente y servidor en innumerables lenguajes como por ejemplo C,C++,Perl,Java,
Ruby,K,etc. En esta nota vamos a usar SOAP::Lite, un modulo Perl que implementa en forma muy completa y a la vez
muy simple de usar el protocolo.

Elementos necesarios

Para probar los ejemplos de este tutorial debemos contar con:

  • Un web server que ejecute CGI, cualquiera
  • Un interprete de perl en la misma maquina
  • El modulo SOAP::Lite para el sistema operativo que estemos usando

Un server simple

A continuacion mostramos un servidor simple que implementa dos metodos: hi() y bye()

#!/usr/bin/perl -w

use SOAP::Transport::HTTP;

SOAP::Transport::HTTP::CGI-> dispatch_to('Demo')-> handle;

package Demo;

sub hi() {  my ($class,$x)=@_;  return "Hello $x this the world of SOAP";}

sub bye() {  return "Bye bye";}

Llamemos a este script cgiserver.cgi y coloquemoslo en el directorio en donde se ejecutan los scripts CGI
de nuestro servidor. Notemos que el metodo hi() recibe el parametro $x y construye un saludo en base al
mismo.

Un cliente igual de simple

A continuacion un cliente que llama a un servicio en el server

#!/usr/bin/perl

use SOAP::Lite;

my $soap = SOAP::Lite-> uri('http://www.misitio.com/Demo')-> proxy('http://www.misitio.com/cgi-bin/cgiserver.cgi');

my $result = $soap->hi("Juan");

unless ($result->fault) {  print $result->result();} else {  print join ', ',  $result->faultcode,  $result->faultstring;}print("");

Notemos como se realiza el manejo de errores y como se invoca el servicio, uri es la url del server y el
nombre del package, proxy es la url del script cgi que implementa el servidor.

Continuacion

En base a este ejemplo pueden implementarse varios servicios utiles accesibles via web desde cualquier
lenguaje y plataforma que pueda instanciar un cliente SOAP, para mas informacion recomendamos los siguientes
excelentes tutoriales:

Soap lite Quick Start Guide y Soap Lite Cookbook

Finalmente en xmethods.com pueden encontrar una lista de servicios disponibles que pueden probar creando clientes perl que hagan uso de los mismos tal y como hicimos en nuestro ejemplo

You must be logged in to post a comment.

Buscar: