280 likes | 644 Views
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.
E N D
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.
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.