Servicios Web
CI-2413 Desarrollo de aplicaciones
para Internet
Servicios Web
 A través de los años ha habido varios
intentos de lograr interoperabilidad entre
computadores en redes. Sin embargo este
objetivo ha sido elusivo.
 Han existido estándares como CORBA,
DCOM y RPC.
 Los Servicios Web son una evolución o
modernización de los viejos conceptos de
interoperabilidad.
Servicios Web
 Los servicios Web son intercambio de datos
entre un servidor y un cliente, utilizando una
norma de formato XML para "empacar"
solicitudes y datos de tal manera que ambos
sistemas puedan "entenderse". El servidor y
el cliente pueden ambos ser servidores Web,
o cualquier otro aparato electrónico en el que
se pueda pensar.
Servicios Web
 El intercambio de datos en el Web, típicamente
ocurre vía TCP el puerto 80, utilizando el POST del
protocolo HTTP.
 Los servicios Web operan básicamente de la misma
manera que operan los navegadores Web. La
diferencia es que en vez de HTML se trasiega
XML.
 O sea, los servicios Web se encuentran disponibles
en cualquier lugar de Internet, de la misma manera
que lo hacen los navegadores, incluso pasando por
firewalls.
Servicios Web
 Sobre el intercambio de datos, también se necesita
información que describa la interfaz (o la Interfaz
de Programas de Aplicación - API). Esto hace que
el servicio Web sea útil al resto de Internet,
permitiendo así otros desarrolladores crear
programas que pueden acceder sus servicios Web.
Esto lo llamamos el componente de descripción, y
la norma WSDL (Web Service Description
Language) es la que permitirá esto.
Servicios Web
 Sobre el componente anterior, hay
información que describe la naturaleza del
servicios mismo, de tal manera que pueda ser
categorizado y encontrado en sitios que
ofrezcan directorios de servicios Web. Esta
es la capa de descubrimiento, la cual es
tratada por la norma UDDI (Universal
Description, Discovery and Integration).
Servicios Web
 Ambos componentes, el de descripción y el
de descubrimiento son simplemente XML,
gobernadas por un formato particular que
habilita a la información relevante ser
encontrada para todos los servicios Web en
Internet.
XML-RPC
 (Componente de empaque)
 Es una norma muy simple, ya que sus 1500
palabras, comparadas con las más de 11000
de SOAP, hacen que sea fácil de utilizar.
 XML-RPC significa eXtensible Markup
Language – Remote Procedure Calls, o en
castellano, llamados a procedimientos
remotos XML.
XML-RPC
 Ejemplo de comunicación (cliente):

POST /InterfazXMLRPC HTTP/1.0
User-Agent: ECCI XML-RPC Client 1.0
Host: xmlrpc.ecci.ucr.ac.cr
Content-type: text/xml
Content-length: 195
<?xml version="1.0"?>
<methodCall>
<methodName>forums.getNumTodaysThreads</methodName>
<params>
<param><value><string>PHP Development</string></value></param>
</params>
</methodCall>
XML-RPC
 Ejemplo de comunicación (servidor):

HTTP/1.1 200 OK
Connection: close
Content-Length: 148
content-Type: text/xml
Date: Tue, Oct 7 2003 15:59:04 GMT
Server: ECCI XML-RPC Server 1.0
<?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value><int>42</int></value>
</param>
</params>
</methodResponse>
XML-RPC, ejemplo: int A + int
B

Código del cliente:
include("xmlrpc.inc");
$a=new xmlrpcval($_POST['a'], "int");
$b=new xmlrpcval($_POST['b'], "int");
$f=new xmlrpcmsg('matematica.suma', array($a, $b));
$c=new xmlrpc_client("/~bsolano/xml-rpc/servidor.php", "localhost", 80);
$c->setDebug(0);
$r=$c->send($f);
if (!$r) { die("send failed"); }
$v=$r->value();
echo "La suma da: " . $v->scalarval();
XML-RPC, ejemplo: int A + int
B

Código del servidor:
include("xmlrpc.inc");
include("xmlrpcs.inc");
function suma($params) {
$a=$params->getParam(0);
$b=$params->getParam(1);
$c = $a->scalarval() + $b->scalarval();
return new xmlrpcresp(new xmlrpcval($c));
}
$suma_sig=array(array($xmlrpcInt, $xmlrpcInt, $xmlrpcInt));
$suma_doc='Suma dos enteros A y B.';
$s=new xmlrpc_server( array( "matematica.suma" =>
array("function" => "suma",
"signature" => $suma_sig,
"docstring" => $suma_doc)));
XWT
 XWT es XML Windowing Toolkit. Permite crear
aplicaciones remotas, o sea que corren en un
servidor. La interfaz gráfica es “proyectada” en
cualquier computadora en Internet.
 Esto es útil para:


Usuarios muy volubles: Cualquier persona que utiliza
muchas computadoras.
Ambientes de clientes livianos: El usuario necesita
hardware de bajo costo, y se libera del monitoreo de
seguridad, parcheo, instalación, actualización y
desinstalación del software.
XWT
 Esto es útil para:

Software como un servicio: ASPs pueden
trascender las limitaciones de HTML y “alquilar”
aplicaciones con interfaces de usuario ricas. Los
clientes interesados en comprar y hospedar la
aplicación la pueden probar antes de
comprometer recursos a la configuración y el
desarrollo.
XWT
Ejemplos de XWT
 Se pueden encontrar varios ejemplos de
XWT en http://www.xwt.org/demos.html.
 Se puede ver un ejemplo de XWT utilizado
para crear un juego en
http://www.xwt.org/tutorial.html.
SOAP
 SOAP (Simple Access Object Protocol) es
protocolo XML para intercambio de
información estructurada.
 Con PHP 5, podemos tener Clientes y
Servidores SOAP nativos (extensión C y no
biblioteca PHP).
Ejemplos Avanzados de
Pear::SOAP
 http://de.tikiwiki.org/xrefhead/nav.html?lib/pear/SOAP/example/disco
_server.php.source.html
Lista de ejemplos
 Visual Studio .NET
 XML Windowing Toolkit (http://www.xwt.org)
 Las páginas mismas con lenguajes que tienen apoyo
a XML-RPC y SOAP.
 Aplicaciones en campos específicos como
OpenArchives (http://www.openarchives.org),
Jabber (http://www.jabber.org)
 Servicios como Portal de Búsqueda Google
Documentos
 http://w3schools.com
 Computer. Vol. 36, Nº 10. Octubre del 2003.
 http://pear.php.net/manual/en/package.webse
rvices.xml-rpc.php
 http://www.zend.com/php5/articles/php5SOAP.php
 http://www.php.net/manual/en/ref.soap.php
Documentos
 http://web-services.bankhacker.com/
 http://www.revista.unam.mx/vol.3/num1/art3
/
 http://pixelateddreams.com/blog/archive/000040.html
 http://www.developer.com/services/article.ph
p/1602051
Conclusiones
 Internet es un conjunto de protocolos. Así
nació y así sigue siendo. Incluso cada día se
agregan nuevos protocolos a este conjunto.
 El desarrollo de aplicaciones para Internet no
es la simple creación de páginas interactivas.
Existe una gran gama de aplicaciones que se
pueden crear.
Conclusiones
 La tendencia es la creación de aplicaciones
en capas con una o varias tecnologías que se
comunican por medio de protocolos como
SOAP o XML-RPC.
 A partir del concepto de desarrollo en capas
nace el concepto de Servicio Web.
Conclusiones
 Hay alternativas para las tecnologías
propietarias mayores que dominan el
mercado. Por ejemplo: una combinación de
XWT con PHP por medio de XML-RPC,
podría reemplazar una aplicación de Visual
Studio .NET, aligerando el costo de las
licencias.
Descargar

Servicios Web