<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Adventures in SOA, Part 3</title>
	<atom:link href="http://averyblog.com/net/adventures-in-soa-part-3/feed/" rel="self" type="application/rss+xml" />
	<link>http://averyblog.com/net/adventures-in-soa-part-3/</link>
	<description>This is not the greatest tagline in the world... this is just a tribute.</description>
	<lastBuildDate>Mon, 11 Jan 2010 16:36:16 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Udi Dahan - The Software Simplis</title>
		<link>http://averyblog.com/net/adventures-in-soa-part-3/comment-page-1/#comment-37</link>
		<dc:creator>Udi Dahan - The Software Simplis</dc:creator>
		<pubDate>Sun, 04 Jan 2004 22:29:00 +0000</pubDate>
		<guid isPermaLink="false">http://averyblog.infozerk.net/?p=34#comment-37</guid>
		<description>&lt;p&gt;One final note =)&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;The example I gave of BL.Customer().GetById(id) and BL.Facade.GetCustomerById(id) was given in the context of migrating OO thinking to SO thinking. This is by no means a &quot;Rule&quot;.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;Once you give up the &quot;everything&#039;s an object&quot; way of thinking, and begin to adopt services when they seem to fit, then the system&#039;s structure becomes more suited to the tasks its required to perform. Which leads me to persistence as a service.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;Although I&#039;ll probably regret this, the great O/R debate that&#039;s been raging recently seems to focus too much on a relatively minor portion of moderate and up complexity systems. Yes, persistence is important. No, it should not be the driving force behind your entire architecture.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;And, in all this debate, nobody stops to talk about the business rules. Who says myCustomer.Save() is allowed to be called now, in this context, by the current user, etc. Where does this code fit in ?&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;I guess the one thing that I can say here is this: Don&#039;t lose sight of the forest for the trees.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>One final note =)</p>
<p></p>
<p>The example I gave of BL.Customer().GetById(id) and BL.Facade.GetCustomerById(id) was given in the context of migrating OO thinking to SO thinking. This is by no means a &quot;Rule&quot;.</p>
<p></p>
<p>Once you give up the &quot;everything&#8217;s an object&quot; way of thinking, and begin to adopt services when they seem to fit, then the system&#8217;s structure becomes more suited to the tasks its required to perform. Which leads me to persistence as a service.</p>
<p></p>
<p>Although I&#8217;ll probably regret this, the great O/R debate that&#8217;s been raging recently seems to focus too much on a relatively minor portion of moderate and up complexity systems. Yes, persistence is important. No, it should not be the driving force behind your entire architecture.</p>
<p></p>
<p>And, in all this debate, nobody stops to talk about the business rules. Who says myCustomer.Save() is allowed to be called now, in this context, by the current user, etc. Where does this code fit in ?</p>
<p></p>
<p>I guess the one thing that I can say here is this: Don&#8217;t lose sight of the forest for the trees.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Udi Dahan - The Software Simplis</title>
		<link>http://averyblog.com/net/adventures-in-soa-part-3/comment-page-1/#comment-36</link>
		<dc:creator>Udi Dahan - The Software Simplis</dc:creator>
		<pubDate>Sun, 04 Jan 2004 22:18:00 +0000</pubDate>
		<guid isPermaLink="false">http://averyblog.infozerk.net/?p=34#comment-36</guid>
		<description>&lt;p&gt;Of course, if we include in the development process the collective code ownership advocated by Fowler, then anyone who encountered Joe&#039;s bad code would refactor it until it was ok again ( No broken windows principle from Pragmatic Programmers ).&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;This is a process solution whereas SOA appears to be a structural solution to the problem I raised.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;I wonder which type of solution is preferred, generally speaking: Process or Structure.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Of course, if we include in the development process the collective code ownership advocated by Fowler, then anyone who encountered Joe&#8217;s bad code would refactor it until it was ok again ( No broken windows principle from Pragmatic Programmers ).</p>
<p></p>
<p>This is a process solution whereas SOA appears to be a structural solution to the problem I raised.</p>
<p></p>
<p>I wonder which type of solution is preferred, generally speaking: Process or Structure.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: James Avery</title>
		<link>http://averyblog.com/net/adventures-in-soa-part-3/comment-page-1/#comment-35</link>
		<dc:creator>James Avery</dc:creator>
		<pubDate>Sun, 04 Jan 2004 21:26:00 +0000</pubDate>
		<guid isPermaLink="false">http://averyblog.infozerk.net/?p=34#comment-35</guid>
		<description>&lt;p&gt;I hope I did not give the impression that I do not respect Martin Fowler, I also hold him in very high regard. I was only trying to point out that SOA goes against alot of what he has always preached. I am going to be interested to hear what he thinks of SOA.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;-James&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>I hope I did not give the impression that I do not respect Martin Fowler, I also hold him in very high regard. I was only trying to point out that SOA goes against alot of what he has always preached. I am going to be interested to hear what he thinks of SOA.</p>
<p></p>
<p>-James</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Udi Dahan - The Software Simplis</title>
		<link>http://averyblog.com/net/adventures-in-soa-part-3/comment-page-1/#comment-34</link>
		<dc:creator>Udi Dahan - The Software Simplis</dc:creator>
		<pubDate>Sun, 04 Jan 2004 21:13:00 +0000</pubDate>
		<guid isPermaLink="false">http://averyblog.infozerk.net/?p=34#comment-34</guid>
		<description>&lt;p&gt;James,&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;Thanks for the compliments ! But there are some things that I&#039;d like to set straight. I hold Martin Fowler in seriously high regard. I have learned a lot from him, and continue to do so. I&#039;ve just become a little disillusioned about OO architecture.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;Why ?&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;Because of the &quot;Where does this go ?&quot; syndrome. This syndrome attacks after you&#039;ve already built quite a lot of the system, and usually takes the form of some method you need to add, but just don&#039;t know to which object. &lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;For example, I do a lot of systems for academic institutions, and the following requirement sums it up: A lab administrator registers a student to a final project, for a course that the student is registered to in the given semester.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;From this I know I need a &quot;RegisterStudentToFinalProjectForCourseAndSemester(Student s, Project p, Course c, Semester r)&quot; method. But where does it go ? On the LabAdmin class ? The Student ? Project ? Course ? Semester ? Eventually I just pick one and moved on. &lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;What&#039;s the problem with this ?&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;Well, the class that I choose becames tightly coupled to all the other classes. Martin Fowler probably would have found a nice solution using aspects ( as Brian McCallister posted here: &lt;a target=&quot;_new&quot; href=&quot;http://kasparov.skife.org/blog/2003/12/27#design-ideas&quot; rel=&quot;nofollow&quot;&gt;http://kasparov.skife.org/blog/2003/12/27#design-ideas&lt;/a&gt; ), but I am not so skilled. &lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;Also, for Joe Developer, who probably hasn&#039;t ever heard of AOP, this  the first step to a monolithic system. I look for architecture to push the developer into consistently making good choices ( see The Pit of Success, a la Brad Abrams: &lt;a target=&quot;_new&quot; href=&quot;http://blogs.gotdotnet.com/BradA/PermaLink.aspx/b7a0cf5c-a283-4f95-a508-819102d2feae&quot; rel=&quot;nofollow&quot;&gt;http://blogs.gotdotnet.com/BradA/PermaLink.aspx/b7a0cf5c-a283-4f95-a508-819102d2feae&lt;/a&gt; ). Unfortunately, in an OOA Joe can make bad decisions that will have far reaching ramifications on the entire system.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;I&#039;d be very interested in hearing what Martin Fowler has to say on this issue, and hopefully we&#039;ll see the rise of new patterns for service oriented development.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;IMHO, services are a step up on the ladder from objects when it comes to architecture. Services will become the major building blocks of the future. Finally, services encourage developing coarse-grained APIs, which is exactly what will be required when the services will be distributed throughout the enterprise. Essentially, this will force us developers to deal with these important issues ahead of time. And, well, its nice to get things right the first time around. Isn&#039;t it ?&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>James,</p>
<p></p>
<p>Thanks for the compliments ! But there are some things that I&#8217;d like to set straight. I hold Martin Fowler in seriously high regard. I have learned a lot from him, and continue to do so. I&#8217;ve just become a little disillusioned about OO architecture.</p>
<p></p>
<p>Why ?</p>
<p></p>
<p>Because of the &quot;Where does this go ?&quot; syndrome. This syndrome attacks after you&#8217;ve already built quite a lot of the system, and usually takes the form of some method you need to add, but just don&#8217;t know to which object. </p>
<p></p>
<p>For example, I do a lot of systems for academic institutions, and the following requirement sums it up: A lab administrator registers a student to a final project, for a course that the student is registered to in the given semester.</p>
<p></p>
<p>From this I know I need a &quot;RegisterStudentToFinalProjectForCourseAndSemester(Student s, Project p, Course c, Semester r)&quot; method. But where does it go ? On the LabAdmin class ? The Student ? Project ? Course ? Semester ? Eventually I just pick one and moved on. </p>
<p></p>
<p>What&#8217;s the problem with this ?</p>
<p></p>
<p>Well, the class that I choose becames tightly coupled to all the other classes. Martin Fowler probably would have found a nice solution using aspects ( as Brian McCallister posted here: <a target="_new" href="http://kasparov.skife.org/blog/2003/12/27#design-ideas" rel="nofollow">http://kasparov.skife.org/blog/2003/12/27#design-ideas</a> ), but I am not so skilled. </p>
<p></p>
<p>Also, for Joe Developer, who probably hasn&#8217;t ever heard of AOP, this  the first step to a monolithic system. I look for architecture to push the developer into consistently making good choices ( see The Pit of Success, a la Brad Abrams: <a target="_new" href="http://blogs.gotdotnet.com/BradA/PermaLink.aspx/b7a0cf5c-a283-4f95-a508-819102d2feae" rel="nofollow">http://blogs.gotdotnet.com/BradA/PermaLink.aspx/b7a0cf5c-a283-4f95-a508-819102d2feae</a> ). Unfortunately, in an OOA Joe can make bad decisions that will have far reaching ramifications on the entire system.</p>
<p></p>
<p>I&#8217;d be very interested in hearing what Martin Fowler has to say on this issue, and hopefully we&#8217;ll see the rise of new patterns for service oriented development.</p>
<p></p>
<p>IMHO, services are a step up on the ladder from objects when it comes to architecture. Services will become the major building blocks of the future. Finally, services encourage developing coarse-grained APIs, which is exactly what will be required when the services will be distributed throughout the enterprise. Essentially, this will force us developers to deal with these important issues ahead of time. And, well, its nice to get things right the first time around. Isn&#8217;t it ?</p>
]]></content:encoded>
	</item>
</channel>
</rss>

