Servicios Web CI-2413 Desarrollo de aplicaciones para Internet.
Transcript of Servicios Web CI-2413 Desarrollo de aplicaciones para Internet.
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.0Host: xmlrpc.ecci.ucr.ac.crContent-type: text/xmlContent-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: closeContent-Length: 148content-Type: text/xmlDate: Tue, Oct 7 2003 15:59:04 GMTServer: 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/xref-head/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.webservices.xml-rpc.php http://www.zend.com/php5/articles/php5-
SOAP.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://pixelated-dreams.com/blog/archive/
000040.html http://www.developer.com/services/
article.php/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.