{"id":91,"date":"2003-02-09T18:22:00","date_gmt":"2003-02-09T22:22:00","guid":{"rendered":"http:\/\/www.markbaker.ca\/wp\/?p=222"},"modified":"2003-02-09T18:22:00","modified_gmt":"2003-02-09T22:22:00","slug":"capeclear-presentation-about-architectural-styles","status":"publish","type":"post","link":"http:\/\/www.markbaker.ca\/blog\/2003\/02\/capeclear-presentation-about-architectural-styles\/","title":{"rendered":"Capeclear presentation about architectural styles"},"content":{"rendered":"<p><a href=\"http:\/\/www.thearchitect.co.uk\/weblog\/\">Jorgen<\/a> points to a\n<a href=\"http:\/\/www.thearchitect.co.uk\/weblog\/archives\/2003\/02\/000055.html\">presentation<\/a> he&#8217;s giving at an\n<a href=\"http:\/\/www.omg.org\/news\/meetings\/webservices2003europe\/index.htm\">OMG Workshop<\/a>\ncomparing Service Oriented, Resource Oriented, and Object Oriented architectural styles.\nThis is somewhat similar to my <a href=\"http:\/\/www.markbaker.ca\/2002\/08\/Rest\/\">REST Compared<\/a>\npresentation, though mine was done at a lower level.<\/p>\n\n<p>I&#8217;ll jot down some comments here as I read it.<\/p>\n\n<p>Slide 10, &#8220;In other words, architecture styles are design patterns for the\nstructure and interconnection within and between software systems.&#8221;.  Sort of.\nArchitectural styles are pattern *languages*, not just patterns.<\/p>\n\n<p>Slide 12, &#8220;Two main types of distributed software systems&#8221;.  This distinction\nseems quite arbitrary to me, and a superficial distinction at best.<\/p>\n\n<p>Slide 13, Request\/Response systems.  Here, an association is asserted between\nrequest\/response and RPC.  I consider those entirely orthogonal issues.  I know RPC systems\nwhich aren&#8217;t request\/response (e.g. Orbix+Isis), and I know of request\/response system\nwhich aren&#8217;t RPC (HTTP).  Perhaps it&#8217;s just a terminology issue, not sure.<\/p>\n\n<p>Slide 16, Object Oriented 1.  &#8220;Communications are implicitly stateful&#8221;; I don&#8217;t\nthink that&#8217;s the case.  Some are, like EJB\/CORBA, but some aren&#8217;t, like MTS\/COM (or\nwhatever it&#8217;s called now; Biztalk?)<\/p>\n\n<p>Slide 19, Resource Oriented 1.  I wouldn&#8217;t include SQL here, since it&#8217;s not\nresource centric.  If you wanted to create a &#8220;data oriented&#8221; super category,\nthen you might include it and resource-oriented, and file-oriented (FTP), etc..\nin there.  It also says that resources have state and identity, as if to suggest\nthat they don&#8217;t have behaviour like objects.  That&#8217;s not the case, they do have\nbehaviour.<\/p>\n\n<p>Slide 21, Resource Oriented 3.  POST isn&#8217;t for &#8220;partial updates&#8221;, it&#8217;s for\ntriggering the &#8220;behaviour&#8221; part of identity\/state\/behaviour.<\/p>\n\n<p>Slide 22, Resource Oriented 4.  &#8220;Resource Oriented&#8221; is not an architectural\nstyle.  REST is the only resource oriented architectural style I know about,\nthough any REST extension would also be so.  I suspect that any resource\noriented architectural style will be either REST, or a REST extension like\nthe Semantic Web, or <a href=\"http:\/\/www.ics.uci.edu\/~rohit\/ETcon-SOAProuting.ppt\">ALIN<\/a>.\nSee also slide 24.<\/p>\n\n<p>Slide 23, Service Oriented 1.  &#8220;Communications are implicitly stateless (all\nrequests are sent to the same service endpoint)&#8221;.  That reason doesn&#8217;t have\nanything to do with stateful\/statelessness, AFAIK.  If it was meant that the\nmessage is sent to the same in-memory object, then that would be implicitly\n*stateful*, as knowing what &#8220;the same&#8221; is requires a memory between invocations\non the server, and that memory is state.  From the discussions I&#8217;ve had with\nWeb services proponents,\n<a href=\"http:\/\/lists.w3.org\/Archives\/Public\/www-ws-arch\/2002Aug\/0055.html\">they say<\/a>\nthat service oriented architectures are state neutral; they can be stateful or stateless.<\/p>\n\n<p>Slide 28, Web Services vs. REST 1.  &#8220;There is no real conflict between the\ngeneral idea of Web services and the REST approach&#8221;; excuse me?! 8-O  There is\na fundamental and inescapable conflict between the two.  They cannot peacefully\nco-exist.  That Web service definition you quoted is completely\nincompatible with the REST architectural style.  End of story.<\/p>\n\n<p>Slide 29, Web Services vs.REST 2.  &#8220;The total set of Web services specifications\nprovide a superset of the REST approach&#8221;.  Absolutely true.  Yet by doing this &#8211;\ncreating a superset &#8211; most of REST&#8217;s important architectural constraints are\nobliterated.  A superset (in this sense of the word) of REST is not REST.  Architectural\nstyles combine via constraint intersection, not union.<\/p>\n\n<p>Slide 32, &#8220;Choosing Between Architectural Styles&#8221;.  Resource oriented styles\ndon&#8217;t revolve around cacheability.  That&#8217;s a small part of the advantages of the\nstyle.  There is nothing that is read-only\/mostly\/idempotent specific about its\nstyle.  It&#8217;s simply optimized for coarse grained data transfer, like document based\nservice oriented styles, only more loosely coupled via late binding.  Anyhow, even\nif you disagree, you should at the very least try to defend that position; there&#8217;s\nnothing in there that does that.<\/p>\n\n<p>Slide 33, &#8220;Combining Architectural Styles&#8221;.  See slide 29 comment above.\nYou cannot combine styles in this way, and hope to preserve the constraints\nthat are giving you your desired properties &#8230; which brings me to a general\npoint about this presentation; despite the very a propos snippets up front\nfrom the likes of Fowler, Shaw, Kazman, etc.., very little of that experience\nappeared to be reused in the rest of the presentation.  For example, I would\nhave expected the presentation to talk about the architectural properties\nof each of the styles presented, and extract from that the domain of applicability.<\/p>\n\n<p>Slide 34, &#8220;How to avoid the Choice of Style&#8221;.  Yikes.  As Neil Peart wrote,\n<a href=\"http:\/\/www.ivory.org\/lyrics\/freewill.html\">&#8220;If you choose not to decide,\nyou still have made a choice&#8221;<\/a>.  This is a recipe for failure.  Even SCOUT2\nassumes an architectural style, though a mostly constraint-less one (which is\na bug, not a feature).<\/p>\n\n<p>In general, I had high hopes for this, but with all due respect to Jorgen,\nit needs a lot more work.  Not only does it misrepresent the value of the\napproaches represented without backing up its claims, but it evaluates them\nin a context very different from the one accurately(!) described in the first\nfew pages by the gurus of the field of software architecture.<\/p>","protected":false},"excerpt":{"rendered":"Jorgen points to a presentation he&#8217;s giving at an OMG Workshop comparing Service Oriented, Resource Oriented, and Object Oriented architectural styles. This is somewhat similar to my REST Compared presentation, though mine was done at a lower level. I&#8217;ll jot down some comments here as I read it. Slide 10, &#8220;In other words, architecture styles [&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-91","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\/91","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=91"}],"version-history":[{"count":0,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/posts\/91\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/media?parent=91"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/categories?post=91"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/tags?post=91"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}