{"id":128,"date":"2003-05-29T10:12:00","date_gmt":"2003-05-29T14:12:00","guid":{"rendered":"http:\/\/www.markbaker.ca\/wp\/?p=185"},"modified":"2003-05-29T10:12:00","modified_gmt":"2003-05-29T14:12:00","slug":"transport-transfer-and-coordination-generality","status":"publish","type":"post","link":"http:\/\/www.markbaker.ca\/blog\/2003\/05\/transport-transfer-and-coordination-generality\/","title":{"rendered":"Transport, transfer, and coordination generality"},"content":{"rendered":"<p>I was just reading over an article that gives a very\n<a href=\"http:\/\/builder.com.com\/article.jhtml?id=u00320030609lxe01.htm&amp;page=1&amp;vf=tt\">high level overview of GXA<\/a>,\nwhich, like so many others, makes the fundamental mistake of talking about HTTP as\na &#8220;transport protocol&#8221;.  Of course, one only need look at the\n<a href=\"http:\/\/www.ietf.org\/rfc\/rfc2616.txt\">HTTP spec<\/a> to see that it&#8217;s not,\nit&#8217;s a trans<em>fer<\/em> protocol, which is a very different beast; a coordination\nlanguage dealing in state.<\/p>\n\n<p>But after writing about coordination languages last night, something occurred to\nme; that the more general a transfer protocol, the easier it is to mistake it for\na transport protocol.  HTTP, effectively, has only two methods; GET and POST, and\nthey are commonly confused with the semantics of send() and recv().  Other transfer\nprotocols, like SMTP, or IM protocols, are also\n<a href=\"http:\/\/lists.w3.org\/Archives\/Public\/www-ws-arch\/2003May\/0201\">often confused<\/a>\nwith transport protocols, for the same reason.<\/p>\n\n<p>Coordination languages come in very general and very specific flavours.\n<a href=\"http:\/\/www-106.ibm.com\/developerworks\/webservices\/library\/ws-transpec\/?dwzone=webservices\">WS-Transaction<\/a>\nis very specific, for example, as it deals only in &#8220;transactions&#8221;; any task\nwhich can be modelled as a transaction, can be accomplished with WS-Transaction.<\/p>\n\n<p>An example of a very <em>general<\/em> coordination language, would be tuple space\nbased systems such as <a href=\"http:\/\/www.cs.yale.edu\/Linda\/linda.html\">Linda<\/a>\nor <a href=\"http:\/\/java.sun.com\/products\/javaspaces\/\">Javaspaces<\/a>.  These\nare general because they both deal in an abstraction known as a &#8220;space&#8221;.  A\nspace is a more general abstraction than a &#8220;transaction&#8221;, because more things\ncan be modelled as spaces.  But not every thing.  For example, modelling a\n<a href=\"http:\/\/www.markbaker.ca\/2002\/08\/Rest\/\">lightbulb as a space<\/a> leaves\none no way, without additional agreement, to check if the bulb is on or off.<\/p>\n\n<p>Of all the coordination languages that exist though, I suggest that there\nis one that is the most general, and it is REST&#8217;s &#8220;uniform interface&#8221;; it\ndeals in &#8220;resources&#8221;, which includes every thing.<\/p>","protected":false},"excerpt":{"rendered":"I was just reading over an article that gives a very high level overview of GXA, which, like so many others, makes the fundamental mistake of talking about HTTP as a &#8220;transport protocol&#8221;. Of course, one only need look at the HTTP spec to see that it&#8217;s not, it&#8217;s a transfer protocol, which is a [&hellip;]","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-128","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/posts\/128","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=128"}],"version-history":[{"count":0,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/posts\/128\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/media?parent=128"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/categories?post=128"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/tags?post=128"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}