{"id":305,"date":"2004-03-12T00:02:00","date_gmt":"2004-03-12T04:02:00","guid":{"rendered":"http:\/\/www.markbaker.ca\/wp\/?p=301"},"modified":"2004-03-12T00:02:00","modified_gmt":"2004-03-12T04:02:00","slug":"an-historic-look-at-specific-vs-generic-interfaces","status":"publish","type":"post","link":"http:\/\/www.markbaker.ca\/blog\/2004\/03\/an-historic-look-at-specific-vs-generic-interfaces\/","title":{"rendered":"An &#34;historic&#34; look at specific vs. generic interfaces"},"content":{"rendered":"<p>I stumbled upon an &#8220;old&#8221;\n<a href=\"http:\/\/www.w3.org\/TR\/1998\/WD-HTTP-NG-interfaces-19980710\/\">paper<\/a> by\n<a href=\"http:\/\/www2.parc.com\/spl\/members\/larner\/\">Dan Larner<\/a>\nyesterday that I first read\nwhen it was published back in &#8217;98, but had forgotten all about.  I find it\npoignant today not because I agree with its conclusions (I don&#8217;t), but because\nit so well describes the tension between specific and generic interfaces,\nalbeit without actually acknowledging the tension 8-O<\/p>\n\n<p>I liked this image in particular;<\/p>\n\n<img>\n\n<p>At the top you see the generic objects\/interfaces, while at the bottom are\nthe specific interfaces; Printer, Scanner, Copier (this is Xerox, after all).\nBut why do those services require specific interfaces?  Check out the methods\non Printer; Print, CancelJob, Status.  Why is that needed?  Why can you just\nnot call GET on the printer to retrieve it&#8217;s status, POST to the printer to\nprint a document, and DELETE on a job resource (which is subordinate to the\nprinter) to cancel a job?  Simple.<\/p>\n\n<p>Many of the folks behind HTTP-NG were\nfrom <a href=\"http:\/\/www.parc.com\">PARC<\/a> where\n<a href=\"http:\/\/www2.parc.com\/istl\/projects\/ILU\/\">ILU<\/a>, a CORBA ORB with\nsome funky extensions, provided the impetus for their W3C contributions.\nLike Web services proponents, their backgrounds were with systems which\ndidn&#8217;t constrain interfaces, and so it was pretty much an implicit\nrequirement that HTTP-NG would need to support specific interfaces by\nbasically being a messaging layer ala SOAP.  It&#8217;s too bad they didn&#8217;t take\nthe time to study what was capable with the HTTP interface specifically, or\neven constrained interfaces in general.  I think that&#8217;s a big part of the\nreason why HTTP-NG flopped.<\/p>","protected":false},"excerpt":{"rendered":"I stumbled upon an &#8220;old&#8221; paper by Dan Larner yesterday that I first read when it was published back in &#8217;98, but had forgotten all about. I find it poignant today not because I agree with its conclusions (I don&#8217;t), but because it so well describes the tension between specific and generic interfaces, albeit without [&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,34],"class_list":["post-305","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-soap","tag-w3c"],"_links":{"self":[{"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/posts\/305","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=305"}],"version-history":[{"count":0,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/posts\/305\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/media?parent=305"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/categories?post=305"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/tags?post=305"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}