{"id":1568,"date":"2006-06-13T07:51:00","date_gmt":"2006-06-13T11:51:00","guid":{"rendered":"http:\/\/www.markbaker.ca\/wp\/2006\/06\/13\/getting-soa\/"},"modified":"2006-06-13T07:51:00","modified_gmt":"2006-06-13T11:51:00","slug":"getting-soa","status":"publish","type":"post","link":"http:\/\/www.markbaker.ca\/blog\/2006\/06\/getting-soa\/","title":{"rendered":"Getting SOA"},"content":{"rendered":"<p><a href=\"http:\/\/blogs.zdnet.com\/SAAS\/?p=170\">Phil Wainewright gushes<\/a>\nover\n<a href=\"http:\/\/developer.employease.com\/extend.html\">Employease Extend<\/a>;<\/p>\n\n<blockquote cite=\"http:\/\/blogs.zdnet.com\/SAAS\/?p=170\">\nThis tells you that Employease has thought very carefully about granularity, and has exposed services based on whether they deliver complete results that will be useful to customers.\n<\/blockquote>\n\n<p>I don&#8217;t consider having separate services for &#8220;AddFoo&#8221; and &#8220;ChangeFoo&#8221;\n(where Foo = &#8220;CorpGroup&#8221;, &#8220;JobTitle&#8221;, etc..) to be a best practice.  What\nabout encapsulation?  These two services will necessarily be tied at the\nhip because they use the same data, so why not make a single service out\nof them?<\/p>\n\n<p>BTW, did you notice how their documentation uses links?\nThis might help explain their inability to appreciate how the Web\ncan be used to improve their SOA;<\/p>\n\n<pre>\n&lt;a href=\"\" onClick=\"window.open('documentation\/AddCorpGroup.html', [...]&lt;\/a&gt;\n<\/pre>\n\n<p>Sigh.<\/p>","protected":false},"excerpt":{"rendered":"Phil Wainewright gushes over Employease Extend; This tells you that Employease has thought very carefully about granularity, and has exposed services based on whether they deliver complete results that will be useful to customers. I don&#8217;t consider having separate services for &#8220;AddFoo&#8221; and &#8220;ChangeFoo&#8221; (where Foo = &#8220;CorpGroup&#8221;, &#8220;JobTitle&#8221;, etc..) to be a best practice. [&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-1568","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/posts\/1568","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=1568"}],"version-history":[{"count":0,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/posts\/1568\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/media?parent=1568"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/categories?post=1568"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/tags?post=1568"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}