{"id":410,"date":"2004-07-09T08:04:00","date_gmt":"2004-07-09T12:04:00","guid":{"rendered":"http:\/\/www.markbaker.ca\/wp\/?p=425"},"modified":"2004-07-09T08:04:00","modified_gmt":"2004-07-09T12:04:00","slug":"jim-webber-on-rest-pros-and-cons","status":"publish","type":"post","link":"http:\/\/www.markbaker.ca\/blog\/2004\/07\/jim-webber-on-rest-pros-and-cons\/","title":{"rendered":"Jim Webber on REST pros and cons"},"content":{"rendered":"<p>A <a href=\"http:\/\/jim.webber.name\/2004\/07\/09\/4356fc65-5c4b-4b03-bbfc-534466504e3c.aspx\">great one<\/a>\nfrom <a href=\"http:\/\/jim.webber.name\/\">Jim<\/a> this morning, about how REST seems to be all the\nbuzz in various distributed computing communities.  I noticed that too; it&#8217;s very cool, and a\nlong time coming.<\/p>\n\n<p>As for the cons, this one sentence of his seems to sum it up;<\/p>\n\n<blockquote>\nSure REST&#8217;s message-oriented approach is sensible, but it has the downside of mixing the semantics of the SOAP message with those of the transport protocol.\n<\/blockquote>\n\n<p>What can I say?  As I see it, that&#8217;s been the &#8220;Big Disconnect&#8221; since the\nwhole Web services thing got started.  Far too many people &#8211; especially\nthose weened on CORBA, DCOM, and similarly styled architectures &#8211; just don&#8217;t\nappreciate the <em>HUGELY<\/em> important role played by application protocols.\nThis is evident by the continual de-emphasis of them by treating them as transport\nprotocols, as Jim does there, intentionally or not.<\/p>\n\n<p>Document oriented SOAP messages should have no semantics by themselves, not\neven processMessage (modulo TCP &#8211; see below).  The semantics should be provided by the underlying\napplication protocol.  That way, the semantics of a SOAP envelope being\ntransferred with HTTP PUT won&#8217;t be confused with one being transferred\nwith HTTP POST or SMTP DATA; they mean different things, and you can\nlookup those meanings in the HTTP and SMTP specs.<\/p>\n\n<p>Now, if you sent it over TCP and want POST\/DATA\/processMessage-like\nsemantics, you need to bind those semantics to the TCP port via an\n<a href=\"http:\/\/www.iana.org\/assignments\/port-numbers\">IANA registry<\/a>.<\/p>\n\n<p>Transport protocol (e.g. TCP, UDP) independence is good.  Application\nprotocol independence must die die die!<\/p>","protected":false},"excerpt":{"rendered":"A great one from Jim this morning, about how REST seems to be all the buzz in various distributed computing communities. I noticed that too; it&#8217;s very cool, and a long time coming. As for the cons, this one sentence of his seems to sum it up; Sure REST&#8217;s message-oriented approach is sensible, but it [&hellip;]","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[26],"class_list":["post-410","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-soap"],"_links":{"self":[{"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/posts\/410","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/comments?post=410"}],"version-history":[{"count":0,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/posts\/410\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/media?parent=410"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/categories?post=410"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/tags?post=410"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}