SOAP ( Protocolo simple de acceso a objetos ) y REST ( Transferencia de estado de representación ) son hermosos en su forma. Entonces no los estoy comparando. En cambio, estoy tratando de representar la imagen, cuando preferí usar REST y cuando SOAP.
¿Qué es la carga útil?
Cuando los datos se envían por Internet, cada unidad transmitida incluye tanto la información del encabezado como los datos reales que se envían. El encabezado identifica el origen y el destino del paquete, mientras que los datos reales se denominan carga útil . En general, la carga útil son los datos que se transportan en nombre de una aplicación y los datos recibidos por el sistema de destino.
Ahora, por ejemplo, tengo que enviar un Telegram y todos sabemos que el costo del telegrama dependerá de algunas palabras.
Entonces, dime entre los dos mensajes mencionados a continuación, ¿cuál es más barato de enviar?
<name>Arin</name>
o
"name": "Arin"
Sé que su respuesta será la segunda, aunque ambas representan el mismo mensaje, la segunda es más barata en cuanto a costo.
Así que estoy tratando de decir que enviar datos a través de la red en formato JSON es más barato que enviarlos en formato XML con respecto a la carga útil .
Aquí está el primer beneficio o ventajas de REST sobre SOAP . SOAP solo admite XML, pero REST admite diferentes formatos como texto, JSON, XML, etc. Y ya sabemos que si usamos Json, definitivamente estaremos en un mejor lugar con respecto a la carga útil.
Ahora, SOAP admite el único XML, pero también tiene sus ventajas.
¡De Verdad! ¿Cómo?
SOAP se basa en XML de tres maneras Envelope: eso define qué hay en el mensaje y cómo procesarlo.
Un conjunto de reglas de codificación para tipos de datos y, finalmente, el diseño de las llamadas y respuestas de procedimiento reunidas.
Este sobre se envía a través de un transporte (HTTP / HTTPS), se ejecuta una RPC (llamada a procedimiento remoto) y el sobre se devuelve con información en un documento con formato XML.
El punto importante es que una de las ventajas de SOAP es el uso del transporte "genérico", pero REST usa HTTP / HTTPS . SOAP puede usar casi cualquier transporte para enviar la solicitud, pero REST no. Entonces aquí tenemos la ventaja de usar SOAP.
Como ya mencioné en el párrafo anterior "REST usa HTTP / HTTPS" , así que profundice un poco en estas palabras.
Cuando hablamos de REST sobre HTTP, todas las medidas de seguridad aplicadas HTTP se heredan, y esto se conoce como seguridad de nivel de transporte y asegura los mensajes solo mientras está dentro del cable, pero una vez que lo entregó al otro lado, no sabe cuántas etapas tendrá que pasar antes de llegar al punto real donde se procesarán los datos. Y, por supuesto, todas esas etapas podrían usar algo diferente a HTTP. Entonces el descanso no es más seguro por completo, ¿verdad?
Pero SOAP es compatible con SSL al igual que REST; además , también es compatible con WS-Security, que agrega algunas características de seguridad empresarial. WS-Security ofrece protección desde la creación del mensaje hasta su consumo . Entonces, para la seguridad de nivel de transporte, cualquier laguna que encontramos que se puede evitar usando WS-Security.
Aparte de eso, como REST está limitado por su protocolo HTTP, por lo que su soporte de transacciones no es compatible con ACID ni puede proporcionar un compromiso en dos fases a través de recursos transnacionales distribuidos.
Pero SOAP tiene soporte integral tanto para la gestión de transacciones basadas en ACID para transacciones de corta duración como para la gestión de transacciones basadas en compensación para transacciones de larga duración. También es compatible con el compromiso de dos fases en los recursos distribuidos .
No estoy llegando a ninguna conclusión, pero preferiré el servicio web basado en SOAP, mientras que la seguridad, las transacciones, etc. son las principales preocupaciones.
Aquí está el "Tutorial de Java EE 6" donde han dicho que un diseño RESTful puede ser apropiado cuando se cumplen las siguientes condiciones . Echar un vistazo.
Espero que hayas disfrutado leyendo mi respuesta.