<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" version="2.0">
  <channel>
    <title>Matt Terski's Blog</title>
    <link>http://www.terski.com/blog/</link>
    <description>Writing tomorrow's legacy applications today</description>
    <copyright>Matt Terski</copyright>
    <lastBuildDate>Tue, 25 May 2004 03:29:01 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 1.7.5016.0</generator>
    <managingEditor>blogg@terski.com</managingEditor>
    <webMaster>blogg@terski.com</webMaster>
    <item>
      <trackback:ping>http://www.terski.com/blog/Trackback,guid,9e4c38e9-c902-43db-81dc-a9c77273b888.aspx</trackback:ping>
      <pingback:server>http://www.terski.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.terski.com/blog/PermaLink,guid,9e4c38e9-c902-43db-81dc-a9c77273b888.aspx</pingback:target>
      <wfw:comment>http://www.terski.com/blog/CommentView,guid,9e4c38e9-c902-43db-81dc-a9c77273b888.aspx</wfw:comment>
      <wfw:commentRss>http://www.terski.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=9e4c38e9-c902-43db-81dc-a9c77273b888</wfw:commentRss>
      <slash:comments>0</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <div class="Section1">
          <p>
         My friend Bill <a href="http://www.straightlinesoft.com/PermaLink.aspx?guid=0812055c-8ac5-440e-a4ed-83ff21ed942a">points
         out</a> that ObjectSpaces has been delayed until Longhorn. I could be wrong, but I
         sense the initial enthusiasm for ObjectSpaces is waning. So now I’m pondering: 
      </p>
          <p style="MARGIN-LEFT: 0.5in">
            <span>Do we need O/R mappers anymore? Did we ever?</span>
          </p>
          <p>
         At the risk of sounding like someone who thinks SOA will solve all of the world’s
         problems, I want to spend some time testing the following hypothesis: 
      </p>
          <p style="MARGIN-LEFT: 0.5in">
            <span>Does a service-oriented architecture diminish the need for an O/R mapper?</span>
          </p>
          <p>
         SOA changes not only the way we build our back-end services, but also the way we build
         our front-ends. In a recent conversation with <a href="http://www.lhotka.net/WeBlog">Rocky
         Lhotka</a>, he made the point that in an SOA, the client and the service are really
         separate applications – separated by a trust boundary. He also pointed out that
         invoking a service is a lot like invoking a stored procedure: 1) construct a request
         by filling in some parameters, 2) invoke a named operation, and 3) handle the response. 
      </p>
          <p>
         Clemens has posted recently about something he calls <a href="http://staff.newtelligence.net/clemensv/PermaLink.aspx?guid=04cfedd9-12d3-4070-ab7c-b52bc67fda2d">data
         services</a>. In short, he makes the case for accessing your data through a service. 
      </p>
          <p>
         Continuing these thoughts, I’m now asking, “Can a service be akin to a
         smarter stored procedure?” If you look at it this way, you can write your ‘stored
         procedures’ in C# without Yukon ;-) 
      </p>
          <p>
         In an SOA, the client has its own layers (presentation, business, data) as does the
         service. But the client’s data layer does not necessarily connect to a database,
         It might just connect to a service. This gets to my reasons for asking whether we
         need O/R mappers: 
      </p>
          <p style="MARGIN-LEFT: 0.5in; TEXT-INDENT: -0.25in">
            <span style="FONT-FAMILY: Symbol">·<span style="FONT: 7pt 'Times New Roman'">      </span></span> The
         client’s business layer no longer needs to map to a relational database. Instead,
         it needs to map to service requests and responses. 
      </p>
          <p style="MARGIN-LEFT: 0.5in; TEXT-INDENT: -0.25in">
            <span style="FONT-FAMILY: Symbol">·<span style="FONT: 7pt 'Times New Roman'">      </span></span> If
         the service itself is a ‘smarter stored procedure’, does it need a rich
         domain model? If not, it doesn’t need to map this domain model to a relational
         model. 
      </p>
          <p>
         I’m writing more questions than answers in this post, but here’s one more: 
      </p>
          <p style="MARGIN-LEFT: 0.5in; TEXT-INDENT: -0.25in">
            <span style="FONT-FAMILY: Symbol">·<span style="FONT: 7pt 'Times New Roman'">      </span></span> If
         we really needed O/R mappers, wouldn’t we already have them? Yes, I know a number
         of vendors already sell O/R mappers, but if they were so vital, wouldn’t they
         be built into the fabric of every platform by now? I mean, saving objects into a relational
         database is something we’ve been doing for a long time. If O/R mappers were
         really the answer, wouldn’t this be a solved problem by now? 
      </p>
        </div>
        <img width="0" height="0" src="http://www.terski.com/blog/aggbug.ashx?id=9e4c38e9-c902-43db-81dc-a9c77273b888" />
      </body>
      <title>Is O/R Mapping Necessary Anymore?</title>
      <guid>http://www.terski.com/blog/PermaLink,guid,9e4c38e9-c902-43db-81dc-a9c77273b888.aspx</guid>
      <link>http://www.terski.com/blog/PermaLink,guid,9e4c38e9-c902-43db-81dc-a9c77273b888.aspx</link>
      <pubDate>Tue, 25 May 2004 03:29:01 GMT</pubDate>
      <description>&lt;div class=Section1&gt;
   &lt;p&gt;
      My friend Bill &lt;a href="http://www.straightlinesoft.com/PermaLink.aspx?guid=0812055c-8ac5-440e-a4ed-83ff21ed942a"&gt;points
      out&lt;/a&gt; that ObjectSpaces has been delayed until Longhorn. I could be wrong, but I
      sense the initial enthusiasm for ObjectSpaces is waning. So now I&amp;#8217;m pondering: 
   &lt;/p&gt;
   &lt;p style="MARGIN-LEFT: 0.5in"&gt;
      &lt;span&gt;Do we need O/R mappers anymore? Did we ever?&lt;/span&gt; 
   &lt;/p&gt;
   &lt;p&gt;
      At the risk of sounding like someone who thinks SOA will solve all of the world&amp;#8217;s
      problems, I want to spend some time testing the following hypothesis: 
   &lt;/p&gt;
   &lt;p style="MARGIN-LEFT: 0.5in"&gt;
      &lt;span&gt;Does a service-oriented architecture diminish the need for an O/R mapper?&lt;/span&gt; 
   &lt;/p&gt;
   &lt;p&gt;
      SOA changes not only the way we build our back-end services, but also the way we build
      our front-ends. In a recent conversation with &lt;a href="http://www.lhotka.net/WeBlog"&gt;Rocky
      Lhotka&lt;/a&gt;, he made the point that in an SOA, the client and the service are really
      separate applications &amp;#8211; separated by a trust boundary. He also pointed out that
      invoking a service is a lot like invoking a stored procedure: 1) construct a request
      by filling in some parameters, 2) invoke a named operation, and 3) handle the response. 
   &lt;/p&gt;
   &lt;p&gt;
      Clemens has posted recently about something he calls &lt;a href="http://staff.newtelligence.net/clemensv/PermaLink.aspx?guid=04cfedd9-12d3-4070-ab7c-b52bc67fda2d"&gt;data
      services&lt;/a&gt;. In short, he makes the case for accessing your data through a service. 
   &lt;/p&gt;
   &lt;p&gt;
      Continuing these thoughts, I&amp;#8217;m now asking, &amp;#8220;Can a service be akin to a
      smarter stored procedure?&amp;#8221; If you look at it this way, you can write your &amp;#8216;stored
      procedures&amp;#8217; in C# without Yukon ;-) 
   &lt;/p&gt;
   &lt;p&gt;
      In an SOA, the client has its own layers (presentation, business, data) as does the
      service. But the client&amp;#8217;s data layer does not necessarily connect to a database,
      It might just connect to a service. This gets to my reasons for asking whether we
      need O/R mappers: 
   &lt;/p&gt;
   &lt;p style="MARGIN-LEFT: 0.5in; TEXT-INDENT: -0.25in"&gt;
      &lt;span style="FONT-FAMILY: Symbol"&gt;&amp;#183;&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; The
      client&amp;#8217;s business layer no longer needs to map to a relational database. Instead,
      it needs to map to service requests and responses. 
   &lt;/p&gt;
   &lt;p style="MARGIN-LEFT: 0.5in; TEXT-INDENT: -0.25in"&gt;
      &lt;span style="FONT-FAMILY: Symbol"&gt;&amp;#183;&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; If
      the service itself is a &amp;#8216;smarter stored procedure&amp;#8217;, does it need a rich
      domain model? If not, it doesn&amp;#8217;t need to map this domain model to a relational
      model. 
   &lt;/p&gt;
   &lt;p&gt;
      I&amp;#8217;m writing more questions than answers in this post, but here&amp;#8217;s one more: 
   &lt;/p&gt;
   &lt;p style="MARGIN-LEFT: 0.5in; TEXT-INDENT: -0.25in"&gt;
      &lt;span style="FONT-FAMILY: Symbol"&gt;&amp;#183;&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; If
      we really needed O/R mappers, wouldn&amp;#8217;t we already have them? Yes, I know a number
      of vendors already sell O/R mappers, but if they were so vital, wouldn&amp;#8217;t they
      be built into the fabric of every platform by now? I mean, saving objects into a relational
      database is something we&amp;#8217;ve been doing for a long time. If O/R mappers were
      really the answer, wouldn&amp;#8217;t this be a solved problem by now? 
   &lt;/p&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://www.terski.com/blog/aggbug.ashx?id=9e4c38e9-c902-43db-81dc-a9c77273b888"&gt;</description>
      <comments>http://www.terski.com/blog/CommentView,guid,9e4c38e9-c902-43db-81dc-a9c77273b888.aspx</comments>
      <category>Software Architecture</category>
    </item>
    <item>
      <trackback:ping>http://www.terski.com/blog/Trackback,guid,703ff4e5-03db-4db7-bf93-8e76d58ea42d.aspx</trackback:ping>
      <pingback:server>http://www.terski.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.terski.com/blog/PermaLink,guid,703ff4e5-03db-4db7-bf93-8e76d58ea42d.aspx</pingback:target>
      <wfw:comment>http://www.terski.com/blog/CommentView,guid,703ff4e5-03db-4db7-bf93-8e76d58ea42d.aspx</wfw:comment>
      <wfw:commentRss>http://www.terski.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=703ff4e5-03db-4db7-bf93-8e76d58ea42d</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      You read it here first: The term service-oriented architecture shall be renamed to
      message-oriented architecture. SOA shall become MOA.
   </p>
        <p>
      Well, not really. It won’t happen, even though it should.
   </p>
        <p>
      The entire point of SOA is to achieve loose coupling between applications. That’s
      it. Loose coupling.
   </p>
        <p>
      But that loose coupling has important second-order effects. It allows applications
      to evolve independently. It allows applications to scale independently. It allows
      applications to change deployment models independently. All without breaking one another.
   </p>
        <p>
          <a href="http://www.lhotka.net/WeBlog/PermaLink.aspx?guid=9e06bcfd-380d-4ef6-9263-2f8527492945">As
      many have rightly pointed out</a>, this goodness comes at a price: The only way
      to talk to a “service-oriented” application is to send it a message. You
      don’t get to see its types. You don’t know where it is really executing.
      You get to send it a message. It might send you a message in reply.
   </p>
        <p>
      So, shouldn’t we call it, “Message-Oriented Architecture?”
   </p>
        <img width="0" height="0" src="http://www.terski.com/blog/aggbug.ashx?id=703ff4e5-03db-4db7-bf93-8e76d58ea42d" />
      </body>
      <title>Service-Oriented Architecture Misnamed?</title>
      <guid>http://www.terski.com/blog/PermaLink,guid,703ff4e5-03db-4db7-bf93-8e76d58ea42d.aspx</guid>
      <link>http://www.terski.com/blog/PermaLink,guid,703ff4e5-03db-4db7-bf93-8e76d58ea42d.aspx</link>
      <pubDate>Thu, 20 May 2004 21:35:53 GMT</pubDate>
      <description>&lt;p&gt;
   You read it here first: The term service-oriented architecture shall be renamed to
   message-oriented architecture. SOA shall become MOA.
&lt;/p&gt;
&lt;p&gt;
   Well, not really. It won&amp;#8217;t happen, even though it should.
&lt;/p&gt;
&lt;p&gt;
   The entire point of SOA is to achieve loose coupling between applications. That&amp;#8217;s
   it. Loose coupling.
&lt;/p&gt;
&lt;p&gt;
   But that loose coupling has important second-order effects. It allows applications
   to evolve independently. It allows applications to scale independently. It allows
   applications to change deployment models independently. All without breaking one another.
&lt;/p&gt;
&lt;p&gt;
   &lt;a href="http://www.lhotka.net/WeBlog/PermaLink.aspx?guid=9e06bcfd-380d-4ef6-9263-2f8527492945"&gt;As
   many have rightly&amp;nbsp;pointed out&lt;/a&gt;, this goodness comes at a price: The only way
   to talk to a &amp;#8220;service-oriented&amp;#8221; application is to send it a message. You
   don&amp;#8217;t get to see its types. You don&amp;#8217;t know where it is really executing.
   You get to send it a message. It might send you a message in reply.
&lt;/p&gt;
&lt;p&gt;
   So, shouldn&amp;#8217;t we call it, &amp;#8220;Message-Oriented Architecture?&amp;#8221;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.terski.com/blog/aggbug.ashx?id=703ff4e5-03db-4db7-bf93-8e76d58ea42d"&gt;</description>
      <comments>http://www.terski.com/blog/CommentView,guid,703ff4e5-03db-4db7-bf93-8e76d58ea42d.aspx</comments>
      <category>Software Architecture</category>
    </item>
    <item>
      <trackback:ping>http://www.terski.com/blog/Trackback,guid,eb4e0f3e-8a10-4452-87d1-78adc65f92d4.aspx</trackback:ping>
      <pingback:server>http://www.terski.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.terski.com/blog/PermaLink,guid,eb4e0f3e-8a10-4452-87d1-78adc65f92d4.aspx</pingback:target>
      <wfw:comment>http://www.terski.com/blog/CommentView,guid,eb4e0f3e-8a10-4452-87d1-78adc65f92d4.aspx</wfw:comment>
      <wfw:commentRss>http://www.terski.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=eb4e0f3e-8a10-4452-87d1-78adc65f92d4</wfw:commentRss>
      <slash:comments>0</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <div class="Section1">
          <p>
         I’ve seen a lot of procedural code written in an object-oriented language. Particularly,
         I’ve seen this done with C++ in the days when object-oriented design was first
         gaining familiarity in industry. I attribute this to the fact that most of us C++
         programmers were first C programmers. We wedged our old design approach (procedural
         programming) into a new programming model (object-orientation). 
      </p>
          <p>
         I suspect we’ll see an analogous situation with service-oriented architectures.
         In fact, I’m beginning to see it already. It is possible to construct a service-oriented
         system with currently available technology. But technology isn’t our biggest
         roadblock, our experience is. We must design differently if we expect our SOA to work. 
      </p>
          <p>
         As a software engineer who was once inexperienced with object-oriented design, I could
         still <i><span style="FONT-STYLE: italic">understand</span></i> encapsulation. But
         until I’d built a non-trivial system that made good use of object-oriented principles,
         I could not <i><span style="FONT-STYLE: italic">appreciate</span></i> encapsulation.
         There is an indescribable pleasure that comes from being able to modify part of your
         software while having the rest of it go on working beautifully. It’s the result
         of encapsulation and it’s also a bit of a high. And the pursuit of my next fix
         is what drives me to apply object-oriented principles with all the more rigor. 
      </p>
          <p>
         In the short-term, it’s usually more work to do the right thing. It’s
         not easy to find the right abstraction or to make the right design trade-off. It’s
         faster and easier to just write some code that solves the problem at hand. But I work
         hard at finding that abstraction because I know in six or twelve months, I’ll
         be glad I did. I know this from my own experience. Without this experience, I might
         say, “Why bother?” 
      </p>
          <p>
         As practitioners, we’re at a point with SOA where many of us were with OO about
         10-15 years ago. We <i><span style="FONT-STYLE: italic">understand</span></i><a title="http://blogs.msdn.com/richturner666/archive/2004/03/02/83009.aspx" href="http://blogs.msdn.com/richturner666/archive/2004/03/02/83009.aspx">the
         tenets of SOA</a>, but we don’t yet <i><span style="FONT-STYLE: italic">appreciate</span></i> the
         benefits. And until we do, we won’t choose to incur the cost. 
      </p>
        </div>
        <img width="0" height="0" src="http://www.terski.com/blog/aggbug.ashx?id=eb4e0f3e-8a10-4452-87d1-78adc65f92d4" />
      </body>
      <title>Gaining an Appreciation of SOA</title>
      <guid>http://www.terski.com/blog/PermaLink,guid,eb4e0f3e-8a10-4452-87d1-78adc65f92d4.aspx</guid>
      <link>http://www.terski.com/blog/PermaLink,guid,eb4e0f3e-8a10-4452-87d1-78adc65f92d4.aspx</link>
      <pubDate>Mon, 29 Mar 2004 03:28:54 GMT</pubDate>
      <description>&lt;div class=Section1&gt;
   &lt;p&gt;
      I&amp;#8217;ve seen a lot of procedural code written in an object-oriented language. Particularly,
      I&amp;#8217;ve seen this done with C++ in the days when object-oriented design was first
      gaining familiarity in industry. I attribute this to the fact that most of us C++
      programmers were first C programmers. We wedged our old design approach (procedural
      programming) into a new programming model (object-orientation). 
   &lt;/p&gt;
   &lt;p&gt;
      I suspect we&amp;#8217;ll see an analogous situation with service-oriented architectures.
      In fact, I&amp;#8217;m beginning to see it already. It is possible to construct a service-oriented
      system with currently available technology. But technology isn&amp;#8217;t our biggest
      roadblock, our experience is. We must design differently if we expect our SOA to work. 
   &lt;/p&gt;
   &lt;p&gt;
      As a software engineer who was once inexperienced with object-oriented design, I could
      still &lt;i&gt;&lt;span style="FONT-STYLE: italic"&gt;understand&lt;/span&gt;&lt;/i&gt; encapsulation. But
      until I&amp;#8217;d built a non-trivial system that made good use of object-oriented principles,
      I could not &lt;i&gt;&lt;span style="FONT-STYLE: italic"&gt;appreciate&lt;/span&gt;&lt;/i&gt; encapsulation.
      There is an indescribable pleasure that comes from being able to modify part of your
      software while having the rest of it go on working beautifully. It&amp;#8217;s the result
      of encapsulation and it&amp;#8217;s also a bit of a high. And the pursuit of my next fix
      is what drives me to apply object-oriented principles with all the more rigor. 
   &lt;/p&gt;
   &lt;p&gt;
      In the short-term, it&amp;#8217;s usually more work to do the right thing. It&amp;#8217;s
      not easy to find the right abstraction or to make the right design trade-off. It&amp;#8217;s
      faster and easier to just write some code that solves the problem at hand. But I work
      hard at finding that abstraction because I know in six or twelve months, I&amp;#8217;ll
      be glad I did. I know this from my own experience. Without this experience, I might
      say, &amp;#8220;Why bother?&amp;#8221; 
   &lt;/p&gt;
   &lt;p&gt;
      As practitioners, we&amp;#8217;re at a point with SOA where many of us were with OO about
      10-15 years ago. We &lt;i&gt;&lt;span style="FONT-STYLE: italic"&gt;understand&lt;/span&gt;&lt;/i&gt; &lt;a title=http://blogs.msdn.com/richturner666/archive/2004/03/02/83009.aspx href="http://blogs.msdn.com/richturner666/archive/2004/03/02/83009.aspx"&gt;the
      tenets of SOA&lt;/a&gt;, but we don&amp;#8217;t yet &lt;i&gt;&lt;span style="FONT-STYLE: italic"&gt;appreciate&lt;/span&gt;&lt;/i&gt; the
      benefits. And until we do, we won&amp;#8217;t choose to incur the cost. 
   &lt;/p&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://www.terski.com/blog/aggbug.ashx?id=eb4e0f3e-8a10-4452-87d1-78adc65f92d4"&gt;</description>
      <comments>http://www.terski.com/blog/CommentView,guid,eb4e0f3e-8a10-4452-87d1-78adc65f92d4.aspx</comments>
      <category>Software Architecture</category>
    </item>
    <item>
      <trackback:ping>http://www.terski.com/blog/Trackback,guid,6eb4fc56-0563-4737-a556-ad1702bcd11e.aspx</trackback:ping>
      <pingback:server>http://www.terski.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.terski.com/blog/PermaLink,guid,6eb4fc56-0563-4737-a556-ad1702bcd11e.aspx</pingback:target>
      <wfw:comment>http://www.terski.com/blog/CommentView,guid,6eb4fc56-0563-4737-a556-ad1702bcd11e.aspx</wfw:comment>
      <wfw:commentRss>http://www.terski.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=6eb4fc56-0563-4737-a556-ad1702bcd11e</wfw:commentRss>
      <slash:comments>0</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.amazon.com/exec/obidos/ASIN/1558604154/mattterskisbl-20">
            <img src="/blog/content/binary/poftp.jpg" border="0" />
          </a>
        </p>
        <p>
      I love Pat Helland. The guy is a luminary. He explains the issue of latency in service-oriented
      architectures with <a href="http://blogs.msdn.com/pathelland/archive/2004/03/18/91825.aspx">an
      analogy of light traveling from the sun to the earth</a>. By the time the sunlight
      shines on us, it is eight minutes old. So it might not reflect the current state of
      the sun (the sun might've blown up during this time, for example).
   </p>
        <p>
      Likewise, by the time we receive a piece of data from a service, it might have changed
      at the source. But unlike sunlight, messaging in service-oriented architectures is
      often two-way. If the data we requested was changed before our response gets processed,
      our response is probably invalid. And that's life; our system has to deal with it.
      Of course, this problem is not new. It's a common side effect of optimistic-concurrency.
   </p>
        <p>
      But making the pronouncement that "SOA is like the Night Sky…" is sure way to
      stoke your critics. And old Pat takes a bit of heat in his comments for re-branding
      old ideas. SOA is currently going through the negative hype phase common to any paradigm
      shift in software development. 
   </p>
        <p>
      Since I'm currently enamoured with SOA, I pulled my copy of <a href="http://www.amazon.com/exec/obidos/ASIN/1558604154/mattterskisbl-20"><em>Principles
      of Transaction Processing</em></a>off the shelf to check how much of SOA was actually
      covered in 1997. It comes down to this: <strong>many</strong> (but not all) principles
      of service-oriented architectures are a subset of transaction processing principles.
      Specifically, they are the principles of queued transaction processing.
   </p>
        <p>
      In an SOA, transactions do not span services. That is, there are no distributed transactions.
      But for a system comprised of a collection of services, a logical unit of work will
      often use more than one service. So how do we perform a logical unit of work in two
      or more services without using a distributed transaction? The answer is queuing. Queues
      allow us to perform a unit of work that includes more than one transaction (a multi-transaction
      workflow).
   </p>
        <p>
      With queues, an SOA forgoes atomicity and isolation (two of the ACID properties) to
      gain scalability and reliability. 
   </p>
        <p>
      So it's a tradeoff. In Pat's defense, these concepts are not entirely new, but this
      is not a tradeoff many of us would have considered as we designed our systems and
      made the obligatory genuflection to the altar of ACID transactions. But as he says,
      "it's the only possible computing model in a loosely-coupled and distributed world."
   </p>
        <img width="0" height="0" src="http://www.terski.com/blog/aggbug.ashx?id=6eb4fc56-0563-4737-a556-ad1702bcd11e" />
      </body>
      <title>Are the Principles of SOA New?</title>
      <guid>http://www.terski.com/blog/PermaLink,guid,6eb4fc56-0563-4737-a556-ad1702bcd11e.aspx</guid>
      <link>http://www.terski.com/blog/PermaLink,guid,6eb4fc56-0563-4737-a556-ad1702bcd11e.aspx</link>
      <pubDate>Sun, 21 Mar 2004 21:05:53 GMT</pubDate>
      <description>&lt;p&gt;
   &lt;a href="http://www.amazon.com/exec/obidos/ASIN/1558604154/mattterskisbl-20"&gt;&lt;img src="/blog/content/binary/poftp.jpg" border=0&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
   I love Pat Helland. The guy is a luminary. He explains the issue of latency in service-oriented
   architectures with &lt;a href="http://blogs.msdn.com/pathelland/archive/2004/03/18/91825.aspx"&gt;an
   analogy of light traveling from the sun to the earth&lt;/a&gt;. By the time the sunlight
   shines on us, it is eight minutes old. So it might not reflect the current state of
   the sun (the sun might've blown up during this time, for example).
&lt;/p&gt;
&lt;p&gt;
   Likewise, by the time we receive a piece of data from a service, it might have changed
   at the source. But unlike sunlight, messaging in service-oriented architectures is
   often two-way. If the data we requested was changed before our response gets processed,
   our response is probably invalid. And that's life; our system has to deal with it.
   Of course, this problem is not new. It's a common side effect of optimistic-concurrency.
&lt;/p&gt;
&lt;p&gt;
   But making the pronouncement that "SOA is like the Night Sky&amp;#8230;" is sure way to
   stoke your critics. And old Pat takes a bit of heat in his comments for re-branding
   old ideas. SOA is currently going through the negative hype phase common to any paradigm
   shift in software development. 
&lt;/p&gt;
&lt;p&gt;
   Since I'm currently enamoured with SOA, I pulled my copy of &lt;a href="http://www.amazon.com/exec/obidos/ASIN/1558604154/mattterskisbl-20"&gt;&lt;em&gt;Principles
   of Transaction Processing&lt;/em&gt; &lt;/a&gt;off the shelf to check how much of SOA was actually
   covered in 1997. It comes down to this: &lt;strong&gt;many&lt;/strong&gt; (but not all) principles
   of service-oriented architectures are a subset of transaction processing principles.
   Specifically, they are the principles of queued transaction processing.
&lt;/p&gt;
&lt;p&gt;
   In an SOA, transactions do not span services. That is, there are no distributed transactions.
   But for a system comprised of a collection of services, a logical unit of work will
   often use more than one service. So how do we perform a logical unit of work in two
   or more services without using a distributed transaction? The answer is queuing. Queues
   allow us to perform a unit of work that includes more than one transaction (a multi-transaction
   workflow).
&lt;/p&gt;
&lt;p&gt;
   With queues, an SOA forgoes atomicity and isolation (two of the ACID properties) to
   gain scalability and reliability. 
&lt;/p&gt;
&lt;p&gt;
   So it's a tradeoff. In Pat's defense, these concepts are not entirely new, but this
   is not a tradeoff many of us would have considered as we designed our systems and
   made the obligatory genuflection to the altar of ACID transactions. But as he says,
   "it's the only possible computing model in a loosely-coupled and distributed world."
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.terski.com/blog/aggbug.ashx?id=6eb4fc56-0563-4737-a556-ad1702bcd11e"&gt;</description>
      <comments>http://www.terski.com/blog/CommentView,guid,6eb4fc56-0563-4737-a556-ad1702bcd11e.aspx</comments>
      <category>Software Architecture</category>
    </item>
  </channel>
</rss>