Compte tenu de ces domaines, je peux donner un aperçu général, mais je ne peux pas tirer vos conclusions pour vous. Il y a deux domaines principaux où les deux protocoles diffèrent:
- Format du message
- Découverte de service
Le format des messages est plus facile à comprendre. L'emballage SOAP pour les demandes et les réponses est assez lourd. Il y a l'enveloppe SOAP qui contient à la fois un en-tête et une section de corps. L'en-tête peut être utilisé par plusieurs filtres dans la chaîne de demande pour effectuer une sorte d'identification, d'autorisation, etc. Cependant, XML est coûteux à analyser, ce qui entraîne une certaine pénalité pour l'évolutivité de votre système. Tout dépend de la couche de traitement SOAP dans votre pile.
La découverte de service est l'endroit où vous aurez probablement le plus de conflits. REST, de par sa nature même, fournit des points de terminaison prévisibles et le contenu de la demande est une simple demande HTTP. L'avantage est qu'il n'y a pas de frais généraux supplémentaires, et les utilisateurs finaux peuvent à peu près deviner comment faire ce dont ils ont besoin une fois qu'ils comprennent la structure URL de votre site. Bien sûr, les personnes naïves soucieuses de sécurité verront cela comme une faiblesse. Après tout, avec SOAP, vous devez consommer un WSDL pour savoir quels sont les points de terminaison. Bien sûr, avec SOAP, vous avez reçu l'intégralité du format de message afin que vous puissiez lancer des attaques plus ciblées.
Ventilés par catégories que vous avez données:
Sécurité
Aucun n'est intrinsèquement plus sûr que l'autre. Utilisez de bons principes de sécurité:
- Chiffrer les communications
- Assurez-vous d'authentifier et d'autoriser les utilisateurs avant de les traiter
- Bonnes habitudes de codage pour éviter les attaques directes
- Et ce n'est que la courte liste.
Souvenez-vous de l'obscurité! = Sécurité.
Performance
Les performances brutes et l'évolutivité iront à REST en raison de la demande suivant des protocoles HTTP simples. La plupart des piles SOAP utilisent l'analyse SAX (analyse basée sur les événements), ce qui améliore considérablement l'évolutivité des piles SOAP, mais il y a un impact mesurable sur la surcharge. SOAP a la surcharge de traitement HTTP normale en plus de la surcharge d'analyse XML. REST a juste la surcharge de traitement HTTP.
Complexité
Du point de vue du système, REST gagne. Il y a moins de pièces mobiles, une chaîne de demande plus légère, etc. Cela signifie qu'il est plus facile de devenir fiable.
Du point de vue du programmeur, SOAP peut gagner si l'IDE ou le framework que vous utilisez fournit un bon support pour cela. Essentiellement, avec REST, il vous incombe d'exécuter le travail de prétraitement (authentification / autorisation / etc.) tandis qu'avec SOAP, une grande partie de cela peut être accompli avec une chaîne de traitement enfichable.
Ma préférence
Je suis très à l'aise avec les requêtes HTTP et je sais comment fonctionne le Web. En conséquence, l'approche REST est plus préférable pour moi. Cependant, je sais que certains de mes clients sont mal à l'aise avec cela. Ils ont lu un article de l'industrie dénonçant la sécurité de REST par rapport à SOAP, etc. En fin de compte, aucune des deux approches ne garantit la sécurité. C'est à vous de vous assurer que l'application est aussi sécurisée qu'elle le devrait. De toute évidence, une application Web sociale n'exige pas (ou ne souhaite pas) autant de sécurité qu'un système bancaire ou gouvernemental. De nombreuses piles SOAP comprennent des processeurs que vous pouvez connecter pour fournir un semblant de sécurité, mais il vous appartient toujours de les rechercher et de les mettre en place.