Respondiendo a la pregunta actualizada de 2012 (por la segunda recompensa) y revisando los resultados de hoy (otras respuestas).
JABÓN, pros y contras
Acerca de SOAP 1.2, ventajas e inconvenientes cuando se compara con "REST" ... Bueno, desde 2007
puede describir los servicios web REST con WSDL y usar el protocolo SOAP ... Es decir, si trabaja un poco más, todos los estándares W3C de la pila de protocolos de servicios web puede ser REST !
Es un buen punto de partida, porque podemos imaginar un escenario en el que todas las discusiones filosóficas y metodológicas se evitan temporalmente. Podemos comparar técnicamente "DESCANSO DE JABÓN" con "DESCANSO DE NO JABÓN" en servicios similares,
SOAP-REST (= "REST-SOAP"): como lo demostró L.Mandel , WSDL2 puede describir un servicio web REST y, si suponemos que el XML ejemplificado se puede envolver en SOAP, toda la implementación será "SOAP-REST" .
NO-SOAP-REST : cualquier servicio web REST que no puede ser SOAP ... Es decir, "90%" de los ejemplos REST bien conocidos. Algunos no usan XML (por ejemplo, los REST AJAX típicos usan JSON en su lugar), algunos usan otras estructuras XML, sin los encabezados o reglas SOAP. PD: para evitar la informalidad, podemos suponer REST nivel 2 en las comparaciones.
Por supuesto, para comparar más conceptualmente, compare "NO-REST-SOAP" con "NON-SOAP-REST", a medida que se acercan diferentes modelos. Entonces, completando esta taxonomía de servicios web:
NO-REST-SOAP : cualquier servicio web SOAP que no puede ser REST ... Es decir, "90%" de los ejemplos SOAP bien conocidos.
NO-REST-NEITHER-SOAP : sí, el universo del "modelado de servicios web" comprende otras cosas (por ejemplo, XML-RPC ).
JABÓN en las condiciones REST
Comparando cosas comparables: SOAP-REST con NON-SOAP-REST .
PROS
Explicando algunos términos,
Estabilidad contractual : para todo tipo de contratos (como "acuerdos escritos"),
Mediante el uso de estándares : todos los niveles de la pila W3C son mutuamente compatibles. REST, por otro lado, no es un estándar W3C o ISO, y no tiene detalles normalizados sobre los periféricos del servicio. Entonces, como dije yo , @DaveWoldrich (20 votos), @cynicalman (5), @Exitos (0) dije antes, en un contexto donde NECESITAS NORMAS, necesitas JABÓN.
Mediante el uso de mejores prácticas : el "aspecto detallado" de las implementaciones de la pila W3C , traduce acuerdos humanos / legales / jurídicos relevantes.
Robustez : la seguridad de la estructura y encabezados SOAP. Con la comunicación de metadatos (con la total expresividad de XML) y la verificación, usted tiene una "póliza de seguro" contra cualquier cambio o ruido.
SOAP tiene "confiabilidad transaccional (...) frente a fallas de comunicación. SOAP tiene más controles sobre la lógica de reintento y, por lo tanto, puede proporcionar más confiabilidad de extremo a extremo y garantías de servicio", E. Terman .
Ordenando profesionales por popularidad,
Mejores herramientas (~ 70 votos): SOAP actualmente tiene la ventaja de mejores herramientas, desde 2007 y hasta 2012, porque es un estándar bien definido y ampliamente aceptado. Ver @MarkCidade (27 votos), @DaveWoldrich (20), @JoshM (13), @TravisHeseman (9).
Cumplimiento de los estándares (25 votos): como dije antes , @DaveWoldrich (20 votos), @cynicalman (5), @Exitos (0), en un contexto donde NECESITAS NORMAS, necesitas JABÓN.
Robustez : seguro de encabezados SOAP, @JohnSaunders (8 votos).
CONTRAS
La estructura de SOAP es más compleja (más de 300 votos): todas las respuestas aquí, y las fuentes sobre "SOAP vs REST", manifiestan cierto grado de disgusto con la redundancia y complejidad de SOAP. Esta es una consecuencia natural de los requisitos para la verificación formal (ver más abajo) y para la robustez (ver arriba). "REST NON-SOAP" (y XML-RPC, el creador de SOAP ) puede ser más simple e informal.
La restricción de "solo XML" es un obstáculo de rendimiento cuando se utilizan servicios pequeños (~ 50 votos): consulte json.org/xml y esta pregunta , o esta otra . Este punto lo muestran @toluju (41) y otros.
PD: como JSON no es un estándar IETF , pero podemos considerar un estándar de facto para la comunidad de software web.
Servicios de modelado con SOAP
Ahora, podemos agregar SOAP-NON-REST con comparaciones NON-SOAP-REST y explicar cuándo es mejor usar SOAP :
Necesidad de estándares y contratos estables (ver sección "PROS"). PD: vea una típica "necesidad B2B de estándares" descrita por @saille .
Necesidad de herramientas (ver la sección "PROS"). PD: los estándares y la existencia de verificaciones formales (ver más abajo) son cuestiones importantes para la automatización de herramientas.
Procesamiento pesado paralelo (consulte la sección "Contexto / Fundamentos" a continuación): con procesos más grandes y / o más lentos, sin importar un poco más de complejidad de SOAP, la fiabilidad y la estabilidad son las mejores inversiones.
Necesita más seguridad : cuando se requiere más de HTTPS y realmente necesita características adicionales para protección, SOAP es una mejor opción ( consulte @Bell , 32 votos). "Enviar el mensaje a lo largo de una ruta más complicada que la solicitud / respuesta o por un transporte que no involucra HTTP", S. Seely . XML es un tema central, que ofrece estándares para cifrado XML , firma XML y canonización XML , y solo con SOAP puede integrar estos mecanismos en un mensaje mediante un estándar bien aceptado como WS-Security .
Necesita más flexibilidad (menos restricciones): SOAP no necesita correspondencia exacta con un URI; no nedd restringir a HTTP; No es necesario restringir a 4 verbos. Como dice @TravisHeseman (9 votos), si desea algo "flexible para un número arbitrario de tecnologías y usos de clientes", use SOAP.
PD: recuerde que XML es más universal / expresivo que JSON (et al).
Necesidad de verificaciones formales : es importante comprender que la pila W3C utiliza métodos formales , y REST es más informal. La descripción de su servicio WSDL (un lenguaje formal ) es una especificación formal de sus interfaces de servicios web, y SOAP es un protocolo robusto que acepta todas las prescripciones WSDL posibles.
CONTEXTO
Histórico
Para evaluar las tendencias es necesaria la perspectiva histórica. Para este tema, una perspectiva de 10 o 15 años ...
Antes de la estandarización del W3C, hay algo de anarquía. Fue difícil implementar servicios interoperables con diferentes marcos y más difícil, costoso y lento implementar algo interoperable entre empresas. Los estándares de la pila W3C han sido ligeros, un norte para la interoperación de conjuntos de servicios web complejos.
Para las tareas diarias, como implementar AJAX, SOAP es pesado ... Entonces, la necesidad de enfoques simples necesita elegir un nuevo marco teórico ... Y grandes "jugadores de software web", como Google, Amazon, Yahoo, et al, eligieron la mejor alternativa, ese es el enfoque REST. En este contexto, el concepto REST llegó como un "marco competitivo" y, hoy (2012), esta alternativa es un estándar de facto para los programadores.
Cimientos
En un contexto de computación paralela, los servicios web proporcionan subtareas paralelas; y protocolos, como SOAP, aseguran una buena sincronización y comunicación. No es "ninguna tarea": los servicios web se pueden clasificar como
paralelismo vergonzoso y vergonzoso .
A medida que la tarea se hace más grande, se convierte en un "debate de complejidad" menos significativo, y se vuelve más relevante la solidez de la comunicación y la solidez de los contratos.