There are currently two schools of thought in developing Web Services – one being the standards-based traditional approach [ SOAP ] and the other, simpler school of thought [ REST ].
Published at DZone with permission of Jagadeesh Motamarri, author and DZone MVB. (source)
This article quickly compares one with the other -
| REST | SOAP |
| Assumes a point-to-point communication model–not usable for distributed computing environment where message may go through one or more intermediaries | Designed to handle distributed computing environments |
| Minimal tooling/middleware is necessary. Only HTTP support is required | Requires significant tooling/middleware support |
| URL typically references the resource being accessed/deleted/updated | The content of the message typically decides the operation e.g. doc-literal services |
| Not reliable – HTTP DELETE can return OK status even if a resource is not deleted | Reliable |
| Formal description standards not in widespread use. WSDL 1.2, WADL are candidates. | Well defined mechanism for describing the interface e.g. WSDL+XSD, WS-Policy |
| Better suited for point-to-point or where the intermediary does not play a significant role | Well suited for intermediated services |
| No constraints on the payload | Payload must comply with the SOAP schema |
| Only the most well established standards apply e.g. HTTP, SSL. No established standards for other aspects. DELETE and PUT methods often disabled by firewalls, leads to security complexity. | A large number of supporting standards for security, reliability, transactions. |
| Built-in error handling (faults) | No error handling |
| Tied to the HTTP transport model | Both SMTP and HTTP are valid application layer protocols used asTransport for SOAP |
| Less verbose | More verbose |
The two protocols have very different uses in the real world.
SOAP(using WSDL) is a heavy-weight XML standard that is centered around document passing. The advantage with this is that your requests and responses can be very well structured, and can even use a DTD. The downside is it is XML, and is very verbose. However, this is good if two parties need to have a strict contract(say for inter-bank communication). SOAP also lets you layer things like WS-Security on your documents. SOAP is generally transport-agnostic, meaning you don't necessarily need to use HTTP.
REST is very lightweight, and relies upon the HTTP standard to do it's work. It is great to get a useful web service up and running quickly. If you don't need a strict API definition, this is the way to go. Most web services fall into this category. You can version your API so that updates to the API do not break it for people using old versions(as long as they specify a version). REST essentially requires HTTP, and is format-agnostic(meaning you can use XML, JSON, HTML, whatever).
Generally I use REST, because I don't need fancy WS-* features. SOAP is good though if you want computers to understand your webservice using a WSDL. REST specifications are generally human-readable only.
No comments:
Post a Comment