<?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: Command Query Separation and SOA</title>
	<atom:link href="http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/</link>
	<description>Enterprise Development Expert &#38; SOA Specialist</description>
	<lastBuildDate>Thu, 11 Mar 2010 11:59:32 -0600</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: udidahan</title>
		<link>http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/comment-page-1/#comment-36961</link>
		<dc:creator>udidahan</dc:creator>
		<pubDate>Wed, 13 Jan 2010 19:55:26 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/#comment-36961</guid>
		<description>Roy,

There is a difference between CQS (recently renamed to CQRS - see here for more info: http://www.udidahan.com/2009/12/09/clarified-cqrs/ ) and what&#039;s known as Event Sourcing. CQRS doesn&#039;t make any statement about how data in the storage serving commands is structured - it could be relational, hierarchical, object-oriented, or anything else.

I think the best place to ask these questions on the comment thread going on here:

http://blog.fohjin.com/blog/2009/11/12/CQRS_a_la_Greg_Young</description>
		<content:encoded><![CDATA[<p>Roy,</p>
<p>There is a difference between CQS (recently renamed to CQRS &#8211; see here for more info: <a href="http://www.udidahan.com/2009/12/09/clarified-cqrs/" rel="nofollow">http://www.udidahan.com/2009/12/09/clarified-cqrs/</a> ) and what&#8217;s known as Event Sourcing. CQRS doesn&#8217;t make any statement about how data in the storage serving commands is structured &#8211; it could be relational, hierarchical, object-oriented, or anything else.</p>
<p>I think the best place to ask these questions on the comment thread going on here:</p>
<p><a href="http://blog.fohjin.com/blog/2009/11/12/CQRS_a_la_Greg_Young" rel="nofollow">http://blog.fohjin.com/blog/2009/11/12/CQRS_a_la_Greg_Young</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Roy</title>
		<link>http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/comment-page-1/#comment-36960</link>
		<dc:creator>Roy</dc:creator>
		<pubDate>Wed, 13 Jan 2010 19:06:36 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/#comment-36960</guid>
		<description>I&#039;m just getting up to speed with this CQS technique. I&#039;ve noticed that the event store is usually serialized events.  I&#039;m definitely not use to serialzing objects in a database, but my concern is what if an Event object needs to be changed? What happens when I need to add a property? How will that affect the other objects of the same type already stored? You can&#039;t have two different verions of ClientMovedEvents in the same database.  Wouldn&#039;t that break the code if you need to reply them?</description>
		<content:encoded><![CDATA[<p>I&#8217;m just getting up to speed with this CQS technique. I&#8217;ve noticed that the event store is usually serialized events.  I&#8217;m definitely not use to serialzing objects in a database, but my concern is what if an Event object needs to be changed? What happens when I need to add a property? How will that affect the other objects of the same type already stored? You can&#8217;t have two different verions of ClientMovedEvents in the same database.  Wouldn&#8217;t that break the code if you need to reply them?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Living in the Tech Avalanche Generation &#187; Entity Framework &#8211; Don&#8217;t take aggregates for granted</title>
		<link>http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/comment-page-1/#comment-36858</link>
		<dc:creator>Living in the Tech Avalanche Generation &#187; Entity Framework &#8211; Don&#8217;t take aggregates for granted</dc:creator>
		<pubDate>Sun, 06 Dec 2009 12:44:53 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/#comment-36858</guid>
		<description>[...] other thing to consider is that aggregations are usually a function of reporting and this is where architecturally speaking CQRS can help us solve the problem and build a more highly concurrent system by publishing [...]</description>
		<content:encoded><![CDATA[<p>[...] other thing to consider is that aggregations are usually a function of reporting and this is where architecturally speaking CQRS can help us solve the problem and build a more highly concurrent system by publishing [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Elegant Code &#187; DTO&#8217;s, DDD &#38; The Anemic Domain Model</title>
		<link>http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/comment-page-1/#comment-36839</link>
		<dc:creator>Elegant Code &#187; DTO&#8217;s, DDD &#38; The Anemic Domain Model</dc:creator>
		<pubDate>Fri, 13 Nov 2009 23:07:43 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/#comment-36839</guid>
		<description>[...] all somewhat related: http://jonathan-oliver.blogspot.com/2009/03/dddd-and-cqs-getting-started.html http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/ http://codebetter.com/blogs/gregyoung/archive/2009/08/13/command-query-separation.aspx [...]</description>
		<content:encoded><![CDATA[<p>[...] all somewhat related: <a href="http://jonathan-oliver.blogspot.com/2009/03/dddd-and-cqs-getting-started.html" rel="nofollow">http://jonathan-oliver.blogspot.com/2009/03/dddd-and-cqs-getting-started.html</a> <a href="http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/" rel="nofollow">http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/</a> <a href="http://codebetter.com/blogs/gregyoung/archive/2009/08/13/command-query-separation.aspx" rel="nofollow">http://codebetter.com/blogs/gregyoung/archive/2009/08/13/command-query-separation.aspx</a> [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: The catalogue metaphor and command-query seperation architectures - Ian Cooper - CodeBetter.Com - Stuff you need to Code Better!</title>
		<link>http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/comment-page-1/#comment-36767</link>
		<dc:creator>The catalogue metaphor and command-query seperation architectures - Ian Cooper - CodeBetter.Com - Stuff you need to Code Better!</dc:creator>
		<pubDate>Thu, 08 Oct 2009 11:06:58 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/#comment-36767</guid>
		<description>[...] separation is being popularized today with architects like Greg Young and Udi Dahan as a way of architecting systems. It can be hard to grasp as a concept, even if we understand [...]</description>
		<content:encoded><![CDATA[<p>[...] separation is being popularized today with architects like Greg Young and Udi Dahan as a way of architecting systems. It can be hard to grasp as a concept, even if we understand [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jump into &#62;&#62; Command Query Separation as an Architectural Concept &#171; Jump into &#62;&#62;</title>
		<link>http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/comment-page-1/#comment-36278</link>
		<dc:creator>Jump into &#62;&#62; Command Query Separation as an Architectural Concept &#171; Jump into &#62;&#62;</dc:creator>
		<pubDate>Sat, 27 Jun 2009 18:07:10 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/#comment-36278</guid>
		<description>[...] Command Query Separation and SOA [...]</description>
		<content:encoded><![CDATA[<p>[...] Command Query Separation and SOA [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: udidahan</title>
		<link>http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/comment-page-1/#comment-35863</link>
		<dc:creator>udidahan</dc:creator>
		<pubDate>Fri, 19 Dec 2008 20:58:06 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/#comment-35863</guid>
		<description>Steve,

Re: How scalable would this be if large numbers of clients were requesting data in this way especially over slow connnections? 

This is the way clients that don&#039;t use pub/sub do things anyway :)

The answer to the rest of your question deserves a full blog post of its own, if not more than one :)</description>
		<content:encoded><![CDATA[<p>Steve,</p>
<p>Re: How scalable would this be if large numbers of clients were requesting data in this way especially over slow connnections? </p>
<p>This is the way clients that don&#8217;t use pub/sub do things anyway <img src='http://www.udidahan.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>The answer to the rest of your question deserves a full blog post of its own, if not more than one <img src='http://www.udidahan.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steve Evers</title>
		<link>http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/comment-page-1/#comment-35856</link>
		<dc:creator>Steve Evers</dc:creator>
		<pubDate>Tue, 16 Dec 2008 23:21:45 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/#comment-35856</guid>
		<description>In the article you showed that the query component could be moved to the client [&#039;Instead of a star-schema OLAP product, we might simply store the published data in memory on the client.&#039;]  However wouldn&#039;t this mean that the client would initially have to request the whole dataset as the data would be lost every time the client or app was restarted (or when a new client comes online)?  How scalable would this be if large numbers of clients were requesting data in this way especially over slow connnections? 

The client could save the information to disk, however they may also be disconnected or off for long periods of time. You mentioned in your recent article &#039;Lost Notifications? No Problem.&#039; that [&#039;Publishers have no choice but to throw away messages after a certain period of time.&#039;] What would you suggest in this situation (a differential query, P2P) or force the server to maintain the messages indefinitely (eg Outlook and Exchange)?</description>
		<content:encoded><![CDATA[<p>In the article you showed that the query component could be moved to the client ['Instead of a star-schema OLAP product, we might simply store the published data in memory on the client.']  However wouldn&#8217;t this mean that the client would initially have to request the whole dataset as the data would be lost every time the client or app was restarted (or when a new client comes online)?  How scalable would this be if large numbers of clients were requesting data in this way especially over slow connnections? </p>
<p>The client could save the information to disk, however they may also be disconnected or off for long periods of time. You mentioned in your recent article &#8216;Lost Notifications? No Problem.&#8217; that ['Publishers have no choice but to throw away messages after a certain period of time.'] What would you suggest in this situation (a differential query, P2P) or force the server to maintain the messages indefinitely (eg Outlook and Exchange)?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: SOA, EDA, and CEP a winning combo</title>
		<link>http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/comment-page-1/#comment-35797</link>
		<dc:creator>SOA, EDA, and CEP a winning combo</dc:creator>
		<pubDate>Sat, 01 Nov 2008 22:57:49 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/#comment-35797</guid>
		<description>[...] How client interaction fits with SOA [...]</description>
		<content:encoded><![CDATA[<p>[...] How client interaction fits with SOA [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: udidahan</title>
		<link>http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/comment-page-1/#comment-35766</link>
		<dc:creator>udidahan</dc:creator>
		<pubDate>Wed, 22 Oct 2008 08:30:36 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/#comment-35766</guid>
		<description>Colin,

That&#039;s correct.</description>
		<content:encoded><![CDATA[<p>Colin,</p>
<p>That&#8217;s correct.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Colin Jack</title>
		<link>http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/comment-page-1/#comment-35765</link>
		<dc:creator>Colin Jack</dc:creator>
		<pubDate>Tue, 21 Oct 2008 20:53:54 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/#comment-35765</guid>
		<description>@udidahan
Would it be fair to say that the upper layers mainly communicate with the Query services synchronously? I&#039;m thinking here of getting all Customers, getting a Customer to edit and so on.</description>
		<content:encoded><![CDATA[<p>@udidahan<br />
Would it be fair to say that the upper layers mainly communicate with the Query services synchronously? I&#8217;m thinking here of getting all Customers, getting a Customer to edit and so on.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: udidahan</title>
		<link>http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/comment-page-1/#comment-29119</link>
		<dc:creator>udidahan</dc:creator>
		<pubDate>Wed, 13 Aug 2008 08:20:48 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/#comment-29119</guid>
		<description>Sergey,

&gt; Why don’t you use async messages for any potentially remote communication? 

When the architecture itself is synchronous, introducing one-way messaging brings quite a lot of complexity. Also, the robustness and scalability benefits are thwarted by the synchronous architecture.

You can&#039;t be going both left and right at the same time.

&gt; Why at all do you encourage people to use RPC? 

I&#039;m trying to encourage people to understand the tradeoffs between the various choices - one way/pub sub/rpc. What makes sense where, and why.

&gt; Is your position more like “RPC is OK for in-service remote communication” or more like “Avoid using Messages for in-service communication”? 

My position is that, if there&#039;s any place where RPC will cause the minimal amount of damage, it&#039;s within service bounaries.

I would definitely NOT suggest the latter. Messaging is such a strong paradigm that it requires the overall architecture to be aligned with it. When that occurs, you get tremendous benefits from using messaging within service boundaries as well.

Finally, the main point is to understand the different contexts for making decisions. Between services, under no circumstances should RPC be used - unless its an insignificant implementation detail in supporting a higher level messaging infrastructure (MSMQ makes use of RPC under the covers).

Hope that clears it up.


I&#039;ll check on the comment feed, thanks.</description>
		<content:encoded><![CDATA[<p>Sergey,</p>
<p>&gt; Why don’t you use async messages for any potentially remote communication? </p>
<p>When the architecture itself is synchronous, introducing one-way messaging brings quite a lot of complexity. Also, the robustness and scalability benefits are thwarted by the synchronous architecture.</p>
<p>You can&#8217;t be going both left and right at the same time.</p>
<p>&gt; Why at all do you encourage people to use RPC? </p>
<p>I&#8217;m trying to encourage people to understand the tradeoffs between the various choices &#8211; one way/pub sub/rpc. What makes sense where, and why.</p>
<p>&gt; Is your position more like “RPC is OK for in-service remote communication” or more like “Avoid using Messages for in-service communication”? </p>
<p>My position is that, if there&#8217;s any place where RPC will cause the minimal amount of damage, it&#8217;s within service bounaries.</p>
<p>I would definitely NOT suggest the latter. Messaging is such a strong paradigm that it requires the overall architecture to be aligned with it. When that occurs, you get tremendous benefits from using messaging within service boundaries as well.</p>
<p>Finally, the main point is to understand the different contexts for making decisions. Between services, under no circumstances should RPC be used &#8211; unless its an insignificant implementation detail in supporting a higher level messaging infrastructure (MSMQ makes use of RPC under the covers).</p>
<p>Hope that clears it up.</p>
<p>I&#8217;ll check on the comment feed, thanks.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: The straw that healed the camels back &#124; The Freak Parade</title>
		<link>http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/comment-page-1/#comment-29080</link>
		<dc:creator>The straw that healed the camels back &#124; The Freak Parade</dc:creator>
		<pubDate>Tue, 12 Aug 2008 04:11:15 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/#comment-29080</guid>
		<description>[...] the system within that paradigm, even when the fit seemed just terrible. Udi Dahan was kind enough to post about that exact topic in his blog last night, setting a critical thought-balloon free and allowing a system design [...]</description>
		<content:encoded><![CDATA[<p>[...] the system within that paradigm, even when the fit seemed just terrible. Udi Dahan was kind enough to post about that exact topic in his blog last night, setting a critical thought-balloon free and allowing a system design [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Alex Simkin</title>
		<link>http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/comment-page-1/#comment-29070</link>
		<dc:creator>Alex Simkin</dc:creator>
		<pubDate>Mon, 11 Aug 2008 23:26:15 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/#comment-29070</guid>
		<description>Oh, now I see from where this idea has come to me :)

Thank you very much, indeed.</description>
		<content:encoded><![CDATA[<p>Oh, now I see from where this idea has come to me <img src='http://www.udidahan.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Thank you very much, indeed.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: udidahan</title>
		<link>http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/comment-page-1/#comment-29068</link>
		<dc:creator>udidahan</dc:creator>
		<pubDate>Mon, 11 Aug 2008 22:19:16 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/#comment-29068</guid>
		<description>Alex,

I&#039;m not quite sure I understand your question, but does the &lt;a href=&quot;http://www.udidahan.com/2008/07/30/scaling-long-running-web-services/&quot; rel=&quot;nofollow&quot;&gt;REST style solution&lt;/a&gt; I described in previous post correlate to the way your thinking about using GUIDs?

If so, then I&#039;d use a long-running process like nServiceBus&#039; sagas to manage the allocation and cleanup of those GUIDs. You&#039;d probably want to experiment with various cleanup times until you settle on a cleanup policy that works for you.

Hope that helps.</description>
		<content:encoded><![CDATA[<p>Alex,</p>
<p>I&#8217;m not quite sure I understand your question, but does the <a href="http://www.udidahan.com/2008/07/30/scaling-long-running-web-services/" rel="nofollow">REST style solution</a> I described in previous post correlate to the way your thinking about using GUIDs?</p>
<p>If so, then I&#8217;d use a long-running process like nServiceBus&#8217; sagas to manage the allocation and cleanup of those GUIDs. You&#8217;d probably want to experiment with various cleanup times until you settle on a cleanup policy that works for you.</p>
<p>Hope that helps.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tyler Burd</title>
		<link>http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/comment-page-1/#comment-29066</link>
		<dc:creator>Tyler Burd</dc:creator>
		<pubDate>Mon, 11 Aug 2008 21:50:14 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/#comment-29066</guid>
		<description>Thanks for the great post, Udi.  This applies to my current situation, and it has helped clarify things greatly.

Alex, we&#039;re toying with the idea of using an ID broker service for things that we can&#039;t have GUIDs for.  This way a client can send a RequestNextId message, the server generates the next id (and reserves it so no future entities can use it), and then sends back a message to the original sender.  The correlation is done automatically for you in nServiceBus (via the IdForCorrelation property of the TransportMessage class if you&#039;re using the MSMQTransport).  The client receives the message and knows which RequestNextId message it correlates to.</description>
		<content:encoded><![CDATA[<p>Thanks for the great post, Udi.  This applies to my current situation, and it has helped clarify things greatly.</p>
<p>Alex, we&#8217;re toying with the idea of using an ID broker service for things that we can&#8217;t have GUIDs for.  This way a client can send a RequestNextId message, the server generates the next id (and reserves it so no future entities can use it), and then sends back a message to the original sender.  The correlation is done automatically for you in nServiceBus (via the IdForCorrelation property of the TransportMessage class if you&#8217;re using the MSMQTransport).  The client receives the message and knows which RequestNextId message it correlates to.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sergey Shishkin</title>
		<link>http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/comment-page-1/#comment-29065</link>
		<dc:creator>Sergey Shishkin</dc:creator>
		<pubDate>Mon, 11 Aug 2008 21:28:14 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/#comment-29065</guid>
		<description>Off topic: the comments feed seems to be broken, I can&#039;t subscribe. See http://feedvalidator.org/check.cgi?url=http%3a%2f%2fwww.udidahan.com%2fcomments%2ffeed%2f</description>
		<content:encoded><![CDATA[<p>Off topic: the comments feed seems to be broken, I can&#8217;t subscribe. See <a href="http://feedvalidator.org/check.cgi?url=http%3a%2f%2fwww.udidahan.com%2fcomments%2ffeed%2f" rel="nofollow">http://feedvalidator.org/check.cgi?url=http%3a%2f%2fwww.udidahan.com%2fcomments%2ffeed%2f</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sergey Shishkin</title>
		<link>http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/comment-page-1/#comment-29064</link>
		<dc:creator>Sergey Shishkin</dc:creator>
		<pubDate>Mon, 11 Aug 2008 21:22:43 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/#comment-29064</guid>
		<description>Why don&#039;t you use async messages for any potentially remote communication? Why at all do you encourage people to use RPC? (let&#039;s left streaming aside) Is your position more like &quot;RPC is OK for in-service remote communication&quot; or more like &quot;Avoid using Messages for in-service communication&quot;? Could you elaborate more on this?</description>
		<content:encoded><![CDATA[<p>Why don&#8217;t you use async messages for any potentially remote communication? Why at all do you encourage people to use RPC? (let&#8217;s left streaming aside) Is your position more like &#8220;RPC is OK for in-service remote communication&#8221; or more like &#8220;Avoid using Messages for in-service communication&#8221;? Could you elaborate more on this?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Alex Simkin</title>
		<link>http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/comment-page-1/#comment-29062</link>
		<dc:creator>Alex Simkin</dc:creator>
		<pubDate>Mon, 11 Aug 2008 21:06:48 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/#comment-29062</guid>
		<description>Even though you didn&#039;t answer my question your responce gave me an idea to use GUID as a correlation value for subsequent query. As I explained, I cannot generate ID on the client, the record being &quot;created&quot; may already exist (service automatically removes duplicate facts).

However, in this case, a new question arises: how long should service keep correlation value?</description>
		<content:encoded><![CDATA[<p>Even though you didn&#8217;t answer my question your responce gave me an idea to use GUID as a correlation value for subsequent query. As I explained, I cannot generate ID on the client, the record being &#8220;created&#8221; may already exist (service automatically removes duplicate facts).</p>
<p>However, in this case, a new question arises: how long should service keep correlation value?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: udidahan</title>
		<link>http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/comment-page-1/#comment-29055</link>
		<dc:creator>udidahan</dc:creator>
		<pubDate>Mon, 11 Aug 2008 19:35:05 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/#comment-29055</guid>
		<description>Commenter,

Wikipedia is the outer join of the wisdom of crowds and the ignorance of herds, or so someone once told me ;)</description>
		<content:encoded><![CDATA[<p>Commenter,</p>
<p>Wikipedia is the outer join of the wisdom of crowds and the ignorance of herds, or so someone once told me <img src='http://www.udidahan.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: udidahan</title>
		<link>http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/comment-page-1/#comment-29054</link>
		<dc:creator>udidahan</dc:creator>
		<pubDate>Mon, 11 Aug 2008 19:33:48 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/#comment-29054</guid>
		<description>Alex,

Actually, the SQL insert command doesn&#039;t return the value of an identity column - you specifically have to query for it. That being said, all SQL statement do return the number of rows affected, an apparent violation of CQS.

Personally, I liked GUIDs for IDs.</description>
		<content:encoded><![CDATA[<p>Alex,</p>
<p>Actually, the SQL insert command doesn&#8217;t return the value of an identity column &#8211; you specifically have to query for it. That being said, all SQL statement do return the number of rows affected, an apparent violation of CQS.</p>
<p>Personally, I liked GUIDs for IDs.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: commenter</title>
		<link>http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/comment-page-1/#comment-29050</link>
		<dc:creator>commenter</dc:creator>
		<pubDate>Mon, 11 Aug 2008 16:54:36 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/#comment-29050</guid>
		<description>Its kind of funny that the wikipedia article illustrates CQS with a function that returns a value and changes the state. I think they&#039;re saying that returning a value via an out parameter isn&#039;t &#039;returning a value&#039;.

So, to my understanding, CQS is really &#039;only change state in methods with returntype == void&#039;.</description>
		<content:encoded><![CDATA[<p>Its kind of funny that the wikipedia article illustrates CQS with a function that returns a value and changes the state. I think they&#8217;re saying that returning a value via an out parameter isn&#8217;t &#8216;returning a value&#8217;.</p>
<p>So, to my understanding, CQS is really &#8216;only change state in methods with returntype == void&#8217;.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Alex Simkin</title>
		<link>http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/comment-page-1/#comment-29047</link>
		<dc:creator>Alex Simkin</dc:creator>
		<pubDate>Mon, 11 Aug 2008 14:34:12 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2008/08/11/command-query-separation-and-soa/#comment-29047</guid>
		<description>Short question on CQS. 

&quot;Usual&quot; return value of the CREATE command is a surrogate key of the inserted (or sometimes upserted) entity. Even if natural key exists, it may be to clumsy to use. How this (getting identity of the created entity) should be handled in CQS.

I have ment upsert to underline that it&#039;s not always possible to generate identity on the client side.</description>
		<content:encoded><![CDATA[<p>Short question on CQS. </p>
<p>&#8220;Usual&#8221; return value of the CREATE command is a surrogate key of the inserted (or sometimes upserted) entity. Even if natural key exists, it may be to clumsy to use. How this (getting identity of the created entity) should be handled in CQS.</p>
<p>I have ment upsert to underline that it&#8217;s not always possible to generate identity on the client side.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
