31
Alberto Pedroso García - Junio/200 Victor Ricardo Díaz – Junio/2007 Web Services

Alberto Pedroso García - Junio/2004 Victor Ricardo Díaz – Junio/2007 Web Services

Embed Size (px)

Citation preview

Page 1: Alberto Pedroso García - Junio/2004 Victor Ricardo Díaz – Junio/2007 Web Services

Alberto Pedroso García - Junio/2004Victor Ricardo Díaz – Junio/2007

Web Services

Page 2: Alberto Pedroso García - Junio/2004 Victor Ricardo Díaz – Junio/2007 Web Services

Es un framework para la creación de servicios para los usuarios a través del WWW.

Son aplicaciones de software que pueden ser descubiertas, descritas y accedidas basadas en XML y en los protocolos estándar de la Web en las intranet, extranet y en internet.

Web Service

Page 3: Alberto Pedroso García - Junio/2004 Victor Ricardo Díaz – Junio/2007 Web Services

Web Service

Forma estandarizada de integrar aplicaciones Web usando los estándares abiertos XML, SOAP, WSDL y UDDI sobre un protocolo de Internet. • XML se usa para codificar la información,• SOAP se usa para transferir la información,• WSDL se usa para describir los servicios disponibles,• UDDI se usa para listar los servicios disponibles.

Los Web Services permiten que diferentes aplicaciones en diferentes plataformas se comuniquen usando XML.

Page 4: Alberto Pedroso García - Junio/2004 Victor Ricardo Díaz – Junio/2007 Web Services

Web ServiceCapas básicas de los webservices

Descubrir(registrosUDDI, ebXML)

Describir(WSDL)

Acceder(SOAP)

XML

CAPA DE COMUNICACION(HTTP, SMTP, y otros protocolos)

Page 5: Alberto Pedroso García - Junio/2004 Victor Ricardo Díaz – Junio/2007 Web Services

Escenario común para estas tecnologías

AplicaciónCliente

RegistroUDDI

1. Descubre el webservices

WSDLPara

Webservices A2. Ver descripción de llamada a cada webservices

WebservicesA

3. Acceder al webservices con SOAP4. Recibir mensaje de respuesta SOAP

Page 6: Alberto Pedroso García - Junio/2004 Victor Ricardo Díaz – Junio/2007 Web Services

Web Service & MVCSeparar la lógica de negocio de la presentación es comúnmente conocido en la ingeniería de software como el paradigma Modelo – Vista – Controlador (MVC). Los webservices soportan este paradigma como se muestra en la sgte figura:

Aplicacióncliente

webservices

Controlador ModeloVista

Estilo interfazUsuario

Facilidades de comunicaciónentre vista y el modelo

Proporciona lalógica de negocio

Page 7: Alberto Pedroso García - Junio/2004 Victor Ricardo Díaz – Junio/2007 Web Services

Web Service & Inteloperación

Para inteloperar con varias compañías y aplicaciones en el negocio, se necesita un lenguaje común y un medio para resolver este problema en un ambiente dinámico. Los webservices proporcionan este medio.

Page 8: Alberto Pedroso García - Junio/2004 Victor Ricardo Díaz – Junio/2007 Web Services

SOAP

SOAP (Simple Object Access Protocol) es un protocolo basado en XML usado para codificar la información en los mensajes de solicitud y respuesta en un Web Service antes de ser enviados por la red.

Los mensajes SOAP son independientes de cualquier sistema operativo o protocolo y pueden ser transportados usando una diversidad de protocolos de Internet como SMTP y HTTP.

Page 9: Alberto Pedroso García - Junio/2004 Victor Ricardo Díaz – Junio/2007 Web Services

WSDL

WSDL (Web Services Description Language) es un lenguaje basado en XML usado para describir las posibilidades que ofrece un servicio Web. Fue desarrollado de manera conjunta por Microsoft e IBM.

Page 10: Alberto Pedroso García - Junio/2004 Victor Ricardo Díaz – Junio/2007 Web Services

UDDI

UDDI (Universal Description, Discovery and Integration) es un directorio distribuido basado en Web que permite dar a conocer los Web Services para que puedan ser descubiertos.

Page 11: Alberto Pedroso García - Junio/2004 Victor Ricardo Díaz – Junio/2007 Web Services

HTTP

El Hypertext Transfer Protocol (HTTP) es un protocolo para sistemas de información de hipertextos distribuidos. Es un protocolo genérico y sin estados que puede ser usado para varias tareas que van más allá de su uso para hipertexto.

Cada solicitud de un cliente HTTP (navegador) y cada respuesta de un servidor tienen 3 partes:• la línea de solicitud o respuesta,• el encabezamiento,• el cuerpo.

Page 12: Alberto Pedroso García - Junio/2004 Victor Ricardo Díaz – Junio/2007 Web Services

HTTP

El Hypertext Transfer Protocol (HTTP) es un protocolo para sistemas de información de hipertextos distribuidos. Es un protocolo genérico y sin estados que puede ser usado para varias tareas que van más allá de su uso para hipertexto.

Cada solicitud de un cliente HTTP (navegador) y cada respuesta de un servidor tienen 3 partes:• la línea de solicitud o respuesta,• el encabezamiento,• el cuerpo.

Page 13: Alberto Pedroso García - Junio/2004 Victor Ricardo Díaz – Junio/2007 Web Services

Solicitud del cliente...

El cliente inicia la transacción de una página Web conectándose a un servidor HTTP por el puerto designado (80 por defecto) y envía una solicitud especificando un comando HTTP llamado método, seguido por la dirección de un documento y un número de versión de HTTP.

Método URI ProtocoloGET /index.htm HTTP/1.0

En el ejemplo anterior se usa el método GET para solicitar el documento /index.htm usando la versión 1.0 del protocolo.

Page 14: Alberto Pedroso García - Junio/2004 Victor Ricardo Díaz – Junio/2007 Web Services

Solicitud del cliente...Luego el cliente envía información de encabezamiento opcional al servidor indicándole su configuración y los formatos de documentos que aceptará. Toda la información del encabezamiento se envía línea a línea, cada una con un nombre y un valor de la forma: Palabra: ValorPor ejemplo, User Agent: Lynx/2.4 libwww/5.1k Accept: image/gif, image/jpeg, */*Todas estas líneas son terminadas con \r\n. El cliente envía una línea en blanco para terminar el encabezamiento.

Page 15: Alberto Pedroso García - Junio/2004 Victor Ricardo Díaz – Junio/2007 Web Services

...Solicitud del cliente

Finalmente, después de enviar la solicitud y los encabezamientos, el cliente puede enviar datos adicionales. Estos datos son principalmente usados por programas CGIs que usan el método POST. Se termina la solicitud con otra línea en blanco.

Page 16: Alberto Pedroso García - Junio/2004 Victor Ricardo Díaz – Junio/2007 Web Services

Métodos de Solicitud• OPTIONS – Se usa para interrogar a un servidor acerca de las capacidades que brinda,• GET – Pide al servidor que devuelva el cuerpo del documento identificado en el URI,• READ – Sirve para chequear si un documento ha sido actualizado desde la última solicitud,• POST – Se usa para transferir un bloque de datos al servidor,• PUT – Similar a subir un archivo con FTP al servidor,• DELETE – Borra un documento del servidor,• TRACE – Rastrea el camino de la solicitud a través de firewalls y servidores proxy.

Page 17: Alberto Pedroso García - Junio/2004 Victor Ricardo Díaz – Junio/2007 Web Services

Respuesta del Servidor...

La respuesta del servidor tiene primero la línea de estado que contiene tres campos: la versión HTTP, el código de estado y la descripción del código de estado, en el siguiente formato: Protocolo Código de Estado Descripción HTTP/1.0 200 OK

Esto indica que el servidor usa la versión 1.0 de HTTP en su respuesta. Un código de estado de 200 significa que la solicitud del cliente fue respondida de manera exitosa.Después el servidor envía un encabezado al cliente acerca de sí mismo y del documento solicitado.

Page 18: Alberto Pedroso García - Junio/2004 Victor Ricardo Díaz – Junio/2007 Web Services

...Respuesta del Servidor

Toda la información del encabezamiento se envía línea a línea, en el formato Palabra Clave: Valor.Por ejemplo,HTTP/1.1 200 OKDate: Wed, 19 May 1999 18:20:56 GMTServer: Apache/1.3.6 (Unix) PHP/3.0.7...

Si la solicitud del cliente es válida, se envía la información solicitada. Esta información puede ser una copia de un archivo o la respuesta de un programa CGI.

Page 19: Alberto Pedroso García - Junio/2004 Victor Ricardo Díaz – Junio/2007 Web Services

NuSOAP

Conjunto de clases PHP que permiten a los usuarios enviar y recibir mensajes SOAP usando HTTP. Antiguamente conocido como SOAPx4, es distribuido por NuSphere Corporation (http://www.nusphere.com) y ha sido usado como núcleo de varios paquetes de Web Services, incluyendo PEAR-SOAP.

Uno de los beneficios de NuSOAP es que no es una extensión de PHP sino que está escrito en PHP.

Page 20: Alberto Pedroso García - Junio/2004 Victor Ricardo Díaz – Junio/2007 Web Services

Arquitectura...

NuSOAP emplea una clase base que brinda métodos para serialización de variables y envelopes, información de espacios de nombres y mapeo de diferentes tipos a diferentes espacios de nombres.

La interacción con un servicio Web se logra usando un cliente de alto nivel llamado soapclient. Las operaciones SOAP se ejecutan pasando el nombre de la operación que queremos ejecutar al método call().

Page 21: Alberto Pedroso García - Junio/2004 Victor Ricardo Díaz – Junio/2007 Web Services

Arquitectura...• Si el servicio que vamos a utilizar tiene un archivo WSDL asociado, la clase soapclient toma como argumento el URL del archivo en su constructor y usa la clase wsdl para analizar el archivo WSDL y extraer todos los datos.

• La clase soapclient usa estos datos para codificar los parámetros y crear el SOAP envelope cuando el usuario ejecuta una llamada al servicio.

• Cuando se ejecuta la llamada, la clase soapclient usa a la clase soap_transport_http para enviar el mensaje saliente y recibir el mensaje entrante. Este es analizado por la clase soap_parser

Page 22: Alberto Pedroso García - Junio/2004 Victor Ricardo Díaz – Junio/2007 Web Services

Arquitectura...

Page 23: Alberto Pedroso García - Junio/2004 Victor Ricardo Díaz – Junio/2007 Web Services

...Arquitectura• Si el servicio que vamos a utilizar no tiene un archivo WSDL asociado, entonces el proceso es diferente. Al constructor de la clase soapclient se le pasa el URL del servicio. El llamado se hace con el método call, pero los detalles que eran proporcionados por el archivo WSDL deben pasarse ahora como argumentos. Los parámetros que sean tipos propietarios pueden representarse usando la clase soapval que permite a los usuarios adaptar la serialización de un parámetro.

Page 24: Alberto Pedroso García - Junio/2004 Victor Ricardo Díaz – Junio/2007 Web Services

Instalación y Configuración

• Descargue los archivos de http://dietrich.ganx4.com/nusoap

• Extraiga el archivo nusoap.php de su zip,

• Copie la clase en un directorio,

• Incluya la clase en su script. El camino puede ser relativo o absoluto: include_once(‘nusoap.php’)

Page 25: Alberto Pedroso García - Junio/2004 Victor Ricardo Díaz – Junio/2007 Web Services

Ejemplo de Cliente PHP Soap...<?require_once('c:/nusoap/nusoap.php');

// Creamos una variable con la cadena que vamos a enviar$cadena = 'Juana Pérez';

// Creamos un arreglo para pasar los parámetros al cliente // SOAP$parametros = array($cadena);

// Creamos un objeto cliente especificando el URL del servidor// como argumento$cliente = new soapclient('http://localhost/nusoap_server.php');

Page 26: Alberto Pedroso García - Junio/2004 Victor Ricardo Díaz – Junio/2007 Web Services

...Ejemplo de Cliente PHP Soap// Llamamos al servicio que queremos usar en el servidor// pasándole los parámetros necesarios y recibimos la respuesta

$resultado = $cliente->call('repiteCadena',$parametros);

// NuSOAP ofrece detección de errores con el método getError()

if (!$error = $cliente->getError()) echo "Resultado: ".$resultado;else echo "ERROR:".$error;

?>

Page 27: Alberto Pedroso García - Junio/2004 Victor Ricardo Díaz – Junio/2007 Web Services

Ejemplo de Servidor PHP Soap...<?require_once('c:/nusoap/nusoap.php');

// Creamos un objeto servidor$servidor = new soap_server();

// Registramos el servicio en el servidor$servidor->register('repiteCadena');

// Pasamos los datos de entrada al método service, que procesa// la solicitud, llama a la función apropiada, y luego formula la // respuesta$servidor->service($HTTP_RAW_POST_DATA);

Page 28: Alberto Pedroso García - Junio/2004 Victor Ricardo Díaz – Junio/2007 Web Services

...Ejemplo de Servidor PHP Soap

// Servicio

function repiteCadena($cadena){ if (is_string($cadena)) return $cadena; else return new soap_fault('Client','','El parámetro debe ser una cadena de caracteres');}

?>

Page 29: Alberto Pedroso García - Junio/2004 Victor Ricardo Díaz – Junio/2007 Web Services

Manejo de ErroresLa clase soap_fault proporciona una forma de especificar errores y devolverlos cuando trabajamos con NuSOAP.Los argumentos pasados a su constructor son los siguientes:• faultcode – Valores disponibles ‘Client’ y ‘Server’. Los errores ‘Client’ indican que el mensaje no contenía la información requerida para que la operación fuera exitosa. Los errores ‘Server’ indican problemas de procesamiento en el servidor.• faultactor – No es totalmente funcional y puede dejarse vacía.• faultstring – Mensaje de error.• faultdetail – Detalles del error en XML relacionados con el elemento BODY del mensaje SOAP.

Page 30: Alberto Pedroso García - Junio/2004 Victor Ricardo Díaz – Junio/2007 Web Services

Creación de Tipos Complejos

SOAP permite que los usuarios definan sus propios tipos en la especificación. NuSOAP brinda la clase soapval para definir tipos. Ejemplo:

$param = new soapval(‘’,’double’,2.3433);

El parámetro sería serializado de la siguiente forma:

<soapVal xsi:type=“xsd:double”>2.3433</soapVal>

Page 31: Alberto Pedroso García - Junio/2004 Victor Ricardo Díaz – Junio/2007 Web Services

Fuentes

• “The Semantic Web” por: Michael C. Daconta

Leo J. Obrst

Kevin T. Smith