apuntes+santiggd+12-5-08

Los servicios web se trata de un protocolo para intercambiar datos a través de internet. La idea de servicios web trata de extener la infraestructura existente a servicios más complejos. Todos los servicios web giran en torno a XML, usandolo en algún punto. Estos servicios web también se denominan muchas veces Middleware, software intermedio, ya que permiten el intercambio de información, pero esto no se muestra directamente sino que necesita un procesamiento al comienzo y al final. No está destinado para el contacto directo con el usuario. Una de las cosas mas interesantes es que independizan la aplicación del lenguaje usado, pudiendo estar clientes y servidores escritos en lenguajes diferentes.
 * Servicios Web**

Los servicios web son servicios de mensajería, de envío y recepción de mensajes. Por tanto disponen de un Service Listener, el escuchador que está atento de los mensajes entrantes y de las peticiones, y el Service Proxy que es el que realiza las acciones oportunas para dar una respuesta.

Aunque en general hablamos de cliente servidor, los servicios web no tienen porque seguir esta estructura pudiendo ser algo más complejo, con más partes en medio. En los servicios web lo que también se busca es el dinamismo, de forma que la aplicación pueda variar con cada petición. De esta forma, un servicio web debe ser capaz de reaccionar ante problemas y seleccionar un nuevo servicio web de forma que se adapte a su api y obtenga el resultado.

SOAP nos va a permitir acceder a servicios, pero la descripción sobre su uso vendra dada por el protocolo WDSL, a partir del cual generaremos dinamicamente el interfaz para acceder al servicio.

Todos estos servicios web tiene una pila de protocolos dividida en capas:
 * **Capa de transporte:** que son los protocolos de bajo nivel que se usan para llevar información entre aplicaciones. Algunos protocolos son FTP, UDP, TCP, XMPP. XMPP es un protocolo de paso de mensajes y de presencia, es bastante usado y se dice que puede ser el sucesor de http. Permite establecer subscripciones, de forma que cuando hay alguna actualizacion se nos avisa y no es necesario actualizar constantemente, ahorrando mucha carga al servidor.
 * **Capa de mensajería (enpaquetamiento):** generalmente es XML pero también puede incluir otros protocolos como YAML o JSON, pudiendo mezclarse varios protocolos en la petición y la respuesta.
 * **Capa de descripcion:** se utiliza para integrar las nuevas funcionalidades de forma dinámica, por lo general es WDSL.
 * **Capa de descubrimiento:** Se utiliza para descubrir nuevos servicios web.

Las órdenes más simples de HTTP son las conocidas get y post, además existen put y head. Put permite subir un recurso y head devuelve solo la cabecera en lugar de el documento completo. HTTP es cliente servidor, y responde con una serie de códigos estándar que indican el estado de la respuesta. Las aplicaciones HTTP y sus características se suelen llamar aplicaciones RESTful, ya que consite en que cada vez se envía una representación del estado.
 * Protocolo HTTP**

Ahora vamos a ver el API de Twitter, que se trata de una aplicacion RESTful. Nos realizamos cada uno una cuenta en Twitter y probamos los programas de ejemplo.

Ahora vemos la forma de diseñar un interfaz REST:
 * La funcionalidad debe estar dividida en recursos
 * La sintaxis universal debe ser basada en URL
 * Todos los recursos tienen que tener un interfaz uniforme