J'ai déjà implémenté une API REST et j'ai vraiment aimé. En général, lorsque vous implémentez REST sur SOAP, votre client / serveur est plus orthogonal, ce qui signifie que vous pouvez changer le serveur beaucoup plus librement sans affecter vos clients. Cette orthogonalité est due à l'utilisation d'une communication plus abstraite et déjà bien définie via les verbes HTTP. De plus, l'utilisation d'hyperliens intégrés dans vos réponses REST facilite l'extension et la croissance de votre API relativement sans douleur. Les clients sont censés suivre ces liens intégrés pour accéder à de nouvelles ressources comme un humain suivrait des liens sur une page Web pour «explorer» pour plus d'informations.
Cela dit, j'ai eu des collègues à qui on a dit qu'ils devaient utiliser SOAP et ils s'en sont plaints tout le temps. Je suis donc allé dans la recherche des deux un peu plus en détail.
En général, ce que j'ai trouvé est que REST est bien adapté aux applications hautement distribuées , lorsque vous avez des centaines, des milliers ou des millions de clients . L'une des raisons est l'orthogonalité mentionnée ci-dessus, une autre est la mise en cache que vous obtenez gratuitement car vous utilisez HTTP.
SOAP peut être le moyen le plus rapide à suivre lorsque vous avez besoin d'une API plus petite pour un client ou deux rapidement et que vous n'êtes pas trop préoccupé par l'évolutivité. Cela pourrait également vous convenir mieux si vous ne disposez pas d'une architecture structurée autour des ressources , car cela pourrait vous prendre un certain temps pour restructurer votre application pour même pouvoir implémenter REST.
Il peut s'agir d'un point mineur, mais REST est entièrement basé sur HTTP.
SOAP ne nécessite pas HTTP et vous êtes libre d'utiliser le transport que vous souhaitez.
Les messages SOAP peuvent être routés de manière asynchrone et fiable tandis que REST est à peu près un paradigme synchrone.
REST ne vous dit rien à quoi devraient ressembler les données que vous envoyez et recevez. Il y a WADL, mais vous vous fiez surtout à la documentation de l'API correcte. SOAP possède un cirque de technologies XML pour rendre la description des données moins sujette aux erreurs. WSDL, Schéma ...
À la fin de la journée, REST vous fournit essentiellement un système de fichiers basé sur HTTP. Si votre système peut s'intégrer dans ce paradigme - alors ce pourrait être un bon choix.
la source
La plus grande différence entre les deux est que REST est supposé être sans état, alors que SOAP ne l'est pas . En pratique, de nombreuses implémentations REST implémentent effectivement un état dans la session via quelque chose comme OAuth.
Une autre différence est que REST est très orienté «ressource» ou nom . Vous interagissez avec les ressources via les opérations CRUD. Tout ce qui ne correspond pas à ce paradigme devient lourd et gênant.
SOAP d'autre part est juste un protocole RPC (appel de procédure distante) . Cela ne vient pas avec un paradigme, c'est juste la couche transport.
la source
REST utilise également post. En fait, lorsque vous utilisez REST, les verbes http vous indiquent quelle opération se déroule.
REST et SOAP ne sont que des normes différentes de transmission de données sur Internet.
Après avoir utilisé les deux, je recommanderais généralement d'utiliser REST plutôt que SOAP, sauf si vous connaissez les personnes qui vont consommer votre service Web utilisent .net et Visual Studio. Il est généralement beaucoup plus facile de consommer un service Web REST, sauf avec .net VS qui fait la plupart du travail pour vous lorsque vous utilisez SOAP.
la source
Une chose que je mentionnerais est l'interopérabilité - si vous allez appeler votre service à partir d'une application écrite en .NET et que le serveur est écrit en Java (ou toute autre combinaison), optez pour REST. J'ai vu trop de légères incompatibilités entre les implémentations SOAP pour ne plus y penser.
la source
Si vous voulez juste un guide visuel simple pour vous aider à mesurer SOAP et REST par rapport aux exigences de vos applications ...
Vijay Prasad Gupta a élaboré un organigramme simple et utile.
Lien direct vers l'organigramme: https://drive.google.com/file/d/0B3zMtAq1Rf-sdVFNdThvNmZWRGc/edit
Lien vers l'article: https://www.linkedin.com/pulse/20140818062318-7933571-soap-vs-rest-flowchart-to-determine-the-right-web-services-protocol-for-your-needs
la source
Nous sommes maintenant en 2015. J'aurais espéré que SOAP soit mort, mais il persiste toujours comme une mauvaise odeur. Pour tout sauf les applications "d'exemple" les plus élémentaires, l'intégration à un service SOAP est confrontée à des défis. Il s'agit d'une architecture complexe, avec de nombreuses options à plusieurs niveaux, combinées avec les caprices de multiples implémentations et des incompatibilités subtiles (et pas si subtiles). Je n'ai jamais eu une seule bonne expérience avec ça. REST, en revanche, est un jeu d'enfant: tout le monde comprend HTTP. Dans la plupart des cas, JSON a tellement plus d'utilité que XML InfoSet.
Pour vous donner une idée de la complexité de SOAP, essayez d'intégrer une bibliothèque SOAP dans votre projet. Pour Java, le client Apache Axis2 le plus basique (utilisant une simple liaison de données ADB) utilise 23 nouveaux fichiers JAR. Vingt trois! 20 Mo de ballonnement de bibliothèque. CXF est similaire: 21 JARs, la dernière fois que j'ai compté.
Si vous le vouliez vraiment, vous pouvez faire REST avec une simple bibliothèque HTTP.
la source