Dadas essas áreas, posso fornecer uma visão geral aproximada, mas não posso tirar suas conclusões para você. Existem duas áreas principais em que os dois protocolos diferem:
- Formato da mensagem
- Descoberta de serviço
O formato da mensagem é mais fácil de entender. O pacote SOAP para solicitações e respostas é bastante pesado. Há o envelope SOAP que contém um cabeçalho e uma seção do corpo. O cabeçalho pode ser usado por vários filtros na cadeia de solicitações para executar algum tipo de identificação, autorização etc. No entanto, o XML é caro para analisar, o que gera uma certa penalidade na escalabilidade do seu sistema. Quanto depende da camada de processamento SOAP em sua pilha.
A descoberta de serviço é onde você provavelmente terá mais contenção. O REST, por sua própria natureza, fornece pontos finais previsíveis e o conteúdo da solicitação é uma solicitação HTTP simples. O benefício é que não há custos adicionais, e os usuários finais podem adivinhar como fazer o que precisam depois de entenderem a estrutura de URL do seu site. Obviamente, pessoas ingênuas e conscientes da segurança verão isso como uma fraqueza. Afinal, com SOAP, você precisa consumir um WSDL para saber quais são os pontos de extremidade. Obviamente, com o SOAP, você recebeu todo o formato da mensagem para poder fazer ataques mais direcionados.
Dividido pelas categorias que você deu:
Segurança
Nenhuma é inerentemente mais segura que a outra. Use bons princípios de segurança:
- Criptografar comunicações
- Certifique-se de autenticar e autorizar usuários antes de processar
- Bons hábitos de codificação para evitar ataques diretos
- E essa é apenas a pequena lista.
Lembre-se de obscuridade! = Segurança.
atuação
O desempenho bruto e a escalabilidade irão para o REST devido à solicitação, seguindo protocolos HTTP simples. A maioria das pilhas SOAP usa a análise SAX (análise baseada em eventos), o que melhora muito a escalabilidade das pilhas SOAP, mas há um impacto mensurável na sobrecarga. O SOAP possui a sobrecarga normal de processamento HTTP, além da sobrecarga de análise XML. O REST apenas possui a sobrecarga do processamento HTTP.
Complexidade
Da perspectiva do sistema, o REST vence. Há menos peças móveis, uma cadeia de pedidos mais enxuta, etc. Isso significa que é mais fácil torná-lo confiável.
Da perspectiva do programador, o SOAP pode vencer se o IDE ou a estrutura que você estiver usando fornecer um bom suporte para ele. Basicamente, com o REST, cabe a você executar o trabalho de pré-processamento (autenticação / autorização / etc), enquanto no SOAP, muito disso pode ser realizado com uma cadeia de processamento conectável.
Minha preferência
Estou muito confortável com solicitações HTTP e sei como a Web funciona. Como resultado, a abordagem REST é mais preferível para mim. No entanto, sei que alguns de meus clientes não se sentem à vontade com isso. Eles leram algum artigo do setor que denunciou a segurança de REST x SOAP etc. O ponto principal é que nenhuma dessas abordagens garante segurança. Cabe a você garantir que o aplicativo seja o mais seguro possível. Obviamente, um aplicativo da web social não exige (ou deseja) tanta segurança quanto um sistema bancário ou governamental. Muitas pilhas SOAP incluem processadores que você pode conectar para fornecer alguma aparência de segurança, mas ainda é sua responsabilidade procurá-las e instalá-las.