SOAP
La primera introducción de los Web Services en el mundo de Internet vino de la mano de SOAP. SOAP es un protocolo que define cómo deben de realizarse las comunicaciones entre máquinas. SOAP usa XML como lenguaje de intercambio de datos con una estructura compleja que es capaz de albergar todo tipo de datos sobre la solicitud o respuesta generada.
Características
- Las operaciones son definidas como puertos WSDL.
- Dirección única para todas las operaciones.
- Múltiples instancias del procesocomparten la misma operación.
- Componentes fuertemente acoplados.
Ventajas
- Fácil (generalmente) de utilizar.
- La depuración es posible.
- Las operaciones complejas pueden ser escondidas detrás de una fachada.
- Envolver APIs existentes es sencillo
- Incrementa la privacidad.
- Herramientas de desarrollo.
Desventajas
- Los clientes necesitan saber las operaciones y su semántica antes del uso.
- Los clientes necesitan puertos dedicados para diferentes tipos de notificaciones.
- Las instancias del proceso son creadas implícitamente.
¿Dónde es útil SOAP?
- Se establece un contrato formal para la descripción de la interfaz que el servicio ofrece. El lenguaje de Descripción de Servicios Web (WSDL), como ya sabemos, permite describir con detalles el servicio Web.
- La arquitectura debe abordar requerimientos complejos no funcionales. Muchas especificaciones de servicios Web abordan tales requisitos y establecen un vocabulario común para ellos. Algunos ejemplos incluyen transacciones, seguridad, direccionamiento, … La mayoría de aplicaciones del mundo real se comportan por encima de las operaciones CRUD y requieren mantener información contextual y el estado conversacional. Con la aproximación REST, abordar este tipo de arquitecturas resulta más complicado.
- La arquitectura necesita manejar procesado asíncrono e invocación. En estos casos, la infraestructura proporcionada por estándares como WSRM y APIs como JAX-WS junto con la asincronía por el lado del cliente nos permitirán el soporte de estas características.
REST
REST (Representational State Transfer) es un estilo de arquitectura de software para sistemas hipermedias distribuidos tales como la Web. Cabe destacar que REST no es un estándar, ya que es tan solo un estilo de arquitectura. Aunque REST no es un estándar, está basado en estándares:
- HTTP
- URL
- Representación de los recursos: XML/HTML/GIF/JPEG/…
- Tipos MIME: text/xml, text/html, …
Rest, también usa XML como lenguaje de intercambio de datos pero también tiene la capacidad de trabajar con JSON.
Características
- Cuenta con una interfaz uniforme: Una de las características principales de los servicios Web REST es el uso explícito de métodos HTTP:
- GET: Recoge información de un recurso.
- PUT: Modifica o actualiza el estado de un recurso.
- POST: Crea un nuevo recurso en el servidor.
- DELETE: Elimina un recurso del servidor.
- Acceso a recursos por nombre: Un sistema REST está compuesto por recursos que son accedidos mediante URL, y éstas deben ser intuitivas, predecibles y fáciles de entender y componer. Una manera de conseguirlo es mediante una estructura jerárquica, similar a directorios. Puede existir un nodo raíz único, a partir del cual se crean los subdirectorios que expongan las áreas principales de los servicios, hasta formar un árbol con la información de los recursos.
- Respuesta en un formato conocido: Los formatos más habituales son JSON (JavaScript Object Notation) y XML (Extensible Markup Language), aunque se aceptan otros, como CSV (Comma Separated Values). Cada formato tiene sus ventajas y desventajas. Puesto que JSON fue diseñado para JavaScript, su interpretación es muy directa en este entorno. XML es fácil de expandir y contraer ya que la información está anidada; además, es un formato muy conocido.
- Las operaciones se definen en los mensajes.
- Una dirección única para cada instancia del proceso.
- Cada objeto soporta las operaciones estándares definidas.
- Componentes débilmente acoplados.
Ventajas
- Bajo consumo de recursos.
- Las instancias del proceso son creadas explícitamente.
- El cliente no necesita información de enrutamiento a partir de la URI inicial.
- Los clientes pueden tener una interfaz “listener” (escuchadora) genérica para las notificaciones.
- Generalmente fácil de construir y adoptar.
Desventajas
- Gran número de objetos.
- Manejar el espacio de nombres (URIs) puede ser engorroso.
- La descripción sintáctica/semántica muy informal (orientada al usuario).
- Pocas herramientas de desarrollo.
¿Dónde es útil REST?
Tanto los arquitectos como los desarrolladores necesitan decidir cual es el estilo adecuado para las aplicaciones. En algunos casos es adecuado un diseño basado en REST, se listan a continuación:
- El servicio Web no tiene estado. Una buena comprobación de esto consistiría en considerar si la interacción puede sobrevivir a un reinicio del servidor.
- Una infraestructura de caching puede mejorar el rendimiento. Si los datos que el servicio Web devuelve no son dinámicamente generados y pueden ser cacheados, entonces la infraestructura de caching que los servidores Web y los intermediarios proporcionan, pueden incrementar el rendimiento.
- Tanto el productor como el consumidor del servicio conocen el contexto y contenido que va a ser comunicado. Ya que REST no posee todavía (aunque hayamos visto una propuesta interesante) un modo estándar y formal de describir la interfaz de los servicios Web, ambas partes deben estar de acuerdo en el modo de intercambiar de información.
- El ancho de banda es importante y necesita ser limitado. REST es particularmente útil en dispositivos con escasos recursos como PDAs o teléfonos móviles, donde la sobrecarga de las cabeceras y capas adicionales de los elementos SOAP debe ser restringida.
La distribución de Servicios Web o la agregación con sitios Web existentes puede ser fácilmente desarrollada mediante REST. Los desarrolladores pueden utilizar tecnologías como AJAX y toolkits como DWR (Direct Web Remoting) para consumir el servicio en sus aplicaciones Web.
ACLARACIÓN: Muchas veces se piensa que REST es distinto a RESTful, pero en realidad, la "diferencia" es que REST es una arquitectura que se ejecuta sobre HTTP y RESTful hace referencia a un servicio web que implementa la arquitectura REST.
0 comentarios:
Publicar un comentario