miércoles, 4 de diciembre de 2013

REST vs SOAP

REST (Representational State Transfer)
Es un estilo de arquitectura de software para sistemas distribuidos tales como la web, a diferencia de SOAP, se centra en el uso de los estándares HTTP y XML para la transmisión de datos sin la necesidad de contar con una capa adicional. Las operaciones(o funciones)  se solicitarán mediante GET, POST, PUT y DELETE, por lo que no requiere de implementaciones especiales para consumir estos servicios. Además se podrá utilizar JSON en vez de XML como contenedor de la información, por lo que será aconsejable utilizar este protocolo cuando busquemos mejorar el rendimiento, o cuando disponemos de escasos recursos, como sería el caso de los dispositivos móviles.
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.
Aunque SOAP es un protocolo y REST solo es un estandar, se pueden realizar comparaciones, para lo cual a continuacion se detallan las caracteristicas principales de cada uno:

REST
SOAP
Características
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.
Las operaciones son definidas como puertos WSDL.
Dirección única para todas las operaciones.
Múltiple instancias del proceso comparten la misma operación.
Componentes fuertemente 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.
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.
Posibles
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.
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.
Desde diferentes puntos de vista, podemos resaltar las siguietes diferencias:

REST
SOAP
Tecnología
Interacción dirigida por el usuario por medio de formularios.
Flujo de eventos orquestados.
Pocas operaciones con muchos recursos
Muchas operaciones con pocos recursos.
Mecanismo consistente de nombrado de recursos (URI).
Falta de un mecanismo de nombrado.
Se centra en la escalabilidad y rendimiento a gran escala para sistemas distribuidos hipermedia.
Se centra en el diseño de aplicaciones distribuidas.
Protocolo
XML autodescriptivo.
Tipado fuerte, XML Schema.
HTTP.
Independiente del transporte.
HTTP es un protocolo de aplicación.
HTTP es un protocolo de transporte.
Síncrono.
Síncrono y Asíncrono.
Descripción del servicio
Confía en documentos orientados al usuario que define las direcciones de petición y las respuestas.
WSDL
Interactuar con el servicio supone horas de testeado y depuración de URIs.
Se pueden construir automáticamente stubs (clientes) por medio del WSDL.
WADL propuesto en noviembre de 2006.
WSDL 2.0.
Gestión del estado
El servidor no tiene estado (stateless).
El servidor puede mantener el estado de la conversación.
Los recursos contienen datos y enlaces representando transiciones a estados válidos.
Los mensajes solo contienen datos.
Los clientes mantienen el estado siguiendo los enlaces.
Los clientes mantienen el estado suponiendo el estado del servicio.
Técnicas para añadir sesiones: Cookies
Técnicas para añadir sesiones: Cabecera de sesión (no estándar)
Seguridad
HTTPS.
WS-Security.
Implementado desde hace muchos años.
Las implementaciones están comenzando a aparecer ahora.
Comunicación punto a punto segura.
Comunicación origen a destino segura.
Metodología de diseño
Identificar recursos a ser expuestos como servicios.
Listar las operaciones del servicio en el documento WSDL.
Definir URLs para direccionarlos.
Definir un modelo de datos para el contenido de los mensajes.
Distinguir los recursos de solo lectura (GET) de los modificables (POST,PUT,DELETE).
Elegir un protocolo de transporte apropiado y definir las correspondientes políticas QoS, de seguridad y transaccional.
Implementar e implantar el servidor Web.
Implementar e implantar el contenedor del servicio Web.

No hay comentarios:

Publicar un comentario