<?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: [Podcast] Occasionally Connected Smart Clients and ADO.NET Sync Services</title>
	<atom:link href="http://www.udidahan.com/2007/04/17/podcast-occasionally-connected-smart-clients-and-adonet-sync-services/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.udidahan.com/2007/04/17/podcast-occasionally-connected-smart-clients-and-adonet-sync-services/</link>
	<description>Enterprise Development Expert &#38; SOA Specialist</description>
	<lastBuildDate>Sat, 11 Feb 2012 15:16:10 -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/2007/04/17/podcast-occasionally-connected-smart-clients-and-adonet-sync-services/comment-page-1/#comment-37534</link>
		<dc:creator>udidahan</dc:creator>
		<pubDate>Fri, 19 Nov 2010 20:46:38 +0000</pubDate>
		<guid isPermaLink="false">http://udidahan.weblogs.us/2007/04/17/podcast-occasionally-connected-smart-clients-and-adonet-sync-services/#comment-37534</guid>
		<description>Aaron,

It&#039;s probably more difficult to solve the problem of identifying which messages become inconsequential (given the unknown rules that will operate on them when replayed against the server) than to just deal with each concurrency/business rules conflict on the server as usual.</description>
		<content:encoded><![CDATA[<p>Aaron,</p>
<p>It&#8217;s probably more difficult to solve the problem of identifying which messages become inconsequential (given the unknown rules that will operate on them when replayed against the server) than to just deal with each concurrency/business rules conflict on the server as usual.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Aaron</title>
		<link>http://www.udidahan.com/2007/04/17/podcast-occasionally-connected-smart-clients-and-adonet-sync-services/comment-page-1/#comment-37532</link>
		<dc:creator>Aaron</dc:creator>
		<pubDate>Thu, 18 Nov 2010 21:28:53 +0000</pubDate>
		<guid isPermaLink="false">http://udidahan.weblogs.us/2007/04/17/podcast-occasionally-connected-smart-clients-and-adonet-sync-services/#comment-37532</guid>
		<description>Good thinking on this topic Udi.  I agree that lower level resolution of concurrency issues (sync framework) does nothing for us... unless we can infer and reconstitute the related business transaction from it.  We&#039;re also in agreement that the best concurrency conflict resolution solutions are going to be dealt with in the business domain layer of the app  But wait... here comes...

However, the solution of queueing up messages or business actions on a disconnected client and resolving the concurrency issues in bus. logic as they are &quot;played&quot; upon reconnection still leaves us with a serious problem that you didn&#039;t explore.  If we have several messages in the queue whereby one of the later messages makes one of the earlier messages irrelevant (ex: I changed my address 2x) and one of the inconsequential messages causes a concurrency conflict to occur, we would potentially be asking the user to resolve an issue for an intermediate action that is no longer relevant to them and has probably left their mental model.

The only solution I can see here that might apply is to optimize the queue as messages get added or as the queue is played back.  This brings us back very much into into &#039;not straight forward land&#039;.  Any thoughts on this?</description>
		<content:encoded><![CDATA[<p>Good thinking on this topic Udi.  I agree that lower level resolution of concurrency issues (sync framework) does nothing for us&#8230; unless we can infer and reconstitute the related business transaction from it.  We&#8217;re also in agreement that the best concurrency conflict resolution solutions are going to be dealt with in the business domain layer of the app  But wait&#8230; here comes&#8230;</p>
<p>However, the solution of queueing up messages or business actions on a disconnected client and resolving the concurrency issues in bus. logic as they are &#8220;played&#8221; upon reconnection still leaves us with a serious problem that you didn&#8217;t explore.  If we have several messages in the queue whereby one of the later messages makes one of the earlier messages irrelevant (ex: I changed my address 2x) and one of the inconsequential messages causes a concurrency conflict to occur, we would potentially be asking the user to resolve an issue for an intermediate action that is no longer relevant to them and has probably left their mental model.</p>
<p>The only solution I can see here that might apply is to optimize the queue as messages get added or as the queue is played back.  This brings us back very much into into &#8216;not straight forward land&#8217;.  Any thoughts on this?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Prism - Occasionally Connected?</title>
		<link>http://www.udidahan.com/2007/04/17/podcast-occasionally-connected-smart-clients-and-adonet-sync-services/comment-page-1/#comment-24286</link>
		<dc:creator>Prism - Occasionally Connected?</dc:creator>
		<pubDate>Mon, 09 Jun 2008 12:47:05 +0000</pubDate>
		<guid isPermaLink="false">http://udidahan.weblogs.us/2007/04/17/podcast-occasionally-connected-smart-clients-and-adonet-sync-services/#comment-24286</guid>
		<description>[...] [Podcast] Occasionally Connected Smart Clients and ADO.NET Sync Services [...]</description>
		<content:encoded><![CDATA[<p>[...] [Podcast] Occasionally Connected Smart Clients and ADO.NET Sync Services [...]</p>
]]></content:encoded>
	</item>
</channel>
</rss>

