Are REST and SOAP enemies? [closed]


Nowadays, REST is very popular on web community. So that I am curious to know these two questions.

<ol><li>Are SOAP and REST enemies?</li> <li>Which one is better and why?</li> </ol>


They are not enemies, as they are for different purposes. REST is for lightweight communications, when you need a webservice attending a high number of petitions from a high number of clients, and you don´t need the server keep a state in the communication with each client.

SOAP on the other hand is more heavywieght, but includes some features not present in REST, like keeping a state, handling security, etc.

So each one will be better depending on the scenario.


REST is an architecture. SOAP is a protocol.<br /> The main difference between the two is that REST utilizes the current protocol to perform it's actions and expose services to the clients. In case of the web this is HTTP but it can be used with any other protocol.<br /> In fact SOAP in it's later and less common versions adopts some RESTful qualities (such as using HTTP Verbs instead of re-defining them at the envelope level).

[shameless-promotion]<br /> I recommend you to take look at <a href="http://www.slideshare.net/the_drow/communication-protocols-and-web-services" rel="nofollow">my presentation</a> about web services. Also take a look at <a href="https://stackoverflow.com/questions/1098473/rest-vs-rpc" rel="nofollow">my question here</a> that explains the difference between REST and RPC (SOAP is some form of RPC)<br /> [/shameless-promotion]


  • Is libpq more like a JDBC driver or JavaSE's java.sql package?
  • cannot use raw_input if monkeyrunner is included in python script
  • Three.js - how can I update an arrowHelper?
  • adding a legend to a scatterplot with fitted line and prediction interval
  • TinyXML - any way to skip problematic DOCTYPE tag?
  • Can someone explain how Postgresql roles, Postgresql users and Linux users relate to each other?
  • Problem with sockets and OutOfMemory error
  • draw9patch just hangs on Mac 10.7.5
  • Android SAXParser, parse into array and get child nodes
  • Difference between File>Close and :close in Vim
  • How can i create a big file in google drive with google app script?
  • How to add header and Footer to each activity in android
  • jQuery & CSS - Cut text by height, no truncate
  • Parallel Computing - Shuffle
  • Is storing an OAuth token in cookies bad practise?
  • Passing uniform webservices through Camel
  • How can I encode a filename according to RFC 2231?
  • Underlying type for Tuple in Swift
  • How to Compose OSGi Based project with C++ based project?
  • back button function for phonegap windows phone 7
  • How can I run DataNucleus Bytecode Enhancer from SBT?
  • Doctrine2 bulk import try to work with another entity
  • Dart - Isolate Cross Window Communication
  • How Get arguments value using inline assembly in C without Glibc?
  • Jquery Knockout: ko.computed() vs classic function?
  • How to make R's read_csv2() recognise the text characters properly
  • Implementation of State Monad
  • Spring Cloud Microservice Architecture Confusion
  • Transactional Create with Validation in ServiceStack Redis Client
  • How to define and use opencv mat of user type
  • How do I pass the string value parameter of the selected list item from an auto-populated dropdown l
  • Chrome doesn't support silverlight anymore? How to solve this?
  • Handling un-mapped Rest path
  • Control modification in presentation layer
  • FB SDK and cURL: Unknown SSL protocol error in connection to graph.facebook.com:443
  • PHP - How to update data to MySQL when click a radio button
  • Azure Cloud Service Web Role web pages do not load
  • Volusion's generic SQL folder, functionality
  • How do you join a server to an Active Directory (domain)?
  • coudnt use logback because of log4j