{"id":1185,"date":"2005-12-08T16:28:00","date_gmt":"2005-12-08T20:28:00","guid":{"rendered":"http:\/\/www.markbaker.ca\/wp\/2005\/12\/08\/clemens-vasters-on-rest-in-indigo\/"},"modified":"2005-12-08T16:28:00","modified_gmt":"2005-12-08T20:28:00","slug":"clemens-vasters-on-rest-in-indigo","status":"publish","type":"post","link":"http:\/\/www.markbaker.ca\/blog\/2005\/12\/clemens-vasters-on-rest-in-indigo\/","title":{"rendered":"Clemens Vasters on REST in Indigo"},"content":{"rendered":"<p>As he\n<a href=\"http:\/\/www.markbaker.ca\/2002\/09\/Blog\/2005\/12\/07#deliciousdistobj.Clemens_Vasters..._back\">promised<\/a>\nyesterday, Clemens describes his RESTful extensions to WCF\/Indigo\nin a most enjoyable\n<a href=\"http:\/\/staff.newtelligence.net\/clemensv\/PermaLink,guid,2d61b97b-3a6e-46bd-89db-b1b20499ba18.aspx\">article<\/a> on his weblog.<\/p>\n\n<p>I really liked his detailed comparison of the HTTP and SOAP (as-practiced)\ndispatching models, as well as that of RPC vs. uniform operations.  While there were a\nfew little things I disagreed with, they weren&#8217;t significant enough to warrant\nmention, so I won&#8217;t.<\/p>\n\n<p>Unfortunately, I&#8217;m not a big fan of his extensions.<\/p>\n\n<p>I think the mapping he lays out there is reasonable in cases where\nyou&#8217;ve already got <em>legacy<\/em> code with <em>legacy<\/em> interfaces which\nneed binding to the Web, because you can just annotate those existing\ninterfaces with these extensions.  But when you&#8217;re developing <em>new<\/em> code,\nwhat purpose do service-specific interfaces serve?  Nobody&#8217;s invoking\nthem, since they&#8217;re just invoking the HTTP methods.  So why are they there?\nI think that can only serve to hide the resource-centric REST model away\nfrom developers, and make other tasks more difficult; for example, dealing\nwith resource collections.<\/p>\n\n<p>I think the general approach to Web based models should resemble\n<a href=\"http:\/\/java.sun.com\/j2ee\/sdk_1.3\/techdocs\/api\/javax\/servlet\/http\/HttpServlet.html\">HTTP Servlets<\/a>.\nNot to suggest that Java, nor inheritance, nor any language-specific feature\nof Servlets themselves need be used.  But instead, just to say\nthat the logical model of a RESTful programming framework should be one\nwhich requires &#8220;objects&#8221; (or &#8220;services&#8221;, or whatever you want to call them)\nexpose the uniform interface.<\/p>\n\n<p>FWIW, the best (for my definition of &#8220;best&#8221; 8-) one I&#8217;ve seen so far &#8211;\nthough I haven&#8217;t vetted it yet &#8211; is this\n<a href=\"http:\/\/microformats.org\/discuss\/mail\/microformats-rest\/2005-November\/000042.html\">nameless Ruby one<\/a>\nwhich is, AIUI, proposed for use as a\n<a href=\"http:\/\/www.rubyonrails.org\">Rails<\/a> extension.<\/p>","protected":false},"excerpt":{"rendered":"As he promised yesterday, Clemens describes his RESTful extensions to WCF\/Indigo in a most enjoyable article on his weblog. I really liked his detailed comparison of the HTTP and SOAP (as-practiced) dispatching models, as well as that of RPC vs. uniform operations. While there were a few little things I disagreed with, they weren&#8217;t significant [&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-1185","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\/1185","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=1185"}],"version-history":[{"count":0,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/posts\/1185\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/media?parent=1185"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/categories?post=1185"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/tags?post=1185"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}