O SOAP ( Simple Object Access Protocol ) e o REST ( Representation State Transfer ) são belos em seu caminho. Então, eu não estou comparando eles. Em vez disso, estou tentando representar a imagem, quando preferi usar o REST e quando o SOAP.
O que é carga útil?
Quando os dados são enviados pela Internet, cada unidade transmitida inclui as informações do cabeçalho e os dados reais que estão sendo enviados. O cabeçalho identifica a origem e o destino do pacote, enquanto os dados reais são referidos como carga útil . Em geral, a carga útil são os dados transportados em nome de um aplicativo e os dados recebidos pelo sistema de destino.
Agora, por exemplo, tenho que enviar um telegrama e todos sabemos que o custo do telegrama dependerá de algumas palavras.
Diga-me entre as duas mensagens abaixo mencionadas, qual é mais barata para enviar?
<name>Arin</name>
ou
"name": "Arin"
Sei que sua resposta será a segunda, embora ambas representem a mesma mensagem, a segunda seja mais barata em relação ao custo.
Então, estou tentando dizer que enviar dados pela rede no formato JSON é mais barato do que enviá-los no formato XML com relação à carga útil .
Aqui está o primeiro benefício ou vantagens do REST sobre SOAP . O SOAP suporta apenas XML, mas o REST suporta formatos diferentes, como texto, JSON, XML, etc.
Agora, o SOAP suporta o único XML, mas também tem suas vantagens.
Realmente! Quão?
O SOAP depende do XML de três maneiras: Envelope - que define o que está na mensagem e como processá-la.
Um conjunto de regras de codificação para tipos de dados e, finalmente, o layout das chamadas e respostas do procedimento reunidas.
Esse envelope é enviado via transporte (HTTP / HTTPS), e uma RPC (Chamada de Procedimento Remoto) é executada, e o envelope é retornado com informações em um documento formatado em XML.
O ponto importante é que uma das vantagens do SOAP é o uso do transporte "genérico", mas o REST usa HTTP / HTTPS . O SOAP pode usar quase qualquer transporte para enviar a solicitação, mas o REST não pode. Então, aqui temos a vantagem de usar o SOAP.
Como eu já mencionei no parágrafo acima, “O REST usa HTTP / HTTPS” , vá um pouco mais fundo nessas palavras.
Quando falamos de REST sobre HTTP, todas as medidas de segurança aplicadas ao HTTP são herdadas, e isso é conhecido como segurança no nível de transporte e protege as mensagens apenas enquanto estiver dentro do fio, mas depois que você o entrega do outro lado, você não sabe Quantas etapas serão necessárias antes de chegar ao ponto real em que os dados serão processados. E, é claro, todos esses estágios poderiam usar algo diferente do HTTP. Então, o resto não é mais seguro, certo?
Mas o SOAP suporta SSL, assim como o REST, além disso , também suporta o WS-Security, que adiciona alguns recursos de segurança da empresa. O WS-Security oferece proteção desde a criação da mensagem até seu consumo . Portanto, para segurança no nível de transporte, qualquer lacuna encontrada que possa ser evitada usando o WS-Security.
Além disso, como o REST é limitado pelo protocolo HTTP , o suporte à transação não é compatível com ACID nem pode fornecer confirmação em duas fases entre os recursos transnacionais distribuídos.
Porém, o SOAP oferece suporte abrangente ao gerenciamento de transações baseado em ACID para transações de curta duração e gerenciamento de transações baseado em compensação para transações de longa duração. Ele também suporta confirmação de duas fases nos recursos distribuídos .
Não estou chegando a nenhuma conclusão, mas preferirei o serviço Web baseado em SOAP, enquanto segurança, transação etc. são as principais preocupações.
Aqui está o "Tutorial do Java EE 6", onde eles disseram que Um design RESTful pode ser apropriado quando as seguintes condições forem atendidas . Dar uma olhada.
Espero que tenha gostado de ler minha resposta.