<?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: Fetching Strategy Design</title>
	<atom:link href="http://www.udidahan.com/2007/04/23/fetching-strategy-design/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.udidahan.com/2007/04/23/fetching-strategy-design/</link>
	<description>Enterprise Development Expert &#38; SOA Specialist</description>
	<lastBuildDate>Sun, 14 Mar 2010 06:27:00 -0500</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Stepping onto the Bus &#124; YOOT</title>
		<link>http://www.udidahan.com/2007/04/23/fetching-strategy-design/comment-page-1/#comment-36791</link>
		<dc:creator>Stepping onto the Bus &#124; YOOT</dc:creator>
		<pubDate>Mon, 12 Oct 2009 20:52:19 +0000</pubDate>
		<guid isPermaLink="false">http://udidahan.weblogs.us/2007/04/23/fetching-strategy-design/#comment-36791</guid>
		<description>[...] to use when querying in a true DDD fashion is the notion of Fetching Strategy (read more about it here &amp; there). We need Fetching Strategies for a very simple [...]</description>
		<content:encoded><![CDATA[<p>[...] to use when querying in a true DDD fashion is the notion of Fetching Strategy (read more about it here &amp; there). We need Fetching Strategies for a very simple [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Living in the Tech Avalanche Generation &#187; Entity Framework 4.0 and Fetching Strategies</title>
		<link>http://www.udidahan.com/2007/04/23/fetching-strategy-design/comment-page-1/#comment-36489</link>
		<dc:creator>Living in the Tech Avalanche Generation &#187; Entity Framework 4.0 and Fetching Strategies</dc:creator>
		<pubDate>Wed, 29 Jul 2009 10:06:34 +0000</pubDate>
		<guid isPermaLink="false">http://udidahan.weblogs.us/2007/04/23/fetching-strategy-design/#comment-36489</guid>
		<description>[...] when a role has been specified. The role can be reasoned as a business event of sorts. Udi has written extensively on this and developed a method for using fetching strategies with NHibernate and if you haven’t [...]</description>
		<content:encoded><![CDATA[<p>[...] when a role has been specified. The role can be reasoned as a business event of sorts. Udi has written extensively on this and developed a method for using fetching strategies with NHibernate and if you haven’t [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Simon says... : [EN] Mentoring DDD: NHibernate 2 Fetching Strategies</title>
		<link>http://www.udidahan.com/2007/04/23/fetching-strategy-design/comment-page-1/#comment-36454</link>
		<dc:creator>Simon says... : [EN] Mentoring DDD: NHibernate 2 Fetching Strategies</dc:creator>
		<pubDate>Wed, 22 Jul 2009 15:19:28 +0000</pubDate>
		<guid isPermaLink="false">http://udidahan.weblogs.us/2007/04/23/fetching-strategy-design/#comment-36454</guid>
		<description>[...] where T is an interface which is requested from session to be fetched (for details read this gread post). Fetching strategy implementations are found using helper class with an event rising when [...]</description>
		<content:encoded><![CDATA[<p>[...] where T is an interface which is requested from session to be fetched (for details read this gread post). Fetching strategy implementations are found using helper class with an event rising when [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Unit testing done right &#8211; Better then sliced bread &#171; Perpetual Pursuit of Perfection</title>
		<link>http://www.udidahan.com/2007/04/23/fetching-strategy-design/comment-page-1/#comment-36241</link>
		<dc:creator>Unit testing done right &#8211; Better then sliced bread &#171; Perpetual Pursuit of Perfection</dc:creator>
		<pubDate>Wed, 17 Jun 2009 11:42:51 +0000</pubDate>
		<guid isPermaLink="false">http://udidahan.weblogs.us/2007/04/23/fetching-strategy-design/#comment-36241</guid>
		<description>[...] Fetching Strategy Design [...]</description>
		<content:encoded><![CDATA[<p>[...] Fetching Strategy Design [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: What about DataLoadOptions for Entity Framework ObjectContext? - VS2010学习 - IC窗口</title>
		<link>http://www.udidahan.com/2007/04/23/fetching-strategy-design/comment-page-1/#comment-36227</link>
		<dc:creator>What about DataLoadOptions for Entity Framework ObjectContext? - VS2010学习 - IC窗口</dc:creator>
		<pubDate>Mon, 15 Jun 2009 16:28:54 +0000</pubDate>
		<guid isPermaLink="false">http://udidahan.weblogs.us/2007/04/23/fetching-strategy-design/#comment-36227</guid>
		<description>[...] Fetching strategy posts by Simon Segal: [...]</description>
		<content:encoded><![CDATA[<p>[...] Fetching strategy posts by Simon Segal: [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Living in the Tech Avalanche Generation &#187; Fetching Strategies for the Entity Framework - a waste of time for now?</title>
		<link>http://www.udidahan.com/2007/04/23/fetching-strategy-design/comment-page-1/#comment-35936</link>
		<dc:creator>Living in the Tech Avalanche Generation &#187; Fetching Strategies for the Entity Framework - a waste of time for now?</dc:creator>
		<pubDate>Wed, 07 Jan 2009 10:00:36 +0000</pubDate>
		<guid isPermaLink="false">http://udidahan.weblogs.us/2007/04/23/fetching-strategy-design/#comment-35936</guid>
		<description>[...] really want Fetching Strategies for the Entity Framework however my efforts in making this happen have been exhausted for now. [...]</description>
		<content:encoded><![CDATA[<p>[...] really want Fetching Strategies for the Entity Framework however my efforts in making this happen have been exhausted for now. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: udidahan</title>
		<link>http://www.udidahan.com/2007/04/23/fetching-strategy-design/comment-page-1/#comment-35814</link>
		<dc:creator>udidahan</dc:creator>
		<pubDate>Sat, 08 Nov 2008 05:54:06 +0000</pubDate>
		<guid isPermaLink="false">http://udidahan.weblogs.us/2007/04/23/fetching-strategy-design/#comment-35814</guid>
		<description>Bjorn,

My service layer usually does messaging - those &quot;special Message Objects&quot; you alluded to (which are DTOs).

You might like this post describing how these two might work together in a broader perspective here:

&lt;a href=&quot;http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/&quot; rel=&quot;nofollow&quot;&gt;Command Query Separation and SOA&lt;/a&gt;</description>
		<content:encoded><![CDATA[<p>Bjorn,</p>
<p>My service layer usually does messaging &#8211; those &#8220;special Message Objects&#8221; you alluded to (which are DTOs).</p>
<p>You might like this post describing how these two might work together in a broader perspective here:</p>
<p><a href="http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/" rel="nofollow">Command Query Separation and SOA</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bjorn</title>
		<link>http://www.udidahan.com/2007/04/23/fetching-strategy-design/comment-page-1/#comment-35813</link>
		<dc:creator>Bjorn</dc:creator>
		<pubDate>Fri, 07 Nov 2008 15:39:48 +0000</pubDate>
		<guid isPermaLink="false">http://udidahan.weblogs.us/2007/04/23/fetching-strategy-design/#comment-35813</guid>
		<description>Hi Udi. Great articles all over the place. Now, I was wondering about the package diagram above. What kind of objects does your service layer deliver to the layers above? Objects from the DomainObjects package (or of course rather its interfaces)? Ok, I get that a CalculateCost-method returns a Money-object. But does a method like GetOrder return a Domain.IOrder? But these objects/interfaces are more than just DTOs aren&#039;t they and have methods like Update and so on? Or would you create special Message Objects when the data moves across service boundaries to let&#039;s say a web application?</description>
		<content:encoded><![CDATA[<p>Hi Udi. Great articles all over the place. Now, I was wondering about the package diagram above. What kind of objects does your service layer deliver to the layers above? Objects from the DomainObjects package (or of course rather its interfaces)? Ok, I get that a CalculateCost-method returns a Money-object. But does a method like GetOrder return a Domain.IOrder? But these objects/interfaces are more than just DTOs aren&#8217;t they and have methods like Update and so on? Or would you create special Message Objects when the data moves across service boundaries to let&#8217;s say a web application?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: awake</title>
		<link>http://www.udidahan.com/2007/04/23/fetching-strategy-design/comment-page-1/#comment-17475</link>
		<dc:creator>awake</dc:creator>
		<pubDate>Mon, 18 Feb 2008 22:51:42 +0000</pubDate>
		<guid isPermaLink="false">http://udidahan.weblogs.us/2007/04/23/fetching-strategy-design/#comment-17475</guid>
		<description>Great job. I was on TechEd 2007 and I saw you presentation about domain models. Good stuff. Could you send me all demos you use on this presentation becouse on post conference dvd i found only presentation and webcast :( thx</description>
		<content:encoded><![CDATA[<p>Great job. I was on TechEd 2007 and I saw you presentation about domain models. Good stuff. Could you send me all demos you use on this presentation becouse on post conference dvd i found only presentation and webcast <img src='http://www.udidahan.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  thx</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Colin Jack</title>
		<link>http://www.udidahan.com/2007/04/23/fetching-strategy-design/comment-page-1/#comment-7270</link>
		<dc:creator>Colin Jack</dc:creator>
		<pubDate>Tue, 25 Sep 2007 11:39:36 +0000</pubDate>
		<guid isPermaLink="false">http://udidahan.weblogs.us/2007/04/23/fetching-strategy-design/#comment-7270</guid>
		<description>Completely, and I&#039;m enjoying the series of posts relating to the topic (and thanks for providing the code example of how to apply it!).</description>
		<content:encoded><![CDATA[<p>Completely, and I&#8217;m enjoying the series of posts relating to the topic (and thanks for providing the code example of how to apply it!).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: thesoftwaresimplist</title>
		<link>http://www.udidahan.com/2007/04/23/fetching-strategy-design/comment-page-1/#comment-7241</link>
		<dc:creator>thesoftwaresimplist</dc:creator>
		<pubDate>Tue, 25 Sep 2007 05:35:33 +0000</pubDate>
		<guid isPermaLink="false">http://udidahan.weblogs.us/2007/04/23/fetching-strategy-design/#comment-7241</guid>
		<description>Colin,

The idea is not so much to do a &quot;extract interface&quot; refactoring, but rather to represent a use-case a concrete concept in code. Once that interface is there, we can do lots of useful things with it - for instance, different fetching strategies for different use cases.

I&#039;d also like to refine my statements a bit and say that if there were two (or more) concrete classes that implemented the same interface (role), then, by definition, you shouldn&#039;t care which class you get. If you think the code HAS to care, then you probably have a role struggling to express itself.

Does that make sense?</description>
		<content:encoded><![CDATA[<p>Colin,</p>
<p>The idea is not so much to do a &#8220;extract interface&#8221; refactoring, but rather to represent a use-case a concrete concept in code. Once that interface is there, we can do lots of useful things with it &#8211; for instance, different fetching strategies for different use cases.</p>
<p>I&#8217;d also like to refine my statements a bit and say that if there were two (or more) concrete classes that implemented the same interface (role), then, by definition, you shouldn&#8217;t care which class you get. If you think the code HAS to care, then you probably have a role struggling to express itself.</p>
<p>Does that make sense?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Colin Jack</title>
		<link>http://www.udidahan.com/2007/04/23/fetching-strategy-design/comment-page-1/#comment-7103</link>
		<dc:creator>Colin Jack</dc:creator>
		<pubDate>Fri, 21 Sep 2007 23:20:45 +0000</pubDate>
		<guid isPermaLink="false">http://udidahan.weblogs.us/2007/04/23/fetching-strategy-design/#comment-7103</guid>
		<description>I&#039;ve just re-read this post and couldn&#039;t really get what you mean in this bit:

&quot;One question that you might ask is what if there is more than one class that implements the same interface? How could the infrastructure know which class it should be loading? The answer is simple. You shouldn’t do that. Having two classes fulfilling the same role will get you in trouble even if you don’t use this design. The Single Responsibility Principle should be our guiding light.&quot;

You are not really saying that SRP is driving you to define interfaces and then to only have one implementation? 

This isn&#039;t the way I read SRP at all, I read it as one reason for change. I also don&#039;t see what you are suggesting as being the (only?) way to do interface based programming, in fact I&#039;d argue its often silly to extract interfaces if you are 100% sure there will only ever be one implementation.

From the term role here I&#039;m thinking of it being a role in the role-responsibility sense, if so I again would say that if multiple concrete classes can sensibly fulfill a role then a common interface is definitely the way to go?</description>
		<content:encoded><![CDATA[<p>I&#8217;ve just re-read this post and couldn&#8217;t really get what you mean in this bit:</p>
<p>&#8220;One question that you might ask is what if there is more than one class that implements the same interface? How could the infrastructure know which class it should be loading? The answer is simple. You shouldn’t do that. Having two classes fulfilling the same role will get you in trouble even if you don’t use this design. The Single Responsibility Principle should be our guiding light.&#8221;</p>
<p>You are not really saying that SRP is driving you to define interfaces and then to only have one implementation? </p>
<p>This isn&#8217;t the way I read SRP at all, I read it as one reason for change. I also don&#8217;t see what you are suggesting as being the (only?) way to do interface based programming, in fact I&#8217;d argue its often silly to extract interfaces if you are 100% sure there will only ever be one implementation.</p>
<p>From the term role here I&#8217;m thinking of it being a role in the role-responsibility sense, if so I again would say that if multiple concrete classes can sensibly fulfill a role then a common interface is definitely the way to go?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Fetching Strategy NHibernate Implementation Available</title>
		<link>http://www.udidahan.com/2007/04/23/fetching-strategy-design/comment-page-1/#comment-6937</link>
		<dc:creator>Fetching Strategy NHibernate Implementation Available</dc:creator>
		<pubDate>Mon, 17 Sep 2007 00:56:53 +0000</pubDate>
		<guid isPermaLink="false">http://udidahan.weblogs.us/2007/04/23/fetching-strategy-design/#comment-6937</guid>
		<description>[...] couple of months ago I put out a post discussing one way to implement custom fetching strategies. Anyway, I finally got around to putting my money where my mouth [...]</description>
		<content:encoded><![CDATA[<p>[...] couple of months ago I put out a post discussing one way to implement custom fetching strategies. Anyway, I finally got around to putting my money where my mouth [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: &#187; Performant and Explicit Domain Models</title>
		<link>http://www.udidahan.com/2007/04/23/fetching-strategy-design/comment-page-1/#comment-2051</link>
		<dc:creator>&#187; Performant and Explicit Domain Models</dc:creator>
		<pubDate>Mon, 04 Jun 2007 20:31:44 +0000</pubDate>
		<guid isPermaLink="false">http://udidahan.weblogs.us/2007/04/23/fetching-strategy-design/#comment-2051</guid>
		<description>[...] Fetching Strategy Design - showing how to separate the concern of eager loading from both your Domain Model and your Service Layer. [...]</description>
		<content:encoded><![CDATA[<p>[...] Fetching Strategy Design &#8211; showing how to separate the concern of eager loading from both your Domain Model and your Service Layer. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: &#187; First principle of design refined</title>
		<link>http://www.udidahan.com/2007/04/23/fetching-strategy-design/comment-page-1/#comment-1700</link>
		<dc:creator>&#187; First principle of design refined</dc:creator>
		<pubDate>Sat, 12 May 2007 16:10:27 +0000</pubDate>
		<guid isPermaLink="false">http://udidahan.weblogs.us/2007/04/23/fetching-strategy-design/#comment-1700</guid>
		<description>[...] That feels better. It holds for Views interacting with Controllers, MessageHandlers with Messages, even interactions with Domain Classes. [...]</description>
		<content:encoded><![CDATA[<p>[...] That feels better. It holds for Views interacting with Controllers, MessageHandlers with Messages, even interactions with Domain Classes. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: thesoftwaresimplist</title>
		<link>http://www.udidahan.com/2007/04/23/fetching-strategy-design/comment-page-1/#comment-1514</link>
		<dc:creator>thesoftwaresimplist</dc:creator>
		<pubDate>Sat, 28 Apr 2007 21:20:30 +0000</pubDate>
		<guid isPermaLink="false">http://udidahan.weblogs.us/2007/04/23/fetching-strategy-design/#comment-1514</guid>
		<description>Evan,

Glad you like it.

Here&#039;s what I think:

I do not duplicate the package diagram for each aggregate root. The packages called Interfaces, Infrastructure, and NHibernate are used by all.

I often find this pattern repeating (Service-&gt;Domain; Domain Objects-&gt;Domain; Persistence-&gt;Domain &amp; Domain Objects) between bounded contexts.

I don&#039;t often see the Customer class in a single bounded context. Rather, there is a different Customer class for each context, representing exactly the part it needs. When it comes to the &quot;Customer Care&quot; context, we see different rules around Orders, than in the &quot;Online Shop&quot; context.

I don&#039;t quite view packages as units of reuse, but rather as a tool for managing dependencies.

Does that make sense?</description>
		<content:encoded><![CDATA[<p>Evan,</p>
<p>Glad you like it.</p>
<p>Here&#8217;s what I think:</p>
<p>I do not duplicate the package diagram for each aggregate root. The packages called Interfaces, Infrastructure, and NHibernate are used by all.</p>
<p>I often find this pattern repeating (Service->Domain; Domain Objects->Domain; Persistence->Domain &#038; Domain Objects) between bounded contexts.</p>
<p>I don&#8217;t often see the Customer class in a single bounded context. Rather, there is a different Customer class for each context, representing exactly the part it needs. When it comes to the &#8220;Customer Care&#8221; context, we see different rules around Orders, than in the &#8220;Online Shop&#8221; context.</p>
<p>I don&#8217;t quite view packages as units of reuse, but rather as a tool for managing dependencies.</p>
<p>Does that make sense?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Evan</title>
		<link>http://www.udidahan.com/2007/04/23/fetching-strategy-design/comment-page-1/#comment-1481</link>
		<dc:creator>Evan</dc:creator>
		<pubDate>Tue, 24 Apr 2007 06:23:15 +0000</pubDate>
		<guid isPermaLink="false">http://udidahan.weblogs.us/2007/04/23/fetching-strategy-design/#comment-1481</guid>
		<description>very nice..a question on your packaging however..

we know that the Order type is an aggregate root, but we also know that the Customer type could also be an aggregate root (in another context)..

Do you duplicate your package diagram for each aggregate in your application/service? How does this packaging work with your Customer Service (where the context of the Customer aggregate includes other non-Order items)

This packaging scheme would seem ideal per aggregate (so that changing a table name is a single package change, adding a database column and new method would only affect 2 packages, etc)..but would end up with many dlls (which just means better change/configuration mgmt i suppose)..

I get the sneaky feeling you are going to tell me the Customer aggregate goes into a seperate service but figured i&#039;d ask.. ;)

Given that packages are supposed to be units of reuse, how does that fit into your package schema (given that the Customer type crosses aggregate boundaries) if at all..</description>
		<content:encoded><![CDATA[<p>very nice..a question on your packaging however..</p>
<p>we know that the Order type is an aggregate root, but we also know that the Customer type could also be an aggregate root (in another context)..</p>
<p>Do you duplicate your package diagram for each aggregate in your application/service? How does this packaging work with your Customer Service (where the context of the Customer aggregate includes other non-Order items)</p>
<p>This packaging scheme would seem ideal per aggregate (so that changing a table name is a single package change, adding a database column and new method would only affect 2 packages, etc)..but would end up with many dlls (which just means better change/configuration mgmt i suppose)..</p>
<p>I get the sneaky feeling you are going to tell me the Customer aggregate goes into a seperate service but figured i&#8217;d ask.. <img src='http://www.udidahan.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Given that packages are supposed to be units of reuse, how does that fit into your package schema (given that the Customer type crosses aggregate boundaries) if at all..</p>
]]></content:encoded>
	</item>
</channel>
</rss>
