REST Vs SOAP

Introduction

In the mad rush of implementing Rest Services, I will be discussing about key scenarios for REST Vs SOAP i.e when it is best suited to implement REST Vs SOAP or vice-versa.

Can REST fully Replace SOAP? To answer let's understand what is SOAP and REST?

SOAP – Simple Object Access Protocol.

  • Exposes Operations that implements business Logic.
  • It provides loose coupling to integrate hybrid systems.
  • SOAP supports standard error Messaging
  • Designed for:
    • Extensible
    • Distributed Computing
  • SOAP service very well suited for Enterprise Applications needs & goals:
    • Supports HTTP, SMTP, JMS
    • Enterprise security with WS-Security
    • Supports ACID, Atomic transactions with WS-AT
    • Lot of development tools available
  • Supports HHTP POST
  • Supports only XML
  • Supports stateless & stateful operations
  • Strongly typed.
  • Supports asynchronous messaging

REST – Representational State Transfer

  • Exposes Resources which represent Data
  • Use HTTP methods (GET/POST/DELETE)
  • Based on simple Point to Point communication over HTTP.
  • Stateless communication
  • Supports multiple Formats

Key Advantages of REST?

  • REST can be consumed by any client like web browser, AJAX, JQuery, Javascript
  • REST is definitely lightweight
    • Doesn't requires XML parsing
    • Consumes less bandwidth
    • Doesn't require SOAP header for every message.

Key Challenges with REST?

  • Building a client in REST can be challenging:
    • Can't generate client side artifacts from WSDL as in case of SOAP
    • Need to write raw HTTP calls.
    • Not many IDE available to write REST Clients
  • Rest only Support HTTP / HTTPS
  • REST is not secure.
    • Parameters are part of the URI
    • No support for acquiring tokens
  • RESTFul Services has no contract.
  • REST is not reliable
  • REST can't be governed as it doesn't have any service registry.

What's is Verdict for REST vs SOAP?

Both REST & SOAP are best suited for following respective scenarios

REST SOAP
Best Suited for:
  • Web Services.
  • Smaller size messages (Limited bandwidth)
  • Limited resources (No XML parsing required)
  • Exposing data over Internet.
  • Combining content from different sources / SORs in a web browser.
Best Suited for:
  • Enterprise Services
    • High availability WS-RM
    • Supports transactions WS-AT
    • Supports security WS-Security
    • Asynchronous Processing
    • Contract based development
    • Supports interoperability with business applications.

Coming next is REST API Design, till then happy reading and blogging.

Next Recommended Reading Facebook vs Twitter infographic