Why did you vote for REST?

REST (Representational State Transfer) describes the set of constraints that can be applied to a web service's architecture. A RESTful web service is one that properly adheres to these constraints.

1

Votes

Ease of Testing/Portability

Because clients and servers need to know nothing of eachother aside from a shared media type, they are completely decoupled from eachother, and so development of alternative clients is simplified - new clients need only support a shared media type. Servers may do their part in making client development easier by providing commonly implemented or well-specified media types that are easy to consume.RESTful web services are also particularly easy to test. As with in purely functional programming, the removal of a degree of side effects provides for much more testable interfaces, as output is predictable, consistent, and requires no set-up.Additionally, all RESTful web services can be tested at a high level with the same tools (e.g., curl). This benefit is primarily derived from resource-based addressing (URIs), and the fact that HTTP provides a standard generic interface for operating on those resources (HTTP verbs).

1

Votes

Scalability

A RESTful web service is able to scale well partially because it can take advantage of the caching by clients and intermediate nodes that is provided out of the box by HTTP.This caching can only be achieved by requiring cacheable request types to be idempotent (produce the same result when called multiple times), and by requiring that the server be stateless (i.e., not generate responses based on session/per-connection state). When these constraints apply, all information that determines a response is contained in the request, and so intermediate nodes such as proxies can safely return cached results, provided that the request is the same, without knowing anything else about the end server. Similarly, idempotence allows for actions be performed multiple times, such as in the case of a failed connection, without fear of adverse effects. This is particularly useful not only for GET requests, but for PUT and DELETE requests, which allow for clients to predictably re-request for a change on the server.A RESTful web service, by virtue of not generating responses based on per-connection state, also only needs to scale its usage of hardware resources with the data provided by the service, not based on the number of concurrent connections.

0

Votes

Extensibility and Discoverability

A RESTful web service is able to be extended dynamically, with minimal coordination between the client and server, because resources are discovered dynamically by clients. This is particularly a benefit over most RPC implementations, as even small changes in the interface to an RPC API can break clients.This is achieved through the use of hypermedia formats - formats that contain links. If clients don't rely on being able to parse or compose URIs, and instead, sufficiently descriptive hypermedia formats are used, a server can add new features (resources) by simply describing and linking to them.Similarly, as HTTP provides content negotiation, a RESTful API is able to support multiple representations of a resource - this allows for clients and servers to add and deprecate formats as they please, without breakage, so long as they continue to share at least one common media type. This is particularly useful for extending beyond the capabilities provided by a particular media type.

Why did you vote for SOAP?

  • Benefits of XML
  • Code Generation
  • Portability
  • Simple Architecture
  • Advantages over REST
  • Add Another Pro

SOAP is a data exchange protocol specification based on XML that supports both structured RPC, as well as more dynamic document-style messaging. It is particularly a good solution for services that would benefit more from flexibility in transport protocols than from gaining the benefits of adherence to a single protocol.

0

Votes

Benefits of XML

Standardizing around XML, as opposed to other popular formats such as JSON, brings several benefits to SOAP. The biggest benefit of using XML is the widespread support XML allows, not only for parsing in different languages, but also for decoupled validation logic through DTDs and XML-schema, decoupled translation through XSLT, and querying through XPath. XML is also a hypermedia format, which brings with it implicit understanding of links. At a more general level, choosing a standard parent format decreases the likelihood that highly divergent formats will need to be supported by any service provider or consumer in order to achieve interoperability.

0

Votes

Code Generation

SOAP services use a standard format (XML), are generally well typed, and can be described thoroughly with WSDL (Web Services Definition Language). This means that boilerplate code for interacting with a service can often be automatically generated from its descriptions, dramatically reducing time needed to implement a service endpoint. Contrast this with REST, where media types my be highly variable, and interfaces highly generic, and so much focus is on understanding a service's architecture as a whole, and implementing support for a particular media type.

0

Votes

Portability

While SOAP is commonly implemented over HTTP, SOAP messages do not rely on features of any particular protocol. This means that SOAP services can be tunnelled over a variety of transport protocols aside from HTTP, such as SMTP. Beyond this, SOAP is not restricted to client-server architectures, and so may be used to implement services such as push notifications when used outside of HTTP.

Why did you vote for Apache Thrift?

  • Easy to read definition files
  • Includes built in language bindings for most popular languages
  • The Choice of FaceBook
  • Open Source (Apache 2.0)
  • Support for Multiple Programming Languages
  • Simple Interface Definition Language (IDL)
  • Add Another Pro

Apache Thrift is a framework, originally developed by Facebook, for building cross platform services over HTTP. Thrift development involves writing language agnostic service definition files and then generating stubs in the implementing language.

1

Votes

Easy to read definition files

While SOAP's WSDL documents are fairly verbose, Thrift files tend to be smaller and more straightforward.

0

Votes

Includes built in language bindings for most popular languages

The current list includes C, C++, C#, Java, Python, PHP, Perl, Ruby and quite a few others.

0

Votes

The Choice of FaceBook

Why did you vote for Apache Avro?

Whilst similar to Thrift and Protocol Buffers in sending binary data structures over http, Avro introduces additional flexibility which stands it in good stead to replace these older technologies. The technology is relatively young having been first released in 2009.

0

Votes

Dynamic Typing

The data structure's schema is encoded in the message alongside its data, allowing you to easily amend the data structure and have this continue to be understood by other systems. This also avoids the need for versioning, as the data's related structure can be seen directly.

Add Another Pro to Apache Avro

Why did you vote for Protocol Buffer?

  • The Choice of Google
  • Third Party Support for Multiple Programming Languages
  • Support for Java, C++ and Python
  • Support for JavaScript
  • Reliable
  • Open Source (BSD-3)
  • Composite Type Extensions
  • No Parsing Overhead
  • Versioning
  • Add Another Pro

Protocol Buffers were originally designed by Google in 2001 and later released to the open source community in 2008.

0

Votes

The Choice of Google

Most of Google's internal services communicate via this technology.

0

Votes

Third Party Support for Multiple Programming Languages

0

Votes

Support for Java, C++ and Python

Why did you vote for Hessian?

Hessian is a protocol for services over HTTP. Unlike most other web service protocols, Hessian exchanges binary data instead of XML or JSON documents.

0

Votes

Binary exchange format means messages are efficient

If you've ever wondered how much of your bandwidth is eaten up by XML closing tags, then you might just like Hessian.

Add Another Pro to Hessian

Are We Missing Something?