<?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: Brownfield CQRS part 1 – Commands</title>
	<atom:link href="http://richarddingwall.name/2010/06/15/brownfield-cqrs-part-1-commands/feed/" rel="self" type="application/rss+xml" />
	<link>http://richarddingwall.name/2010/06/15/brownfield-cqrs-part-1-commands/</link>
	<description>The adventures of a young kiwi software developer in London</description>
	<lastBuildDate>Tue, 31 Jan 2012 19:56:07 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: Tomas</title>
		<link>http://richarddingwall.name/2010/06/15/brownfield-cqrs-part-1-commands/comment-page-1/#comment-15611</link>
		<dc:creator>Tomas</dc:creator>
		<pubDate>Fri, 23 Jul 2010 21:21:50 +0000</pubDate>
		<guid isPermaLink="false">http://richarddingwall.name/?p=3233#comment-15611</guid>
		<description>@seagile: do you mean that the client should provide the correational id and then wait for an event from the server? Isn&#039;t that just a work around for request/response?
@andy, @richard: seems like you having the same discussion but with a different example. I think there will be situations where you want to provide metadata, like transaction id or login token. Do you really want to use CQRS on those kind of commands/operations? I really think it is an interesting pattern but I see some situations where it seems to make things more complex than they are.</description>
		<content:encoded><![CDATA[<p>@seagile: do you mean that the client should provide the correational id and then wait for an event from the server? Isn&#8217;t that just a work around for request/response?<br />
@andy, @richard: seems like you having the same discussion but with a different example. I think there will be situations where you want to provide metadata, like transaction id or login token. Do you really want to use CQRS on those kind of commands/operations? I really think it is an interesting pattern but I see some situations where it seems to make things more complex than they are.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: CQRS Resources - The Developer Day</title>
		<link>http://richarddingwall.name/2010/06/15/brownfield-cqrs-part-1-commands/comment-page-1/#comment-15578</link>
		<dc:creator>CQRS Resources - The Developer Day</dc:creator>
		<pubDate>Wed, 21 Jul 2010 21:37:17 +0000</pubDate>
		<guid isPermaLink="false">http://richarddingwall.name/?p=3233#comment-15578</guid>
		<description>[...] the answer by Udi Dahan. Clarified CQRS by Udi Dahan CQRS a la Greg Young by Mark Nijhof Brownfield CQRS by Richard Dingwall. Transitioning from DDD lite by Julien [...]</description>
		<content:encoded><![CDATA[<p>[...] the answer by Udi Dahan. Clarified CQRS by Udi Dahan CQRS a la Greg Young by Mark Nijhof Brownfield CQRS by Richard Dingwall. Transitioning from DDD lite by Julien [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andy</title>
		<link>http://richarddingwall.name/2010/06/15/brownfield-cqrs-part-1-commands/comment-page-1/#comment-15559</link>
		<dc:creator>Andy</dc:creator>
		<pubDate>Tue, 20 Jul 2010 20:54:48 +0000</pubDate>
		<guid isPermaLink="false">http://richarddingwall.name/?p=3233#comment-15559</guid>
		<description>But is it not wrong to ask the query side for a token because then you change state (allocate new token). Feels like you want to have a &quot;LoginUserCommand&quot; but it feel wierd.....</description>
		<content:encoded><![CDATA[<p>But is it not wrong to ask the query side for a token because then you change state (allocate new token). Feels like you want to have a &#8220;LoginUserCommand&#8221; but it feel wierd&#8230;..</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Richard</title>
		<link>http://richarddingwall.name/2010/06/15/brownfield-cqrs-part-1-commands/comment-page-1/#comment-15552</link>
		<dc:creator>Richard</dc:creator>
		<pubDate>Tue, 20 Jul 2010 09:02:10 +0000</pubDate>
		<guid isPermaLink="false">http://richarddingwall.name/?p=3233#comment-15552</guid>
		<description>@Andy: you could ask for a login token (query) then supply that token with each command sent to the server, and finally send a command to invalidate the token on logout.</description>
		<content:encoded><![CDATA[<p>@Andy: you could ask for a login token (query) then supply that token with each command sent to the server, and finally send a command to invalidate the token on logout.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andy</title>
		<link>http://richarddingwall.name/2010/06/15/brownfield-cqrs-part-1-commands/comment-page-1/#comment-15551</link>
		<dc:creator>Andy</dc:creator>
		<pubDate>Tue, 20 Jul 2010 08:57:46 +0000</pubDate>
		<guid isPermaLink="false">http://richarddingwall.name/?p=3233#comment-15551</guid>
		<description>How would you implement (using CQRS) a standard website login (username/password) activity? 

A login is something that has to be performed without delays to not annoy the users.

Would you send a login command and then poll the query side for &quot;login ok or failed?&quot;. Will that not be pretty inefficient and take long time to login?

or would you store a &quot;username/pwd&quot; hash on the query side that the client queries? 

But when you do login you want to do some logic as well.....

any thoughts?</description>
		<content:encoded><![CDATA[<p>How would you implement (using CQRS) a standard website login (username/password) activity? </p>
<p>A login is something that has to be performed without delays to not annoy the users.</p>
<p>Would you send a login command and then poll the query side for &#8220;login ok or failed?&#8221;. Will that not be pretty inefficient and take long time to login?</p>
<p>or would you store a &#8220;username/pwd&#8221; hash on the query side that the client queries? </p>
<p>But when you do login you want to do some logic as well&#8230;..</p>
<p>any thoughts?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: seagile</title>
		<link>http://richarddingwall.name/2010/06/15/brownfield-cqrs-part-1-commands/comment-page-1/#comment-15546</link>
		<dc:creator>seagile</dc:creator>
		<pubDate>Mon, 19 Jul 2010 22:13:59 +0000</pubDate>
		<guid isPermaLink="false">http://richarddingwall.name/?p=3233#comment-15546</guid>
		<description>@Tomas You could specify a correlationid and wait for response messages with that correlationid (one of those response messages could carry the transaction-id). I&#039;d do that in a an async fashion, which would make it a basic saga I guess.
The other question you could ask yourself is if the transaction-id could not be determined on the calling side? Now, I never worked with PSPs before, so I may be out of my depth here ;-)</description>
		<content:encoded><![CDATA[<p>@Tomas You could specify a correlationid and wait for response messages with that correlationid (one of those response messages could carry the transaction-id). I&#8217;d do that in a an async fashion, which would make it a basic saga I guess.<br />
The other question you could ask yourself is if the transaction-id could not be determined on the calling side? Now, I never worked with PSPs before, so I may be out of my depth here ;-)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tomas</title>
		<link>http://richarddingwall.name/2010/06/15/brownfield-cqrs-part-1-commands/comment-page-1/#comment-15545</link>
		<dc:creator>Tomas</dc:creator>
		<pubDate>Mon, 19 Jul 2010 21:07:19 +0000</pubDate>
		<guid isPermaLink="false">http://richarddingwall.name/?p=3233#comment-15545</guid>
		<description>Lets say you&#039;re a payment service provider (PSP). When creating/executing a transaction you would have a command like CreateTransaction or similar. How should you return the transaction id from such a command. Or should you first make a query asking for a transaction id and then use that id creating/executing your transaction?</description>
		<content:encoded><![CDATA[<p>Lets say you&#8217;re a payment service provider (PSP). When creating/executing a transaction you would have a command like CreateTransaction or similar. How should you return the transaction id from such a command. Or should you first make a query asking for a transaction id and then use that id creating/executing your transaction?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Richard</title>
		<link>http://richarddingwall.name/2010/06/15/brownfield-cqrs-part-1-commands/comment-page-1/#comment-15052</link>
		<dc:creator>Richard</dc:creator>
		<pubDate>Tue, 22 Jun 2010 14:15:35 +0000</pubDate>
		<guid isPermaLink="false">http://richarddingwall.name/?p=3233#comment-15052</guid>
		<description>@Matt: haven&#039;t had a look at Agatha. I know WCF doesn&#039;t support fully-generic parameters due to SOAP limitations.</description>
		<content:encoded><![CDATA[<p>@Matt: haven&#8217;t had a look at Agatha. I know WCF doesn&#8217;t support fully-generic parameters due to SOAP limitations.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: David</title>
		<link>http://richarddingwall.name/2010/06/15/brownfield-cqrs-part-1-commands/comment-page-1/#comment-14992</link>
		<dc:creator>David</dc:creator>
		<pubDate>Fri, 18 Jun 2010 17:57:25 +0000</pubDate>
		<guid isPermaLink="false">http://richarddingwall.name/?p=3233#comment-14992</guid>
		<description>Excellent article, I look forward to the rest of them however, in regards to the third reason to have a command DTO as apposed to a single parameter;

&quot;Adding another parameter to the command (say, for example, an optional reason for cancelling) would require you to change the signature of the service contract. Ading another property to a command object would not.&quot;

In either case, if you add a parameter to the service contract or add a property to the data contract of that service, the signature of the service in effect has changed (logically not binary).  In both instances you would have to take into account versioning of service contracts and/or data contracts if you want, or just make sure all clients have the updated data contract (DTO commands) used by the service or the service contract (single parameter commands) itself.</description>
		<content:encoded><![CDATA[<p>Excellent article, I look forward to the rest of them however, in regards to the third reason to have a command DTO as apposed to a single parameter;</p>
<p>&#8220;Adding another parameter to the command (say, for example, an optional reason for cancelling) would require you to change the signature of the service contract. Ading another property to a command object would not.&#8221;</p>
<p>In either case, if you add a parameter to the service contract or add a property to the data contract of that service, the signature of the service in effect has changed (logically not binary).  In both instances you would have to take into account versioning of service contracts and/or data contracts if you want, or just make sure all clients have the updated data contract (DTO commands) used by the service or the service contract (single parameter commands) itself.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Matt</title>
		<link>http://richarddingwall.name/2010/06/15/brownfield-cqrs-part-1-commands/comment-page-1/#comment-14981</link>
		<dc:creator>Matt</dc:creator>
		<pubDate>Thu, 17 Jun 2010 23:10:46 +0000</pubDate>
		<guid isPermaLink="false">http://richarddingwall.name/?p=3233#comment-14981</guid>
		<description>@seagile: true - that is possible. you are correct there would be a smell, albeit not a good one. :)</description>
		<content:encoded><![CDATA[<p>@seagile: true &#8211; that is possible. you are correct there would be a smell, albeit not a good one. :)</p>
]]></content:encoded>
	</item>
</channel>
</rss>

