InfoQ

InfoQ

News

My Bookmarks

Login or Register to enable bookmarks for unlimited time.

The content has been bookmarked!

There was an error bookmarking this content! Please retry.

REST-*.org

Posted by Boris Lublinsky on Sep 23, 2009

Sections
Architecture & Design,
Enterprise Architecture
Topics
Web Services ,
SOA ,
REST
Tags
JBoss

JBoss has formally announced a new REST-* initiative during JBoss World at the beginning of the month.

REST-* is trying to clearly separate itself from WS-* by pointing the following differentiators:

WS-* is an excellent set of specifications defining various protocols and envelope formats for implementing middleware services over a network. While a vast improvement over CORBA it does suffer from a few disadvantages that the REST-* community hopes to fix, mainly:

WS-* doesn't leverage HTTP WS-* uses HTTP as a transport protocol. WS-* services mainly use HTTP as a connection setup mechanism and ignore the rich and proven features that make the Web so successful... Because we are focusing on RESTful principles the specifications put out by this organization will fully leverage the HTTP protocol and not try to re-invent its technology

WS-* has a high barrier to entry The WS-* stack is hard to implement and requires a complex stack on both the client and server to use... We hope to minimize the barrier to entry in our suite of specifications.

WS-* requires an envelope format The WS-* stack requires SOAP, an envelope format for WS-* sent message... The HTTP message format is good enough. It is simple, robust, and flexible enough.

The architectural goals of this initiative are:

Low barrier to entry Clients that use the specification should have a very low barrier to entry. They shouldn't need to install a library or large stack of software to use a specification...

Edge Cases should be Extensions Edge cases that complicate the main specification should be defined in a separate sub-specification. Extensions should strive to be layered on top of the main specification.

Pragmatic REST While a specification should strive to follow RESTful principles, simplicity should never take a back seat to being a pure RESTafarian. If you need to bend the rules of REST to create a simpler design, then that's the path that should be taken.

80/20 Rule Specifications should remain simple... Specifications should cover 80% of the most common use cases. Edge cases should not be in the main specifications...

Avoid Envelope formats Whenever possible, avoid envelope formats... Envelope formats encourage tunneling over HTTP instead of leveraging HTTP... In most cases HTTP headers should be enough to transfer metadata about the request, response, or resource.

Isolate data formats to extensions If possible, specifications should try not to define new data formats.

According to the announcement, JBoss is attempting to create a fully collaborative community, similar to JBoss.org, not something driven by vendors for vendors. They are envisioning an open source approach to:

... defining new protocols... but one of the main points about this whole effort is to document guidelines and best practices for doing things in a RESTful manner (both with and without HTTP). That might include security, management, etc.

(By the way, the above quote from Mark Little already contradicts with the architectural goals mentioned before, by hinting to both new protocols and non HTTP support).

According to Mark:

If the only thing we end up being is an aggregator for links to "standard" ways of accomplishing this or that then that's a successful outcome too... this was started: because our community wanted it. They kept running up against the same questions and lack of clear answers from various sources such as books, experts in this space and other resources. In some cases they'd get many different answers. Does that mean the answers don't exist? No. But if people who really understand REST can't agree on something then what hope is there for those who just want to go and use it? That's what REST-* is about: bringing together communities to try to come up with clear guidelines so that there's a place for everyone to go when they need those answers.

Although this new initiative is trying to stay away from REST vs WS debate:

The benefits of REST over WS-* has been debated across many articles, blogs, and public mail lists. We don't want to rehash all of it here. Please do a Google search on "REST vs. WS-*" if you want more information.

It effectively does so, by making some (not completely founded) references to WS* features. For example, it tries to say that WS* is heavy, while REST is a light-weight. Well, both standards can be implemented "by hand", in which case (assuming HTTP transport) both require about the same amount of code. On another hand, if a runtime support for automatic marshalling/unmarshalling and message routing is used, the amount of code is also about the same (for example, RestEasy - which is a very nice framework - distribution contains 38 jars). If the comparison is done for the same level of abstraction, the amount of required code is about the same. And the list goes on.

So, it comes as no surprise that the REST* announcement caused quite a few replies on Internet. Steve Jones’s post - REST-* can you please grow up - sums it up quite well:

The REST-* effort might end up documenting what already exists which indicates that part of the challenge is that lots of people don't really know what REST is and certainly struggle as they look to build higher class systems and interoperate between organizations. Part of this is of course about up-front contracts and the early vs. late validation questions. But part of it also appears to be pure snobbery and a desire to retain arcane knowledge.

He continues by stating that:

If REST really is some sword of Damocles that can cut through the integration challenges of enterprises and the world then what is the problem with documenting how it does this and having a few standards that make it much clearer how people should be developing. Most importantly so people (SAP and Oracle for instance) can create REST interfaces in a standardized way that can be simply consumed by other vendors solutions. It can decide whether WADL is required and whether Atom and AtomPub really cover all of the enterprise scenarios or at least all of the ones that count (i.e. lets not have a REST-TX to match the abomination of WS-TX).

Both REST and WS have their place in real life implementations. The issue should be not which one is better, but rather how they can coexist and when is one more appropriate. The other important thing is to make sure that comparisons are based on merits, not beliefs, no matter how strong they are. There are many useful standards and patterns created by WS* and the issue is whether it makes sense to start over or to see how these patterns can be applied to REST.

  • This article is part of a featured topic series on SOA

20 comments

Watch Thread Reply

Roy T. Fielding on REST-* by Peter Thomas Posted
Re: Roy T. Fielding on REST-* by Aslak Hellesøy Posted
Re: Roy T. Fielding on REST-* by Boris Lublinsky Posted
Re: Roy T. Fielding on REST-* by Jim Webber Posted
Re: Roy T. Fielding on REST-* by Dilip Krishnan Posted
Re: Roy T. Fielding on REST-* by Boris Lublinsky Posted
Re: Roy T. Fielding on REST-* by Alef Arendsen Posted
Re: Roy T. Fielding on REST-* by Dilip Krishnan Posted
Re: Roy T. Fielding on REST-* by Bill Burke Posted
Who can think there could ever be an equivalence between REST and WS? by Jean-Jacques Dubray Posted
Re: Who can think there could ever be an equivalence between REST and WS? by Dilip Krishnan Posted
Re: Who can think there could ever be an equivalence between REST and WS? by Bill Burke Posted
Really? by Ross Mason Posted
Need vendor neutral organization by John Harby Posted
Re: Need vendor neutral organization by Mark Little Posted
Re: Need vendor neutral organization by John Harby Posted
Already widely ridiculed proposal by Alex Blewitt Posted
Re: Already widely ridiculed proposal by Mark Little Posted
poor name choice by Kevin Williams Posted
Isolate Data Formats to Extensions by Bill Burke Posted
  1. Back to top

    Roy T. Fielding on REST-*

    by Peter Thomas

    Any article on REST-* that does not include Roy T. Fielding's comments is woefully incomplete, IMO ;)

    Quite frankly, this is the single dumbest attempt at one-sided "standardization" of anti-REST architecture that I have ever seen. It even manages to one-up the previous all-time-idiocy of IBM when they renamed their CORBA toolkit "Web Services" in a deliberate attempt to confuse customers into thinking they
    had something to do with the Web.


    tech.groups.yahoo.com/group/rest-discuss/messag...

  2. Back to top

    Re: Roy T. Fielding on REST-*

    by Aslak Hellesøy

    These folks don't get it. This is a huge step in the wrong direction. Like Roy said: Just close the stupid site down.

  3. Back to top

    Who can think there could ever be an equivalence between REST and WS?

    by Jean-Jacques Dubray

    <blokquote>Both REST and WS have their place in real life implementations. The issue should be not which one is better, but rather how they can coexist and when is one more appropriate. The other important thing is to make sure that comparisons are based on merits, not beliefs, no matter how strong they are. There are many useful standards and patterns created by WS* and the issue is whether it makes sense to start over or to see how these patterns can be applied to REST.</blokquote>

    Thank you Boris, IMHO, even Roy would benefit reflecting on your conclusion. REST or even REST-* is not and cannot be made equivalent to WS-* (and vice versa, of course).

  4. Back to top

    Re: Roy T. Fielding on REST-*

    by Boris Lublinsky

    Can we finally agree that the word "service" is as, if not more important, then "Web"

  5. Back to top

    Re: Roy T. Fielding on REST-*

    by Jim Webber

    @Boris: No. I'm afraid that would be a mistake.

  6. Back to top

    Really?

    by Ross Mason

    This seems misguided. Why screw with something good. The challenges people hit with REST is that it doesn't try and do everything, that is a good thing. The approach fits very well for many web applications but not all. Can we just help people identify when to use REST or Web Services?

    BTW looking at the goals (www.jboss.org/reststar/overview/goals.html) isn't that what REST has achieved already?

    Cheers,

    Ross

  7. Back to top

    Need vendor neutral organization

    by John Harby

    One aspect of WS-* that I felt made sense is that the specs were developed in some vendor neutral organizations, W3C and OASIS. This sounds like spec development by a single vendor, would Microsoft be contributing as they did in WS-*? How about Oracle?

    I'm not sure on the debate as to whether this makes sense at all but I would think that these types of specs should be developed in a neutral fashion.

  8. Back to top

    Re: Roy T. Fielding on REST-*

    by Alef Arendsen

    Nooooo, not yet another standards body for something so useful and elegant as REST... I'm glad Roy voiced his opinion... REST is just an interpretation of how to use HTTP in an effective way to do more than just send HTML documents across the wire. That's what it's good at and it should stay that way.

    OTOH, who am I, not having touched an IDE for three months ;-).

  9. Back to top

    Re: Roy T. Fielding on REST-*

    by Dilip Krishnan

    +1 :-)

  10. Back to top

    Re: Who can think there could ever be an equivalence between REST and WS?

    by Dilip Krishnan


    Thank you Boris, IMHO, even Roy would benefit reflecting on your conclusion. REST or even REST-* is not and cannot be made equivalent to WS-* (and vice versa, of course).

    Very true. On that same token, the usage characteristics of RESTful services is very different from WS-* services and REST-* may not really be suitable for the characteristics that we expect to see in the "web".


    There are many useful standards and patterns created by WS* and the issue is whether it makes sense to start over or to see how these patterns can be applied to REST.

    @Boris, I see your point, but I believe we should come at it from the other way. I would instead try to see if we can incorporate the goals of REST-* to the already created WS-* stack so that the whole WS-* stack can gracefully degrade to a RESTful stack given the architectural criteria.

  11. Back to top

    Re: Roy T. Fielding on REST-*

    by Dilip Krishnan

    Can we finally agree that the word "service" is as, if not more important, then "Web"


    What does this even mean? important for what and for whom?

  12. Back to top

    Re: Roy T. Fielding on REST-*

    by Boris Lublinsky

    What are we trying to do?
    Servicize or Webify our applications? Are we trying to decouple existing stovepipes or just use Web as communication protocol?

  13. Back to top

    Already widely ridiculed proposal

    by Alex Blewitt

    It seems strange that this was announced without reference to the reams of traffic that the original proposal stirred up, especially Roy's comments on the subject.

    In summary, it's a horrible idea, suggested by those who actually don't really grasp what REST is all about, and think that as long as you stick everything across an HTTP interface, then it's all good. But this really takes stupidity into whole new leagues; for whilst there are some who thing a GETSful architecture is in fact a RESTful one, this promises to bring the clarity and succinctness of WS-* to an otherwise sane architectural style.

    Not for nothing has this proposal been suggested as DIRT-*, since it's basically a way of avoiding SOAP.

  14. Back to top

    Re: Already widely ridiculed proposal

    by Mark Little

    Alex, if you look then you should find that those involved in this do "grasp what REST is all about" and Bill's approach is not to try to duplicate WS-* with REST (whether or not using HTTP). As he keeps saying, and some seem all too willing to ignore, this should be a wide community effort. So if you "grasp what REST is all about" and care enough for the wider REST audience (not just those who clearly do "grasp what REST is all about" but those who are still struggling with concepts and Q&A) to ensure that it doesn't "bring the clarify and succinctness of WS-* to an otherwise sane architectural style" then get involved. Last time I looked it was free to join and participate. I'm sure your (and others) constructive input would be greatly appreciated.

  15. Back to top

    Re: Need vendor neutral organization

    by Mark Little

    Hi John. Bill's made a few changes since the initial release of the site and blogged about them:

    reststar.wordpress.com/2009/09/18/were-listenin...

    and

    reststar.wordpress.com/2009/09/23/we-screwed-up...

    I think your point is addressed with the IETF reference.

  16. Back to top

    poor name choice

    by Kevin Williams

    The similarity between REST-* (called rest star?) and WS-* (known as W S deathstar) make me wonder if Darth Vader is behind this crap too.

    REST is fine the way it is, please don't f#@! with it.

  17. Back to top

    Isolate Data Formats to Extensions

    by Bill Burke

    I'm going to be fixing the language around this. What I mean by this is that to fit under the 80/20 rule, we want media types of the core specs to be very simple. Edge cases or extension protocols should be defined in new media types and link relationships.

  18. Back to top

    Re: Roy T. Fielding on REST-*

    by Bill Burke

    Believe it or not I appreciated Roy's (and other's) bluntness. I just hope these rants are more of "Get your act together!" rather than just turning your back on us. If you've read the rest-star blog You'll see we recognized our initial screw ups and that we are working to improve things on all levels: technical, website, direction, message.

    The point is, this was an announcement of a launch of an effort not of a final product. We're not perfect. We will make mistakes. We don't want to do this alone.

  19. Back to top

    Re: Who can think there could ever be an equivalence between REST and WS?

    by Bill Burke

    @Dilip

    @Boris, I see your point, but I believe we should come at it from the other way. I would instead try to see if we can incorporate the goals of REST-* to the already created WS-* stack so that the whole WS-* stack can gracefully degrade to a RESTful stack given the architectural criteria.


    What I think can be gathered from WS-* specs and open source and commercial middleware is requirements and use cases.

  20. Back to top

    Re: Need vendor neutral organization

    by John Harby

    Thanks Mark. I think this makes good sense. I also like the open source project as it allows us individuals the opportunity to participate.

Educational Content

Cool Code

Kevlin Henney examines code samples to see what can be learned from them starting from the premise that one won’t write great code unless he knows how to read it.

Collaboration: At the Extremities of Extreme

Jason Ayers share the observations he made watching a team of developers collaborating in real time on the same code base, pushing XP, pair programming and continuous integration to their extremes.

Yesod Web Framework

Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).

Transactions without Transactions

Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.

Attila Szegedi on JVM and GC Performance Tuning at Twitter

Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.

10 tips on how to prevent business value risk

One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.

Interview: Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives

InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.

Beauty Is in the Eye of the Beholder

Alex Papadimoulis discusses ugly code, where it comes from, how to avoid it, and how to get rid of it.