One of the promises of the REST architectural style is an increase in reuse – a design done with resources is supposed to yield more options for reusing information and logic. REST inventor Roy T. Fielding has talked about "engineering for serendipity" and suggested that this should be one of a REST designer's main goals.
Planning reusability is hard, designing for unforeseen reuse might be even harder. In this QCon London 2008 talk, Steve Vinoski presents some of the barriers to reuse found in typical distributed systems development approaches, and discusses how REST not only helps overcome some of these barriers, but also leads to potentially significantly increased chances for achieving serendipitous reuse.
Steve explains how he, as a "CORBA guy", became involved with REST, and how his failure to convince his employer to adopt this ultimately led to his leaving. After discussing the "descendants of RPC" (CORBA, EJB, .NET, SCA, SOAP, WSDL) and message queueing alternatives, he outlines the Unix ecosystem as an example of one where a uniform interface furthers reuse (e.g. a tool like awk, written ages ago, can still be combined into brand new tools via a pipe).
He continues with a refresher on HTTP's uniform interface, which enables visibility into interactions, caching, monitoring, mediation, strong implementation hiding and a simplified overall architecture. Steve points out that most of what he's done in the past dealt with the effects of having a specific interface (generating code, creating the runtime infrastructure), and that most of this disappears in REST.
After covering other REST topics, such as representation formats, the role of media types registered with IANA, and the hypermedia constraint, he discusses wat he considers to be the most important benefit: RPC-oriented systems try to extend language paradigms over the wire, which encourages variation in both methods and datatypes, which ultimately can't scale, which REST is purpose-built for distributed systems, properly separates concerns and allows constrained variability only where required.
Watch the full presentation (60 minutes) for more details about REST, reuse and serendipity.