{"id":381,"date":"2004-05-21T08:18:00","date_gmt":"2004-05-21T12:18:00","guid":{"rendered":"http:\/\/www.markbaker.ca\/wp\/?p=365"},"modified":"2004-05-21T08:18:00","modified_gmt":"2004-05-21T12:18:00","slug":"eric-newcomer-on-doclit","status":"publish","type":"post","link":"http:\/\/www.markbaker.ca\/blog\/2004\/05\/eric-newcomer-on-doclit\/","title":{"rendered":"Eric Newcomer on doc\/lit"},"content":{"rendered":"<p><a href=\"http:\/\/savas.parastatidis.name\/2004\/04\/24\/24b6c3e0-460c-4077-b160-7d283e51fb95.aspx\">Via Savas<\/a>,\nI noticed a good <a href=\"http:\/\/www.iona.com\/blogs\/newcomer\/archives\/000041.html\">post from Eric Newcomer<\/a>;<\/p>\n\n<blockquote>\nThe doc\/literal style would seem to be the most abstract or the most &#8220;loosely coupled,&#8221; since it does not include data typing (although data typing is provided by an associated XML Schema) and does not include a method name in the message.\n<\/blockquote>\n\n<p>Wow, I&#8217;ve been saying exactly that &#8211; &#8220;not include a method in the message&#8221; &#8211;\nfor years now.  Good to see Eric on board! 8-)<\/p>\n\n<p>But unfortunately that&#8217;s not the whole story.  For the kind of loose coupling\nthat folks really seem to want, simply removing the method from the message\nisn&#8217;t sufficient.  The method has to be removed, as Don Box would say, from the\n<em>contract<\/em>.  Or, put another way, give all services the same contract\n(trust me, it&#8217;s true, and it&#8217;s worth spending considerable time understanding\nwhy)<\/p>\n\n<p>Another way &#8211; a software architectural way &#8211; of looking at this, is to ask\nwhat the different architectural constraints are at work between a message\nwithout the method in the body while still having service-specific contracts\/interfaces,\nand an architectural style where all contracts\/interfaces are the same.  If you\ncan&#8217;t find an architectural explanation for the loose coupling, then it&#8217;s not\nthere.  I&#8217;ve\n<a href=\"http:\/\/www.markbaker.ca\/2002\/09\/Blog\/2004\/03\/09\/#2004-03-operation\">mused<\/a>\nabout this recently.<\/p>\n\n<p>And there you have it, the principle difference between SOA and REST, and the\nreason why I&#8217;ve also been saying that REST is what Web services folks have been\nlooking for all along.<\/p>","protected":false},"excerpt":{"rendered":"Via Savas, I noticed a good post from Eric Newcomer; The doc\/literal style would seem to be the most abstract or the most &#8220;loosely coupled,&#8221; since it does not include data typing (although data typing is provided by an associated XML Schema) and does not include a method name in the message. Wow, I&#8217;ve been [&hellip;]","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[40],"class_list":["post-381","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-xml"],"_links":{"self":[{"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/posts\/381","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=381"}],"version-history":[{"count":0,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/posts\/381\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/media?parent=381"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/categories?post=381"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/tags?post=381"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}