Passion * Technology * Ruthless Competence

Thursday, June 14, 2007

Morning Coffee 90 - REST Response Roundup

Last week, I asked a REST Question: is it still REST if you don't use HTTP? My interest in durable messaging is well documented, so I want is to see a RESTful approach combined with a durable messaging. We all know my durable messaging tool of choice, though I'd trade SSB in a second for something that provided durable duplex messaging in a standard way.

Anyway, there were some fairly interesting responses that I wanted to highlight.

Probably most interesting to the discussion at hand was John Heintz' comment pointing out the existence of "Waka",  a new transfer protocol to replace HTTP from Roy Fielding. The fact that Dr. REST is working on a new protocol that's designed to be more RESTful than HTTP should put to bed any REST "is and only is" HTTP arguments.

Erik Johnson agrees that you can separate REST and HTTP, but he thinks I ought to call it something else. He suggests "resource-oriented" - have we created a new TLA here? Are you down with ROA, ROAD, ROD, ROP and all the other acronyms we could spawn?

Nick Malik breaks out the IFaP acronym - Identifier, Format, Protocol - and points out "Each of the successful Internet standards, from HTTP to SMTP, has an IFaP at the heart of it." But does anyone think SMTP is RESTful? I don't. I think standardization of IFaP's is on par in importance with RESTfulness, but they're orthogonal. That is to say I think Nick's wrong - I'm guessing we'll go a few rounds on this when he gets back from Nashville - or should I say, if he gets back? :)

Arnon Rotem-Gal-Oz has been wondering about REST without HTTP the same way I have, but he doesn't really go into detail as to why. I want durable messaging, Arnon mentions something about topic hierarchies. Couldn't you do that with HTTP, Arnon? He also points out a new DDJ article on REST. It's good, if high-level overview-y.

Pat Helland writes that Every Noun Can be Verbed. It's more related to CRUD is CRAP than REST == HTTP, but it's well worth the read. His point about using filling out a form being CRUD, but then handing the form over to someone else being an invocation of behavior is fairly eye-opening. As long as you "interpret the durn' things with the correct semantics", it doesn't really matter if they're nouns or verbs.

Last but not least, Ted Neward and Adrian Trenaman discuss SOAP vs. POX over on The Server Side. They focus too much on SOAP encoding (isn't that dead yet?), but near the end Ted points out: "Problem is, REST assumes that you want to carry all of the state in the payload itself, and for a modern enterprise system, or, hell, even for a game, that’s not always a safe assumption." Doesn't address my questions about using REST without HTTP, but a very good point nonetheless.

Posted By Harry Pierson at 9:38 AM Pacific Daylight Time
Thursday, June 14, 2007 10:23:01 AM (Pacific Standard Time, UTC-08:00)
Hi Harry,
> but he doesn't really go into detail as to why.
I thought I did explain it - anyway I'll try that again
REST is said to be an architectural style - i.e. it has components, relations, attributes and constrains on how to use all of them - e.g. uniform interface etc.

If it is an architectural style then you should be able to apply it in different technologies - I know I can do that with other architectural styles I know like SOA, Client/server, pipe and filters etc.
For me it is interesting on the theoretical level as a way to look at architectural problems and principles but also on the practical level since you can't always use HTTP in a project or you may have to mix several communications protocols etc.

Arnon
Friday, June 15, 2007 2:13:59 AM (Pacific Standard Time, UTC-08:00)
Gourmet coffee at coffeebreakusa(dot)com
Alex
Comments are closed.

PDC08

patterns & practices
Summit 2008

Øredev

Change Congress
Recent Bookmarks
Tags .NET Framework (2) ADO.NET (5) Agile (7) AJAX (3) Architecture (284) Guidance (6) Interop (2) Modelling (61) Patterns (7) Process (4) SOA (93) Web Services (5) ASP.NET (24) Battlestar Galactica (3) BI (2) BizTalk (4) Blogging (115) dasBlog (11) Podcasting (4) BPM (1) C# (10) C++ (4) Capitals (5) CardSpace (3) CLR (2) College Football (10) Comedy Central (1) Community (81) Concurrency (6) Consumer Electronics (1) Database (13) Dependency Injection (2) Development (117) C Plus Plus (1) Embedded (5) Lanugages (37) Media (2) P2P (11) Rotor (1) SharePoint (6) SOP (3) DIY (1) DLR (14) Domain Specific Languages (13) Durable Messaging (5) Dynamic Languages (10) Dynamic Silverlight (1) Education (3) Enterprise 2.0 (1) Entertainment (14) ETech (15) F# (51) Functional Programming (17) Game Development (2) Guidance Automation (3) Hardware (8) HawkEye (3) Hockey (29) Home Electronics (1) Home Network (5) Humor (5) IASA (1) Idempotence (3) infrastructure (5) Instrumentation (4) Integration (2) IronPython (27) IronRuby (11) Java (2) Job (3) LINQ (19) Live Mesh (2) Lost (1) Master Data Management (1) Media 2.0 (6) Microsoft (29) MIX06 (2) Mobile Phone (1) Monads (5) Morning Coffee (172) Object Oriented (4) Office (5) Open Source (5) Open Space (2) Operations (3) Other (135) Art (1) Books (1) Family (31) Games (18) General Geekery (26) Home Theater (1) Movies (23) Music (20) Politics (3) Society (1) Sports (37) Working at MSFT (15) Parsing Expression Grammar (16) patterns & practices (2) PDC08 (2) Politics (42) PowerPoint (2) PowerShell (33) Presentation (5) Projects (1) HawkWiki (1) Python (4) Quote of the Day (4) Refactoring (1) Research (2) REST (18) Reuse (5) Robotics (2) Rome (5) Ruby (23) Ruby on Rails (1) Sci-Fi (2) Scripting (4) Security (3) Service Broker (14) SharePoint (2) Silverlight (18) Social Software (1) Software + Services (2) Software Design (1) Software Factories (11) Software Industry (1) Spark (1) SQL Server (2) Stephen Colbert (1) TechEd (7) TechEd06 (1) TechRec League (1) Television (6) Travel (6) Unified Client (1) Unit Testing (4) UX (1) Virtual PC (2) Visual Basic (1) Visual Studio (20) Volta (2) Washington Capitals (34) WCF (31) Web 2.0 (65) Web Services (5) WF (21) Windows Live (23) Xbox (1) Xbox 360 (53) XML (7) XNA (14)
Disclaimer: The information in this weblog is provided "AS IS" with no warranties, and confers no rights. This weblog does not represent the thoughts, intentions, plans or strategies of my employer. It is solely my opinion. Inappropriate comments will be deleted at the authors discretion.