<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>The Synchronizer : demos</title><link>http://blogs.msdn.com/synchronizer/archive/tags/demos/default.aspx</link><description>Tags: demos</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>New Release: Windows Mobile Line of Business Solution Accelerator 2008</title><link>http://blogs.msdn.com/synchronizer/archive/2008/03/16/new-release-windows-mobile-line-of-business-solution-accelerator-2008.aspx</link><pubDate>Sun, 16 Mar 2008 22:42:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8272822</guid><dc:creator>Rafik</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/synchronizer/comments/8272822.aspx</comments><wfw:commentRss>http://blogs.msdn.com/synchronizer/commentrss.aspx?PostID=8272822</wfw:commentRss><description>&lt;p&gt;Rob Tiffany, &lt;a href="http://blogs.msdn.com/robtiffany/default.aspx" class="" mce_href="http://blogs.msdn.com/robtiffany/default.aspx"&gt;the mobile accelerator guy&lt;/a&gt;, just announced the new release of &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=428E4C3D-64AD-4A3D-85D2-E711ABC87F04&amp;amp;displaylang=en" class="" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=428E4C3D-64AD-4A3D-85D2-E711ABC87F04&amp;amp;displaylang=en"&gt;Windows Mobile Line of Business Solution Accelerator 2008&lt;/a&gt;. It a collection of windows&amp;nbsp;mobile centric samples that showcase different new technologies and help developers greatly accelerate building their applications, thus the name “Accelerator”. Rob also has a great &lt;a href="http://blogs.msdn.com/robtiffany/default.aspx" class="" mce_href="http://blogs.msdn.com/robtiffany/default.aspx"&gt;blog&lt;/a&gt; that I read regularly. Here is a quick overview of what this new release contains:&lt;/p&gt;&lt;p&gt;&lt;img src="http://blogs.msdn.com/synchronizer/attachment/8272822.ashx" style="width: 194px; height: 323px;" mce_src="http://blogs.msdn.com/synchronizer/attachment/8272822.ashx" align="middle" height="323" hspace="150" width="194"&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Adapt your App&lt;/b&gt;&lt;br&gt;Create a single binary that runs unchanged on Windows Mobile Standard or Pro, Portrait or Landscape, Rectangle or Square.&amp;nbsp; No more wasting time building separate executables to accommodate different screen sizes or input methods.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Sync Services for ADO.NET&lt;/b&gt; &lt;br&gt;Synchronize your data between SQL Server 2008 and SQL Server Compact 3.5 using the new Sync Framework.&amp;nbsp; Keep all your occasionally-connected mobile workers on the same page.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Windows Communication Foundation (WCF) Store and Forward&lt;/b&gt; &lt;br&gt;Reliably push messages to servers or other devices via Exchange Server 2007.&amp;nbsp; Programmatically notify peer devices that they have new orders waiting for them and need to sync.&lt;/li&gt;&lt;li&gt;&lt;b&gt;MapPoint&lt;br&gt;&lt;/b&gt;Guide delivery drivers to their customers via either the shortest or quickest route.&amp;nbsp; Integrated mapping means you’ll never get lost again.&lt;/li&gt;&lt;li&gt;&lt;b&gt;LINQ&lt;br&gt;&lt;/b&gt;Use the new Language Integrated Query to filter results from Generic Object Collections.&amp;nbsp; Query both your objects and XML using a familiar, SQL-like syntax to boost developer productivity.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Custom Controls&lt;/b&gt; &lt;br&gt;Capture signatures and dazzle your end-users with 3D and Alpha-blended controls that alter their behavior depending on the platform they’re running on.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Managed Stored Procedures and Triggers&lt;/b&gt; &lt;br&gt;The pluggable data layer allows you to say goodbye to compiling Dynamic SQL inside your code and fires events to react to INSERT, UPDATE, and DELETE operations.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Notifications and Online Help&lt;br&gt;&lt;/b&gt;Formerly only supported on Pro, say hello to Popup Notifications and Online Help on Standard.&amp;nbsp; Popup Notifications, also known as “toast,” display an HTML message and then disappear after a pre-determined amount of time.&amp;nbsp; Using Online Help on every screen reduces your application training costs.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Language Switching and Localization&lt;/b&gt; &lt;br&gt;Change Language/Regional Settings inside your app and watch text and Online Help speak a different language.&amp;nbsp; Don’t wait until your application is finished to realize that it needs to be world-ready.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Time to Market&lt;br&gt;&lt;/b&gt;Stop reinventing the wheel and use this Accelerator as the foundation for your next Windows Mobile development effort.&amp;nbsp; If you don’t want to use the whole thing, pick and choose the components that are the best fit for your project.&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I am playing with it right now.. pretty cool stuff. &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=428E4C3D-64AD-4A3D-85D2-E711ABC87F04&amp;amp;displaylang=en" class="" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=428E4C3D-64AD-4A3D-85D2-E711ABC87F04&amp;amp;displaylang=en"&gt;&lt;b&gt;Download Now&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Update: Just to let you know, I left Microsoft to start a new company, &lt;b&gt;&lt;a href="http://www.raveable.com" class="" mce_href="http://www.raveable.com"&gt;Raveable Hotel Reviews&lt;/a&gt;&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;. See examples: &lt;b&gt;&lt;a href="http://www.raveable.com/sc/myrtle-beach/top-10-hotels-in-myrtle-beach/l6180c3" mce_href="http://www.raveable.com/sc/myrtle-beach/top-10-hotels-in-myrtle-beach/l6180c3"&gt;Top 10 Hotels in Myrtle Beach&lt;/a&gt;, &lt;a href="http://www.raveable.com/ny/new-york-city/best-hotels-in-new-york-city/l5039c1" title="best hotels in nyc" mce_href="http://www.raveable.com/ny/new-york-city/best-hotels-in-new-york-city/l5039c1"&gt;Best Hotels in NYC&lt;/a&gt;, &lt;a href="http://www.raveable.com/wa/seattle/romantic-hotels-in-seattle/l7344c2" mce_href="http://www.raveable.com/wa/seattle/romantic-hotels-in-seattle/l7344c2"&gt;Romantic Hotels in Seattle&lt;/a&gt;&lt;/b&gt;, &lt;b&gt;&lt;a href="http://www.raveable.com/fl/orlando/kid-friendly-hotels-in-orlando/l1653c16" title="kid friendly hotels in orlando" mce_href="http://www.raveable.com/fl/orlando/kid-friendly-hotels-in-orlando/l1653c16"&gt;Kid Friendly Hotels in Orlando&lt;/a&gt;&lt;/b&gt; and &lt;b&gt;&lt;a href="http://www.raveable.com/ca/san-diego/top-10-hotels-in-san-diego/l568c3" title="top 10 hotels in san diego" mce_href="http://www.raveable.com/ca/san-diego/top-10-hotels-in-san-diego/l568c3"&gt;Top 10 Hotels in San Diego&lt;/a&gt;&lt;/b&gt;. Your feedback is welcome on &lt;a href="http://twitter.com/raveable" mce_href="http://twitter.com/raveable"&gt;twitter.com/raveable&lt;/a&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma; font-size: 13px;"&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://blog.raveable.com/" title="raveable blog" mce_href="http://blog.raveable.com" style="color: rgb(0, 101, 226);"&gt;raveable blog&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;br&gt; &lt;br&gt;&lt;/p&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;I am not actively blogging about Sync Technologies. Please see &lt;a href="http://blogs.msdn.com/sync/" class="" mce_href="http://blogs.msdn.com/sync/"&gt;Sync Team Blog&lt;/a&gt; for more updated content.&lt;/font&gt;&lt;/font&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8272822" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/synchronizer/attachment/8272822.ashx" length="14906" type="image/jpeg" /><category domain="http://blogs.msdn.com/synchronizer/archive/tags/SQLCE/default.aspx">SQLCE</category><category domain="http://blogs.msdn.com/synchronizer/archive/tags/demos/default.aspx">demos</category><category domain="http://blogs.msdn.com/synchronizer/archive/tags/SQL2008/default.aspx">SQL2008</category><category domain="http://blogs.msdn.com/synchronizer/archive/tags/mobile/default.aspx">mobile</category><category domain="http://blogs.msdn.com/synchronizer/archive/tags/SQL2005/default.aspx">SQL2005</category></item><item><title>Sharing Application Samples</title><link>http://blogs.msdn.com/synchronizer/archive/2008/01/15/sharing-application-samples.aspx</link><pubDate>Tue, 15 Jan 2008 08:08:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7115665</guid><dc:creator>Rafik</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/synchronizer/comments/7115665.aspx</comments><wfw:commentRss>http://blogs.msdn.com/synchronizer/commentrss.aspx?PostID=7115665</wfw:commentRss><description>&lt;p&gt;I originally authored the &lt;a href="http://www.syncguru.com/Projects.aspx" class="" mce_href="http://www.syncguru.com/Projects.aspx"&gt;offline application&lt;/a&gt; line of samples to show off the different features of Sync Services. My main goal back then was to provide you with a quick start guide such that you can get into sync quickly. The series of demos has grown to up to eight demos, so as the rate of positive feedback that I’ve been receiving from you and even internally inside the company. Well, for that I thank you!&lt;/p&gt;
&lt;p&gt;Now, with the release of our new DbPeerSyncProvider which is included in &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=C88BA2D1-CEF3-4149-B301-9B056E7FB1E6&amp;amp;displaylang=en" class="" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=C88BA2D1-CEF3-4149-B301-9B056E7FB1E6&amp;amp;displaylang=en"&gt;CTP1&lt;/a&gt; of Microsoft Sync Framework, a new series of demos is also released with it. This time it is part of the SDK. On my machine, the samples are located at: &lt;u&gt;C:\Program Files\Microsoft Sync Framework\v1.0\Runtime\ADO.NET\V2.0\Samples\&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;I called this new line of demos “Sharing Application” to emphasize the key feature of the peer provider which enables different nodes to share and collaborate on a common data set without the need for central authority. Not to say that having a central database is discouraged, it is just not required. &lt;/p&gt;
&lt;p&gt;The SDK ships with five different flavors of the sharing application sample. They share the same user interface and act against the same database schema of orders and order_details tables. If you have tried the offline application demos, you will feel right at home with this new set of samples. I want to give you an overview of each sample and what features of the provider it shows off. But before going there, let’s check out the common user interface for these samples&lt;/p&gt;
&lt;p mce_keep="true"&gt;&lt;img src="http://blogs.msdn.com/synchronizer/attachment/7115665.ashx" title="Sharing Application" style="width: 520px; height: 491px;" alt="Sharing Application" mce_src="http://blogs.msdn.com/synchronizer/attachment/7115665.ashx" height="491" width="520"&gt;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;The first thing to pay attention to in the main form as shown above is the three peers (peer1, peer2, peer3) settings in multiple places. On the top right you configure the machine name where the database is located for each peer (I have all three databases on one machine). On the bottom left, you direct the follow of synchronization through to and from boxes. The UI won’t allow you to select to sync from a given peer to itself. The three conflict generation buttons on the left of the Synchronize button are specific to conflict sample. Other samples might introduce new buttons.&lt;/p&gt;
&lt;p&gt;In building multi-master sync application, three nodes are required to exercise almost all possible scenarios and that’s why you see three peers. You can extend the demo and add as many peers as you want; but as far as the demo goes, three peers should suffice.&lt;/p&gt;
&lt;p&gt;In the setup directory with every sample there is a bunch of .sql files that you should use to create the peer databases along with all necessary stored procedures and triggers. The peer provider requires snapshot isolation transaction while enumerating changes, which means that you need any flavor of SQL Server 2005. SQL Server 2005 Express should work just fine.&lt;/p&gt;
&lt;p&gt;So now you are eager to give it a try, the question is where to start. Let me give you a quick overview for each sample, ordered by complexity, starting with the simplest of course:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;b&gt;SharingAppDemo – Coupled Tracking&lt;br&gt;&lt;/b&gt;Following the most common model used in the offline application demos, here too you start with your base table and add necessary tracking columns to it. For recording deletes, you create a tombstone table for that. &lt;br&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;SharingAppDemo – Decoupled Tracking&lt;br&gt;&lt;/b&gt;You soon realize, after trying the first demo, that tracking metadata for p2p sync is rather demanding and adds many columns to the base table that makes you uncomfortable. Well, I’ve gotten the same feeling myself and this demo shows you how to leave your base table schema intact and move all tracking metadata to a side table called “tracking table”. The rest of the demos are built on top of the decoupled tracking technique so you should give a little bit of time to this demo.&lt;br&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;SharingAppDemo – Tombstone Cleanup&lt;br&gt;&lt;/b&gt;In the peer to peer sync world metadata cleanup is not taken lightly and the peer provider has a special logic for handling the cleanup for you. You just need to call the right method on the provider interface when you need to cleanup the metadata stored for deleted rows. This demo shows you how to do that.&lt;br&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;SharingAppDemo -&amp;nbsp; Column Mapping&lt;br&gt;&lt;/b&gt;In many situations the table schema is different on each node. Despite the diversion in columns names, columns data types are identical which make sync possible. If all nodes decide to agree on a global schema definition, they all could sync without problems. This demo shows you the idea of global schema. It does not use different schema on each node but it maps column name on each node to a global schema name and shows you how that works. If you don’t have this kind of scenario, you could skip this demo.&lt;br&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;SharingAppDemo – Conflicts&lt;br&gt;&lt;/b&gt;It is always fun to show conflict detection and resolution logic. It is my favorite anyways. Once you get comfortable with the peer provider normal sync logic, your treat is to check out how conflicts are handled in peer to peer environment. This demo shows you different types of conflicts and different types of conflict resolution including the ability to retry applying the conflicting row in the next sync.&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;I am very much exited about this new sharing demo series. I think you going to like it too. As always, your comments are welcomed and you &lt;a href="http://forums.microsoft.com/sync/default.aspx?ForumGroupID=529&amp;amp;SiteID=75" class="" mce_href="http://forums.microsoft.com/sync/default.aspx?ForumGroupID=529&amp;amp;SiteID=75"&gt;feedback&lt;/a&gt; is much appreciated.&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Tahoma; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;p mce_keep="true"&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma; font-size: 13px;"&gt;Update: Just to let you know, I left Microsoft to start a new company,&amp;nbsp;&lt;b&gt;&lt;a href="http://www.raveable.com/" class="" mce_href="http://www.raveable.com" style="color: rgb(0, 101, 226);"&gt;Raveable Hotel Reviews.&lt;/a&gt;&lt;/b&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;See examples:&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/ny/new-york-city/romantic-hotels-in-nyc/l5039c2" title="romantic hotels in nyc" mce_href="http://www.raveable.com/ny/new-york-city/romantic-hotels-in-nyc/l5039c2" style="color: rgb(0, 101, 226);"&gt;Romantic Hotels in NYC&lt;/a&gt;&lt;/b&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/wa/seattle/best-hotels-in-seattle/l7344c1" mce_href="http://www.raveable.com/wa/seattle/best-hotels-in-seattle/l7344c1" style="color: rgb(0, 101, 226);"&gt;Best Hotels in Seattle&lt;/a&gt;&lt;/b&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/sc/myrtle-beach/top-10-hotels-in-myrtle-beach/l6180c3" title="top 10 hotels in myrtle beach" mce_href="http://www.raveable.com/sc/myrtle-beach/top-10-hotels-in-myrtle-beach/l6180c3" style="color: rgb(0, 101, 226);"&gt;Top 10 Hotels in Myrtle Beach&lt;/a&gt;&lt;/b&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/il/chicago/kid-friendly-hotels-in-chicago/l2156c16" title="kid friendly hotels in chicago" mce_href="http://www.raveable.com/il/chicago/kid-friendly-hotels-in-chicago/l2156c16" style="color: rgb(0, 101, 226);"&gt;Kid Friendly Hotels in Chicago&lt;/a&gt;&lt;/b&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px; font-weight: bold;"&gt;&lt;a href="http://www.raveable.com/hotels-with-jacuzzi" title="hotels with jacuzzi" mce_href="http://www.raveable.com/hotels-with-jacuzzi" style="color: rgb(0, 101, 226);"&gt;Hotels with in-room jacuzzi&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;and&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.raveable.com/fl/miami/best-hotels-in-miami/l1644c1" title="best hotels in miami" mce_href="http://www.raveable.com/fl/miami/best-hotels-in-miami/l1644c1" style="color: rgb(0, 101, 226);"&gt;&lt;b&gt;Best Hotels in Miami&lt;/b&gt;&lt;/a&gt;. Your feedback is welcome on&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://twitter.com/raveable" mce_href="http://twitter.com/raveable" style="color: rgb(0, 101, 226);"&gt;twitter.com/raveable&lt;/a&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma; font-size: 13px;"&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://blog.raveable.com/" title="raveable blog" mce_href="http://blog.raveable.com" style="color: rgb(0, 101, 226);"&gt;raveable blog&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p mce_keep="true"&gt;I am not actively blogging about Sync Technologies. Please see&amp;nbsp;&lt;a href="http://blogs.msdn.com/sync/" class="" mce_href="http://blogs.msdn.com/sync/" style="color: rgb(0, 101, 226);"&gt;Sync Team Blog&lt;/a&gt;&amp;nbsp;for more updated content.&lt;span class="Apple-converted-space"&gt; &lt;br&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7115665" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/synchronizer/attachment/7115665.ashx" length="766014" type="image/bmp" /><category domain="http://blogs.msdn.com/synchronizer/archive/tags/demos/default.aspx">demos</category><category domain="http://blogs.msdn.com/synchronizer/archive/tags/p2p/default.aspx">p2p</category></item><item><title>Demo VIII: Batching Changes in Sync Services</title><link>http://blogs.msdn.com/synchronizer/archive/2007/12/06/demo-viii-batching-changes-in-sync-services.aspx</link><pubDate>Thu, 06 Dec 2007 20:49:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6682633</guid><dc:creator>Rafik</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/synchronizer/comments/6682633.aspx</comments><wfw:commentRss>http://blogs.msdn.com/synchronizer/commentrss.aspx?PostID=6682633</wfw:commentRss><description>&lt;p&gt;I finally got to sit down and prepare my next demo application in the &lt;a href="http://www.syncguru.com/Projects.aspx" class="" mce_href="http://www.syncguru.com/Projects.aspx"&gt;OfflineApplication&lt;/a&gt; series. This one shows you some neat feature that we added to the runtime a little bit after Beta 2 release. Your feedback was the driving force for including batching support to the product. The original plan was to punt it until the next release. All in all, it worked out very well and I am glad, thanks to you, that we did include batching in V1.&lt;/p&gt;
&lt;p&gt;Sync Services is all about empowering the developer to control the sync operation. The same principal applies to batching support as you will see in the demo. The runtime gives three new session parameters that you can put to work when implementing batching logic. These parameters are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The number of batches you think you need to finish downloading changes&lt;/li&gt;
&lt;li&gt;Maximum anchor value that the runtime can store for you [optional]&lt;/li&gt;
&lt;li&gt;Batch size in terms of number of rows [optional]&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;To clarify the idea, let’s consider the following example:&amp;nbsp; Your client has synchronized to an anchor of 100. The server side current anchor is 10,000. Now, say that you decided to batch the changes and you estimated that you will need 10 batches to complete the job. That said, you need to set the batch count parameter to 10, and the maximum anchor to 10,000. Recall that the sync runtime needs a sync_new_received_anchor value to enumerate changes for each batch. To do that you would set it for the first batch to 1000, then 2000 in the next batch ….etc until you hit the maximum anchor value. You got the idea.&lt;/p&gt;
&lt;p&gt;Well, that was simple batching which seems to divide the anchor range and is purely math.&amp;nbsp; But that is just one sample implementation. I bet you are thinking of a scenario where the same row was updated 10,000 times. This approach will make ten round trips to finally get the row at the last batch. That not good!? Of course not, but we invested very little in the previous example in building batching to ask for more than that. So, let’s invest some more and change the logic to count the number of changed rows before it sets the number of batches as well as the new anchor for each batch. The idea is simple and requires a UNION operation for all the timestamp columns in tables participating in sync. A little bit more of code as shown on this MSDN ‘&lt;a href="http://msdn2.microsoft.com/en-us/library/bb902828%28SQL.100%29.aspx" class="" mce_href="http://msdn2.microsoft.com/en-us/library/bb902828(SQL.100).aspx"&gt;How to&lt;/a&gt;’ document.&lt;/p&gt;
&lt;p&gt;As you can see, you have the control to decide what goes when. I am sure your scenario might have some QoS requirements or load balancing needs that makes you come with more creative ideas to implement your batching\throttling logic. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.syncguru.com/projects/SyncServicesDemoBatching.aspx" class="" mce_href="http://www.syncguru.com/projects/SyncServicesDemoBatching.aspx"&gt;&lt;b&gt;Download Demo Project&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;&lt;p mce_keep="true"&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma; font-size: 13px;"&gt;&lt;span class="Apple-style-span" style="word-spacing: 0px; font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 13px; line-height: normal; text-transform: none; color: rgb(0, 0, 0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2;"&gt;Update: Just to let you know, I left Microsoft to start a new company,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/" class="" mce_href="http://www.raveable.com" style="color: rgb(0, 101, 226);"&gt;Raveable Hotel Reviews&lt;/a&gt;&lt;/b&gt;.&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;See Examples:&amp;nbsp;&lt;b&gt;&lt;a href="http://www.raveable.com/sc/myrtle-beach/romantic-hotels-in-myrtle-beach/l6180c2" mce_href="http://www.raveable.com/sc/myrtle-beach/romantic-hotels-in-myrtle-beach/l6180c2" style="color: rgb(0, 101, 226);"&gt;Romantic Hotels in Myrtle Beach&lt;/a&gt;&lt;/b&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/wa/seattle/top-10-hotels-in-seattle/l7344c3" mce_href="http://www.raveable.com/wa/seattle/top-10-hotels-in-seattle/l7344c3" style="color: rgb(0, 101, 226);"&gt;Top 10 Hotels in Seattle&lt;/a&gt;&lt;/b&gt;,&lt;a href="http://www.raveable.com/fl/miami/kid-friendly-hotels-in-miami/l1644c16" title="kid friendly hotels in miami" mce_href="http://www.raveable.com/fl/miami/kid-friendly-hotels-in-miami/l1644c16" style="color: rgb(0, 101, 226);"&gt;&lt;b&gt;Kid Friendly Hotels in Miam&lt;/b&gt;i&lt;/a&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/ca/san-francisco/best-hotels-in-san-francisco/l717c1" title="best hotels in san francisco" mce_href="http://www.raveable.com/ca/san-francisco/best-hotels-in-san-francisco/l717c1" style="color: rgb(0, 101, 226);"&gt;Best Hotels in San Francisco&lt;/a&gt;&lt;/b&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px;"&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/hotels-with-jacuzzi" title="hotels with jacuzzi" mce_href="http://www.raveable.com/hotels-with-jacuzzi" style="color: rgb(0, 101, 226);"&gt;Hotels with in-room jacuzzi&lt;/a&gt;&lt;/b&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;and&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.raveable.com/il/chicago/best-hotels-in-chicago/l2156c1" title="best hotels in chicago" mce_href="http://www.raveable.com/il/chicago/best-hotels-in-chicago/l2156c1" style="color: rgb(0, 101, 226);"&gt;&lt;b&gt;Best Hotels in Chicago&lt;/b&gt;&lt;/a&gt;&lt;span class="Apple-converted-space"&gt;. Your feedback is welcome on&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://twitter.com/raveable" mce_href="http://twitter.com/raveable" style="color: rgb(0, 101, 226);"&gt;twitter.com/raveable&lt;/a&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma; font-size: 13px;"&gt;&lt;a href="http://blog.raveable.com/" title="raveable blog" mce_href="http://blog.raveable.com" style="color: rgb(0, 101, 226);"&gt;raveable blog&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p mce_keep="true"&gt;I am not actively blogging about Sync Technologies. Please see&amp;nbsp;&lt;a href="http://blogs.msdn.com/sync/" class="" mce_href="http://blogs.msdn.com/sync/" style="color: rgb(0, 101, 226);"&gt;Sync Team Blog&lt;/a&gt;&amp;nbsp;for more updated content.&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6682633" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/synchronizer/archive/tags/demos/default.aspx">demos</category></item><item><title>Updates, updates, updates …</title><link>http://blogs.msdn.com/synchronizer/archive/2007/08/18/updates-updates-updates.aspx</link><pubDate>Sat, 18 Aug 2007 02:16:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4437924</guid><dc:creator>Rafik</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/synchronizer/comments/4437924.aspx</comments><wfw:commentRss>http://blogs.msdn.com/synchronizer/commentrss.aspx?PostID=4437924</wfw:commentRss><description>&lt;p&gt;Sync services is evolved pretty rapidly and taken all my time as a result. But in the last few days I got a chance to update the &lt;a href="http://www.syncguru.com/Projects.aspx" class="" mce_href="http://www.syncguru.com/Projects.aspx"&gt;demos&lt;/a&gt; to work against the &lt;a href="http://blogs.msdn.com/synchronizer/archive/2007/07/31/sync-services-hit-beta-2-0-milestone.aspx" class="" mce_href="http://blogs.msdn.com/synchronizer/archive/2007/07/31/sync-services-hit-beta-2-0-milestone.aspx"&gt;beta 2 runtime&lt;/a&gt;. The changes are not many but are important to understand. Here is a rundown of what I had to change in the code:&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Namespace Changes:&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Added namespace (Microsoft.Synchronization) to host the most basic type that are common to upper layers&lt;/li&gt;
&lt;li&gt;Change the name of Microsoft.Synchronization.Data.Client to Microsoft.Synchronization.Data.SqlServerCe&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;br&gt;&lt;b&gt;SyncAgent Changes:&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Added Configuration property to host SyncTable and SyncParameter collections&lt;/li&gt;
&lt;li&gt;Rename ClientSyncProvider and ServerSyncProvider properties to LocalProvider and RemoteProvider, respectively.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;ServerProvider Changes:&lt;/b&gt;&lt;br&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The sync commands on the provider interface (SelectNewAnchorCommand and SelectClientIdCommand) require output parameters instead of return values. This is need for extensibility as you will see with batching.&lt;/li&gt;
&lt;li&gt;Added ServerSyncProviderProxy type to save you from writing code on the client for n-tier scenario. The proxy will accept a web reference and will take care of loading the correct methods for you.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;br&gt;Well, that’s really not everything. There are few tweaks and bug fixes here and there. The best thing is to give it a try and share your experience with me and others through the &lt;a href="http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=1225&amp;amp;SiteID=1" class="" mce_href="http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=1225&amp;amp;SiteID=1"&gt;forums&lt;/a&gt;. You are really helping us make the runtime rocks!&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma; font-size: 13px;"&gt;Update: Just to let you know, I left Microsoft to start a new company,&amp;nbsp;&lt;b&gt;&lt;a href="http://www.raveable.com/" class="" mce_href="http://www.raveable.com" style="color: rgb(0, 101, 226);"&gt;Raveable Hotel Reviews.&lt;/a&gt;&lt;/b&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;See examples:&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/ny/new-york-city/romantic-hotels-in-nyc/l5039c2" title="romantic hotels in nyc" mce_href="http://www.raveable.com/ny/new-york-city/romantic-hotels-in-nyc/l5039c2" style="color: rgb(0, 101, 226);"&gt;Romantic Hotels in NYC&lt;/a&gt;&lt;/b&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/wa/seattle/best-hotels-in-seattle/l7344c1" mce_href="http://www.raveable.com/wa/seattle/best-hotels-in-seattle/l7344c1" style="color: rgb(0, 101, 226);"&gt;Best Hotels in Seattle&lt;/a&gt;&lt;/b&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/sc/myrtle-beach/top-10-hotels-in-myrtle-beach/l6180c3" title="top 10 hotels in myrtle beach" mce_href="http://www.raveable.com/sc/myrtle-beach/top-10-hotels-in-myrtle-beach/l6180c3" style="color: rgb(0, 101, 226);"&gt;Top 10 Hotels in Myrtle Beach&lt;/a&gt;&lt;/b&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/il/chicago/kid-friendly-hotels-in-chicago/l2156c16" title="kid friendly hotels in chicago" mce_href="http://www.raveable.com/il/chicago/kid-friendly-hotels-in-chicago/l2156c16" style="color: rgb(0, 101, 226);"&gt;Kid Friendly Hotels in Chicago&lt;/a&gt;&lt;/b&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px; font-weight: bold;"&gt;&lt;a href="http://www.raveable.com/hotels-with-jacuzzi" title="hotels with jacuzzi" mce_href="http://www.raveable.com/hotels-with-jacuzzi" style="color: rgb(0, 101, 226);"&gt;Hotels with in-room jacuzzi&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;and&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.raveable.com/fl/miami/best-hotels-in-miami/l1644c1" title="best hotels in miami" mce_href="http://www.raveable.com/fl/miami/best-hotels-in-miami/l1644c1" style="color: rgb(0, 101, 226);"&gt;&lt;b&gt;Best Hotels in Miami&lt;/b&gt;&lt;/a&gt;. Your feedback is welcome on&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://twitter.com/raveable" mce_href="http://twitter.com/raveable" style="color: rgb(0, 101, 226);"&gt;twitter.com/raveable&lt;/a&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma; font-size: 13px;"&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://blog.raveable.com/" title="raveable blog" mce_href="http://blog.raveable.com" style="color: rgb(0, 101, 226);"&gt;raveable blog&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;br&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4437924" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/synchronizer/archive/tags/demos/default.aspx">demos</category></item><item><title>Demo VII: Tombstone Cleanup and Detecting Stale Offline Clients</title><link>http://blogs.msdn.com/synchronizer/archive/2007/05/28/demo-vii-tombstone-cleanup-and-detecting-stale-offline-clients.aspx</link><pubDate>Mon, 28 May 2007 19:15:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2947961</guid><dc:creator>Rafik</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/synchronizer/comments/2947961.aspx</comments><wfw:commentRss>http://blogs.msdn.com/synchronizer/commentrss.aspx?PostID=2947961</wfw:commentRss><description>&lt;p&gt;Ready for a new offline application demo? This one is really cool. In this demo I tried to show off one important feature of the framework design and how to use it to elegantly solve one&amp;nbsp;common issue with synchronization systems. So let’s first talk&amp;nbsp;about the problem we trying to solve.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Tombstone Cleanup&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Recall that we needed to track changes on the server database and the way we do that is by adding extra tracking columns along with triggers. This suffices for tracking inserts and updates. For deletes, we typically store deleted row (or its PK only) in a separate table, we call it “tombstone table”. Now as deletes accumulate, the size of the tombstone table grows and consumes disk space. This is a problem.&amp;nbsp;Tombstones are deletes after all and keeping them or even metadata about them is a growing headache that needs to be addressed. That said, the solution is to cleanup older tombstones based on some aging criteria, for example, tombstones&amp;nbsp;more than a month&amp;nbsp;old must be cleanup. This is all good, but what about sync clients that have not synchronized in more than a month and now are coming back to synchronize. This is a problem and a serious one too. You don’t&amp;nbsp;want a client with stale content synchronizing with the server who has forgotten some metadata that is needed for this client. The solution for this problem is to detect and prevent stale clients from synchronizing and in some way tell them to reinitialize their local store.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;b&gt;Identifying Stale Clients&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Synchronization service architecture is designed around opaque sync anchor. The runtime does not ask what it is or what it has inside, it just carries it from the server to the client and stores it at the client&amp;nbsp;database for the next sync. The server side developer has all the rights to define what the anchor looks like. After all, the server side commands are the ones that make use of the anchor to enumerate changes and detect conflicts. With that in mind, I thought about recording the last datetime value when a given client synchronizes and store it in the anchor. This way the server remains stateless. When the client synchronizes again, I wrote code to desterilize the anchor and grab the datetime of the last sync. If the client has not synchronized in the last n days, I fire exception and reject client sync request.&lt;/p&gt;
&lt;p&gt;The opaque anchor model is an interesting feature of the framework and one that could have a lot of applications if your scenarios. The idea is that the client store can be a good place for state information leaving the server focusing on performance and scaling business instead of house keeping.&lt;/p&gt;
&lt;p&gt;Take a look at the &lt;a href="http://www.syncguru.com/projects/SyncServicesDemoTombstoneCleanup.aspx" class="" mce_href="http://www.syncguru.com/projects/SyncServicesDemoTombstoneCleanup.aspx"&gt;demo&lt;/a&gt; and let &lt;a href="http://www.syncguru.com/Aboutme.aspx" class="" mce_href="http://www.syncguru.com/Aboutme.aspx"&gt;me&lt;/a&gt; know what you think.&lt;/p&gt;
&lt;p mce_keep="true"&gt;&amp;nbsp;&lt;/p&gt;&lt;p mce_keep="true"&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma; font-size: 13px;"&gt;&lt;span class="Apple-style-span" style="word-spacing: 0px; font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 13px; line-height: normal; text-transform: none; color: rgb(0, 0, 0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2;"&gt;Update: Just to let you know, I left Microsoft to start a new company,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/" class="" mce_href="http://www.raveable.com" style="color: rgb(0, 101, 226);"&gt;Raveable Hotel Reviews&lt;/a&gt;&lt;/b&gt;.&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;See Examples:&amp;nbsp;&lt;b&gt;&lt;a href="http://www.raveable.com/sc/myrtle-beach/romantic-hotels-in-myrtle-beach/l6180c2" mce_href="http://www.raveable.com/sc/myrtle-beach/romantic-hotels-in-myrtle-beach/l6180c2" style="color: rgb(0, 101, 226);"&gt;Romantic Hotels in Myrtle Beach&lt;/a&gt;&lt;/b&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/wa/seattle/top-10-hotels-in-seattle/l7344c3" mce_href="http://www.raveable.com/wa/seattle/top-10-hotels-in-seattle/l7344c3" style="color: rgb(0, 101, 226);"&gt;Top 10 Hotels in Seattle&lt;/a&gt;&lt;/b&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.raveable.com/fl/miami/5-star-hotels-in-miami/l1644c15" mce_href="http://www.raveable.com/fl/miami/5-star-hotels-in-miami/l1644c15" style="color: rgb(0, 101, 226);"&gt;&lt;b&gt;5 Star Hotels in Miam&lt;/b&gt;i&lt;/a&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px; font-weight: bold;"&gt;&lt;a href="http://www.raveable.com/hotels-with-jacuzzi" title="hotels with jacuzzi" mce_href="http://www.raveable.com/hotels-with-jacuzzi" style="color: rgb(0, 101, 226);"&gt;Hotels with in-room jacuzzi&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/ca/anaheim/kid-friendly-hotels-in-anaheim/l751c16" title="family friendly hotels in anaheim" mce_href="http://www.raveable.com/ca/anaheim/kid-friendly-hotels-in-anaheim/l751c16" style="color: rgb(0, 101, 226);"&gt;Family Friendly hotels in Anaheim&lt;/a&gt;&lt;/b&gt;and&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/fl/fort-lauderdale/best-hotels-in-fort-lauderdale/l1545c1" title="best hotels in fort lauderdale" mce_href="http://www.raveable.com/fl/fort-lauderdale/best-hotels-in-fort-lauderdale/l1545c1" style="color: rgb(0, 101, 226);"&gt;Best Hotels in Fort Lauderdale&lt;/a&gt;&lt;/b&gt;&lt;span class="Apple-converted-space"&gt;. Your feedback is welcome on&lt;a href="http://twitter.com/raveable" mce_href="http://twitter.com/raveable" style="color: rgb(0, 101, 226);"&gt;twitter.com/raveable&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma; font-size: 13px;"&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://blog.raveable.com/" title="raveable blog" mce_href="http://blog.raveable.com" style="color: rgb(0, 101, 226);"&gt;raveable blog&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;br&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2947961" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/synchronizer/archive/tags/demos/default.aspx">demos</category></item><item><title>Sync Services Demos Refresh</title><link>http://blogs.msdn.com/synchronizer/archive/2007/05/17/sync-services-demos-refresh.aspx</link><pubDate>Thu, 17 May 2007 04:01:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2684185</guid><dc:creator>Rafik</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/synchronizer/comments/2684185.aspx</comments><wfw:commentRss>http://blogs.msdn.com/synchronizer/commentrss.aspx?PostID=2684185</wfw:commentRss><description>&lt;p&gt;The annoying comilation errors that you see when trying to build OfflineAppDemo projects with beta 1 runtime are now gone. Most of these errors were just cleanup of unused constructs we had in the early CTP release. Here is a quick refresher of the offline app demos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.syncguru.com/projects/SyncServicesDemoBuilder.aspx" class="" mce_href="http://www.syncguru.com/projects/SyncServicesDemoBuilder.aspx"&gt;Demo I: Offline Application - SyncAdapterBuilder&lt;/a&gt; shows you how to use SyncAdapterBuilder to get started quickly&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.syncguru.com/projects/SyncServicesDemoTSQL+SProcs.aspx" class="" mce_href="http://www.syncguru.com/projects/SyncServicesDemoTSQL+SProcs.aspx"&gt;Demo II: Offline Application - TSQL+SProcs&lt;/a&gt; shows you how to author SyncAdapter manually using TSQL statements and stored procedures&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.syncguru.com/projects/SyncServicesDemoWebService.aspx" class="" mce_href="http://www.syncguru.com/projects/SyncServicesDemoWebService.aspx"&gt;Demo III: Offline Application - WebService&lt;/a&gt; shows you how to setup N-Tier using web services&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.syncguru.com/projects/SyncServicesDemoConflictHandling.aspx" class="" mce_href="http://www.syncguru.com/projects/SyncServicesDemoConflictHandling.aspx"&gt;Demo IV: Offline Application - Conflict Handling&lt;/a&gt; shows you how to go about conflict detection and resolution&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.syncguru.com/projects/SyncServicesDemoOracle.aspx" class="" mce_href="http://www.syncguru.com/projects/SyncServicesDemoOracle.aspx"&gt;Demo V: Offline Application - Oracle Backend&lt;/a&gt; shows you how to use sync services against Oracle database&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.syncguru.com/projects/SyncServicesDemoDecoupledTracking.aspx" class="" mce_href="http://www.syncguru.com/projects/SyncServicesDemoDecoupledTracking.aspx"&gt;Demo VI: Offline Application - Decoupled Change Tracking&lt;/a&gt; shows you how to track changes without changing the schema of the base table by using a separate tracking table &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma; font-size: 13px;"&gt;&lt;span class="Apple-style-span" style="word-spacing: 0px; font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 13px; line-height: normal; text-transform: none; color: rgb(0, 0, 0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2;"&gt;Update: Just to let you know, I left Microsoft to start a new company,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/" title="raveable hotel reviews" mce_href="http://www.raveable.com" style="color: rgb(0, 101, 226);"&gt;Raveable Hotel Reviews.&lt;/a&gt;&lt;/b&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;See Examples:&amp;nbsp;&lt;b&gt;&lt;a href="http://www.raveable.com/sc/myrtle-beach/romantic-hotels-in-myrtle-beach/l6180c2" mce_href="http://www.raveable.com/sc/myrtle-beach/romantic-hotels-in-myrtle-beach/l6180c2" style="color: rgb(0, 101, 226);"&gt;Romantic Hotels in Myrtle Beach&lt;/a&gt;&lt;/b&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/wa/seattle/top-10-hotels-in-seattle/l7344c3" mce_href="http://www.raveable.com/wa/seattle/top-10-hotels-in-seattle/l7344c3" style="color: rgb(0, 101, 226);"&gt;Top 10 Hotels in Seattle&lt;/a&gt;&lt;/b&gt;,&lt;a href="http://www.raveable.com/fl/miami/best-hotels-in-miami/l1644c1" title="best hotels in miami" mce_href="http://www.raveable.com/fl/miami/best-hotels-in-miami/l1644c1" style="color: rgb(0, 101, 226);"&gt;&lt;b&gt;Best Hotels in Miam&lt;/b&gt;i&lt;/a&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/ca/san-francisco/best-hotels-in-san-francisco/l717c1" title="best hotels in san francisco" mce_href="http://www.raveable.com/ca/san-francisco/best-hotels-in-san-francisco/l717c1" style="color: rgb(0, 101, 226);"&gt;Best Hotels in San Francisco&lt;/a&gt;&lt;/b&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/hotels-with-jacuzzi" title="hotels with jacuzzi" mce_href="http://www.raveable.com/hotels-with-jacuzzi" style="color: rgb(0, 101, 226);"&gt;Hotels with in-room jacuzzi&lt;/a&gt;&lt;/b&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;and&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/ca/los-angeles/5-star-hotels-in-los-angeles/l519c15" title="5 star hotels in los angeles" mce_href="http://www.raveable.com/ca/los-angeles/5-star-hotels-in-los-angeles/l519c15" style="color: rgb(0, 101, 226);"&gt;5 Star Hotels in Los Angeles&lt;/a&gt;&lt;/b&gt;. Your feedback is welcome on&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://twitter.com/raveable" mce_href="http://twitter.com/raveable" style="color: rgb(0, 101, 226);"&gt;twitter.com/raveable&lt;/a&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://blog.raveable.com/" title="raveable hotel reviews blog" mce_href="http://blog.raveable.com" style="color: rgb(0, 101, 226);"&gt;raveable blog&lt;/a&gt;.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;br&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2684185" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/synchronizer/archive/tags/demos/default.aspx">demos</category></item><item><title>Demo VI: Decoupling of Change Tracking Metadata</title><link>http://blogs.msdn.com/synchronizer/archive/2007/03/29/demo-vi-decoupling-of-change-tracking-metadata.aspx</link><pubDate>Thu, 29 Mar 2007 20:03:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1989539</guid><dc:creator>Rafik</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/synchronizer/comments/1989539.aspx</comments><wfw:commentRss>http://blogs.msdn.com/synchronizer/commentrss.aspx?PostID=1989539</wfw:commentRss><description>&lt;p&gt;New demo for sync lovers! This one is interesting though as it is an attempt to address a critical customer satisifaction issue. As you know, change tracking is the process of maintaing information about changes to data rows such that incremetal changes since the last sync run can be easily collected. Until now the tracking techqniue that I used in pervious demos was to add extra columns to the data table or in other words couples the data with the tracking metadata. Well, that’s one of those things that makes customers unhappy. This is understandable since a lot of investment were made to build the schema and normalize it for optimal functionality and performance. Now adding few columns to each table just to enable offline experience seems like a high price that many customers are not willing to pay. Another valid point is what if the offline scenario is no longer needed, will the system continue to have these columns or we need yet another schema change to take them off?! Clearly justifiable concerns here, don’t you agree?&lt;/p&gt;
&lt;p&gt;The good news though is that the building a decoupled change tracking layer is not a big deal. In the decoupled model, the base table schema remains intact. As the demo shows, three triggers (insert, update, and delete) and separate tracking table are enough to build equivelant change tacking model. Although, the sync commands need to change since it needs to grab corresponding tracking infromation by joining the base table with the tracking table, the changes are simple and easy to understand. &lt;/p&gt;
&lt;p&gt;With decoupled tracking layer, the schema remains the same and the tracking table and triggers can be taken out when the sync is no longer required. This felixibility is built in the sync framework due to its very open architecture. &lt;/p&gt;
&lt;p&gt;Check out the &lt;a href="http://www.syncguru.com/projects/SyncServicesDemoDecoupledTracking.aspx" class="" mce_href="http://www.syncguru.com/projects/SyncServicesDemoDecoupledTracking.aspx"&gt;demo&lt;/a&gt; and &lt;a href="http://www.syncguru.com/Aboutme.aspx" class="" mce_href="http://www.syncguru.com/Aboutme.aspx"&gt;email&lt;/a&gt; me with your feedback. Last but not least, keep an eye on the sync services &lt;a href="http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=1225&amp;amp;SiteID=1" class="" mce_href="http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=1225&amp;amp;SiteID=1"&gt;forum&lt;/a&gt; for intresting converstation. I encourage you to post your impressions as well.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma; font-size: 13px;"&gt;&lt;span class="Apple-style-span" style="word-spacing: 0px; font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 13px; line-height: normal; text-transform: none; color: rgb(0, 0, 0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2;"&gt;Update: Just to let you know, I left Microsoft to start a new company,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/" title="raveable hotel reviews" mce_href="http://www.raveable.com" style="color: rgb(0, 101, 226);"&gt;Raveable Hotel Reviews.&lt;/a&gt;&lt;/b&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;See Examples:&amp;nbsp;&lt;b&gt;&lt;a href="http://www.raveable.com/sc/myrtle-beach/romantic-hotels-in-myrtle-beach/l6180c2" mce_href="http://www.raveable.com/sc/myrtle-beach/romantic-hotels-in-myrtle-beach/l6180c2" style="color: rgb(0, 101, 226);"&gt;Romantic Hotels in Myrtle Beach&lt;/a&gt;&lt;/b&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/wa/seattle/top-10-hotels-in-seattle/l7344c3" mce_href="http://www.raveable.com/wa/seattle/top-10-hotels-in-seattle/l7344c3" style="color: rgb(0, 101, 226);"&gt;Top 10 Hotels in Seattle&lt;/a&gt;&lt;/b&gt;,&lt;a href="http://www.raveable.com/fl/miami/best-hotels-in-miami/l1644c1" title="best hotels in miami" mce_href="http://www.raveable.com/fl/miami/best-hotels-in-miami/l1644c1" style="color: rgb(0, 101, 226);"&gt;&lt;b&gt;Best Hotels in Miam&lt;/b&gt;i&lt;/a&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/ca/san-francisco/best-hotels-in-san-francisco/l717c1" title="best hotels in san francisco" mce_href="http://www.raveable.com/ca/san-francisco/best-hotels-in-san-francisco/l717c1" style="color: rgb(0, 101, 226);"&gt;Best Hotels in San Francisco&lt;/a&gt;&lt;/b&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/hotels-with-jacuzzi" title="hotels with jacuzzi" mce_href="http://www.raveable.com/hotels-with-jacuzzi" style="color: rgb(0, 101, 226);"&gt;Hotels with in-room jacuzzi&lt;/a&gt;&lt;/b&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;and&lt;span class="Apple-converted-space"&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/ca/los-angeles/best-hotels-in-los-angeles/l519c1" title="best hotels in los angeles" mce_href="http://www.raveable.com/ca/los-angeles/best-hotels-in-los-angeles/l519c1" style="color: rgb(0, 101, 226);"&gt;Best Hotels in Los Angeles&lt;/a&gt;&lt;/b&gt;. Your feedback is welcome on&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://twitter.com/raveable" mce_href="http://twitter.com/raveable" style="color: rgb(0, 101, 226);"&gt;twitter.com/raveable&lt;/a&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://blog.raveable.com/" title="raveable hotel reviews blog" mce_href="http://blog.raveable.com" style="color: rgb(0, 101, 226);"&gt;raveable blog&lt;/a&gt;.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;br&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1989539" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/synchronizer/archive/tags/demos/default.aspx">demos</category></item><item><title>Demo V: OfflineApplication – Oracle Backend</title><link>http://blogs.msdn.com/synchronizer/archive/2007/03/09/demo-v-offlineapplication-oracle-backend.aspx</link><pubDate>Fri, 09 Mar 2007 19:38:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1845806</guid><dc:creator>Rafik</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/synchronizer/comments/1845806.aspx</comments><wfw:commentRss>http://blogs.msdn.com/synchronizer/commentrss.aspx?PostID=1845806</wfw:commentRss><description>&lt;p&gt;One of the design goals of Sync Services framework is to enable heterogeneous database in the backend. That explains the open design of the DbServerSyncProvider class. If you haven’t noticed already all the commands supplied to the provider and SyncAdapters are or type DbCommand which means you can pass any of ADO.NET command type (SqlCommand, OracleCommand, OdbcCommand, OleDbCommand and any vendor implementation too).&lt;/p&gt;
&lt;p&gt;To show you this in action, I wrote&amp;nbsp;a simple demo application. Unlike previous demos, I am only showing download only scenario for one table which is 'orders'. However, all the features and techniques demonstrated in previous demos against SQL Server as backend can be easily implemented with Oracle as backend. I assume you have an oracle database somewhere to test against. &lt;/p&gt;
&lt;p&gt;One important take away&amp;nbsp;from this demo is the need tell the SqlCe database on the client how to map Oracle specific data types to those of SqlCe. You will also notice that I did not add triggers nor I did add as many metadata columns as in previous demos. That’s because I am downloading changes only and not uploading anything to the server. &lt;/p&gt;
&lt;p&gt;I’ve a dedicated &lt;a href="http://www.syncguru.com/projects/SyncServicesDemoOracle.aspx" class="" mce_href="http://www.syncguru.com/projects/SyncServicesDemoOracle.aspx"&gt;page&lt;/a&gt; for this demo on my &lt;a href="http://www.syncguru.com" class="" mce_href="http://www.syncguru.com"&gt;website&lt;/a&gt;. There you can download the demo project and experiment with it.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Feedback&lt;/b&gt;: Visit &lt;a href="http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=1225&amp;amp;SiteID=1" class="" mce_href="http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=1225&amp;amp;SiteID=1"&gt;Sync Services Forum&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma; font-size: 13px;"&gt;Update: Just to let you know, I left Microsoft to start a new company,&amp;nbsp;&lt;b&gt;&lt;a href="http://www.raveable.com/" class="" mce_href="http://www.raveable.com" style="color: rgb(0, 101, 226);"&gt;Raveable Hotel Reviews.&lt;/a&gt;&lt;/b&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;See examples:&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/ny/new-york-city/romantic-hotels-in-nyc/l5039c2" title="romantic hotels in nyc" mce_href="http://www.raveable.com/ny/new-york-city/romantic-hotels-in-nyc/l5039c2" style="color: rgb(0, 101, 226);"&gt;Romantic Hotels in NYC&lt;/a&gt;&lt;/b&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/wa/seattle/best-hotels-in-seattle/l7344c1" mce_href="http://www.raveable.com/wa/seattle/best-hotels-in-seattle/l7344c1" style="color: rgb(0, 101, 226);"&gt;Best Hotels in Seattle&lt;/a&gt;&lt;/b&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/sc/myrtle-beach/top-10-hotels-in-myrtle-beach/l6180c3" title="top 10 hotels in myrtle beach" mce_href="http://www.raveable.com/sc/myrtle-beach/top-10-hotels-in-myrtle-beach/l6180c3" style="color: rgb(0, 101, 226);"&gt;Top 10 Hotels in Myrtle Beach&lt;/a&gt;&lt;/b&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/il/chicago/kid-friendly-hotels-in-chicago/l2156c16" title="kid friendly hotels in chicago" mce_href="http://www.raveable.com/il/chicago/kid-friendly-hotels-in-chicago/l2156c16" style="color: rgb(0, 101, 226);"&gt;Kid Friendly Hotels in Chicago&lt;/a&gt;&lt;/b&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px; font-weight: bold;"&gt;&lt;a href="http://www.raveable.com/hotels-with-jacuzzi" title="hotels with jacuzzi" mce_href="http://www.raveable.com/hotels-with-jacuzzi" style="color: rgb(0, 101, 226);"&gt;Hotels with in-room jacuzzi&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;and&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.raveable.com/fl/miami/best-hotels-in-miami/l1644c1" title="best hotels in miami" mce_href="http://www.raveable.com/fl/miami/best-hotels-in-miami/l1644c1" style="color: rgb(0, 101, 226);"&gt;&lt;b&gt;Best Hotels in Miami&lt;/b&gt;&lt;/a&gt;. Your feedback is welcome on&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://twitter.com/raveable" mce_href="http://twitter.com/raveable" style="color: rgb(0, 101, 226);"&gt;twitter.com/raveable&lt;/a&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma; font-size: 13px;"&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://blog.raveable.com/" title="raveable blog" mce_href="http://blog.raveable.com" style="color: rgb(0, 101, 226);"&gt;raveable blog&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;br&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1845806" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/synchronizer/archive/tags/demos/default.aspx">demos</category></item><item><title>Sync Demos Write Up</title><link>http://blogs.msdn.com/synchronizer/archive/2007/03/01/sync-demos-write-up.aspx</link><pubDate>Fri, 02 Mar 2007 00:13:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1781551</guid><dc:creator>Rafik</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/synchronizer/comments/1781551.aspx</comments><wfw:commentRss>http://blogs.msdn.com/synchronizer/commentrss.aspx?PostID=1781551</wfw:commentRss><description>&lt;p&gt;Now that you have seen the sync services &lt;a href="http://blogs.msdn.com/synchronizer/archive/tags/Sync+Services+Demos/default.aspx" class="" mce_href="http://blogs.msdn.com/synchronizer/archive/tags/Sync+Services+Demos/default.aspx"&gt;demos&lt;/a&gt; and hopefully enjoyed them, it is time to add some documentation on the goal of each demo and what part of the technology it highlighted along with some code annotation for the areas of interest. To do that, I dedicated a separate page for each demo on my &lt;a href="http://www.syncguru.com/Default.aspx" class="" mce_href="http://www.syncguru.com/Default.aspx"&gt;web site&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;To jump quickly to the demo that interests you the most, use the following links:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.syncguru.com/projects/SyncServicesDemoBuilder.aspx" class="" mce_href="http://www.syncguru.com/projects/SyncServicesDemoBuilder.aspx"&gt;Demo I: Offline Application - SyncAdapterBuilder&lt;/a&gt; shows you how to use SyncAdapterBuilder in get started quickly &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.syncguru.com/projects/SyncServicesDemoTSQL+SProcs.aspx" class="" mce_href="http://www.syncguru.com/projects/SyncServicesDemoTSQL+SProcs.aspx"&gt;Demo II: Offline Application - TSQL+SProcs&lt;/a&gt; shows you how to author SyncAdapter manually using TSQL statements and stored procedures&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.syncguru.com/projects/SyncServicesDemoWebService.aspx" class="" mce_href="http://www.syncguru.com/projects/SyncServicesDemoWebService.aspx"&gt;Demo III: Offline Application - WebService&lt;/a&gt; shows you how to implement sync in&amp;nbsp;n-tier setup&amp;nbsp;using web services&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.syncguru.com/projects/SyncServicesDemoConflictHandling.aspx" class="" mce_href="http://www.syncguru.com/projects/SyncServicesDemoConflictHandling.aspx"&gt;Demo IV: Offline Application - ConflictHandling&lt;/a&gt; shows you how to go about conflict detection and resolution&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Your feedback is always appreciated!&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma; font-size: 13px;"&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma; font-size: 13px;"&gt;Update: Just to let you know, I left Microsoft to start a new company,&amp;nbsp;&lt;b&gt;&lt;a href="http://www.raveable.com/" class="" mce_href="http://www.raveable.com" style="color: rgb(0, 101, 226);"&gt;Raveable Hotel Reviews.&lt;/a&gt;&lt;/b&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;See examples:&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/sc/myrtle-beach/romantic-hotels-in-myrtle-beach/l6180c2" mce_href="http://www.raveable.com/sc/myrtle-beach/romantic-hotels-in-myrtle-beach/l6180c2" style="color: rgb(0, 101, 226);"&gt;Romantic Hotels in Myrtle Beach&lt;/a&gt;&lt;/b&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/wa/seattle/best-hotels-in-seattle/l7344c1" mce_href="http://www.raveable.com/wa/seattle/best-hotels-in-seattle/l7344c1" style="color: rgb(0, 101, 226);"&gt;Best Hotels in Seattle&lt;/a&gt;&lt;/b&gt;,&lt;b&gt;&lt;a href="http://www.raveable.com/fl/miami/top-10-hotels-in-miami/l1644c3" mce_href="http://www.raveable.com/fl/miami/top-10-hotels-in-miami/l1644c3" style="color: rgb(0, 101, 226);"&gt;Top 10 Hotels in Miami&lt;/a&gt;&lt;/b&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/ca/san-diego/kid-friendly-hotels-in-san-diego/l568c16" title="kid friendly in san diego" mce_href="http://www.raveable.com/ca/san-diego/kid-friendly-hotels-in-san-diego/l568c16" style="color: rgb(0, 101, 226);"&gt;Kid friendly hotels in San Diego&lt;/a&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma; font-size: 13px;"&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/hotels-with-kitchen" title="hotels with kitchen or kitchenette" mce_href="http://www.raveable.com/hotels-with-kitchen" style="color: rgb(0, 101, 226);"&gt;Hotels with a kitchen or kitchenette&lt;/a&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;and&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/nv/las-vegas/5-star-hotels-in-las-vegas/l4839c15" title="5 star hotels in las vegas" mce_href="http://www.raveable.com/nv/las-vegas/5-star-hotels-in-las-vegas/l4839c15" style="color: rgb(0, 101, 226);"&gt;5 Star Hotels in Las Vegas&lt;/a&gt;&lt;/b&gt;. Your feedback is welcome on&lt;a href="http://twitter.com/raveable" mce_href="http://twitter.com/raveable" style="color: rgb(0, 101, 226);"&gt;twitter.com/raveable&lt;/a&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma; font-size: 13px;"&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://blog.raveable.com/" title="raveable blog" mce_href="http://blog.raveable.com" style="color: rgb(0, 101, 226);"&gt;raveable blog&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1781551" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/synchronizer/archive/tags/demos/default.aspx">demos</category></item><item><title>Demo IV: Offline Application – Conflict Handling</title><link>http://blogs.msdn.com/synchronizer/archive/2007/02/07/demo-iv-offline-application-conflict-handling.aspx</link><pubDate>Wed, 07 Feb 2007 03:41:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1615465</guid><dc:creator>Rafik</dc:creator><slash:comments>8</slash:comments><comments>http://blogs.msdn.com/synchronizer/comments/1615465.aspx</comments><wfw:commentRss>http://blogs.msdn.com/synchronizer/commentrss.aspx?PostID=1615465</wfw:commentRss><description>&lt;p&gt;It is about time for our offline application to deal with sync conflicts. Conflicts are fact of life in lazy synchronization environments. It is likely that your application users don’t want to deal with conflicts. Therefore you are encouraged to architect your&amp;nbsp;solution in such a way that would make conflicts&amp;nbsp;rare. However, your application is not complete without conflict handling logic. Before I go into more details, let’s define what conflict is:&lt;/p&gt;&lt;p&gt;&lt;i&gt;“A row is said to be in conflict if it was changed on two or more nodes between synchronization requests”&lt;/i&gt;&lt;/p&gt;&lt;p&gt;In two node environment, client could make a change to a row R while offline, at the same time a change is made at the server to R. When both ends sync, a conflict is detected. In n-node environment, a conflict could happen by independent changes to R on two or more clients.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;b&gt;Conflict Types&lt;/b&gt;&lt;/p&gt;&lt;p&gt;The sync framework detects four types of conflicts:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;ClientInsertServerInsert&lt;/b&gt; also known as PK Collision; occurs when both client and server insert a row with same PK&lt;/li&gt;&lt;li&gt;&lt;b&gt;ClientUpdateServerUpdate&lt;/b&gt; the most common conflict; occurs when&amp;nbsp;client and server make changes to the same row independently&lt;/li&gt;&lt;li&gt;&lt;b&gt;ClientUpdateServerDelete&lt;/b&gt; occurs when the client updates a row and the server independently deletes the same&amp;nbsp;row&lt;/li&gt;&lt;li&gt;&lt;b&gt;ClientDeleteServerUpdate&lt;/b&gt; occurs when the client deletes a row and the server independently updates the same&amp;nbsp;row&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Note: The use of “Server” term in the conflict type names&amp;nbsp;above does not necessarily mean that the changes were authored on the server. In fact, the server could be a passive node that just collects and distributes changes. However, from the synchronizing client point of view, the change appears to have happened on the server thus the naming.&lt;br&gt;&lt;br&gt;&lt;b&gt;Conflict Detection and Resolution&lt;/b&gt;&lt;/p&gt;&lt;p&gt;The sync framework fires ApplyChangeFailedEvent from both client and server sync providers when it detects a conflict. In this demo application, I registered to receive conflict events from both client and server providers. Each conflict is then presented to the user with possible conflict resolution options: &lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;u&gt;Ignore&lt;/u&gt; the conflict and continue&lt;/li&gt;&lt;li&gt;&lt;u&gt;Retry&lt;/u&gt; applying the row, without changing to the datarow the retry will fail causing the event to be raised again. The demo does not allow you to edit the datarow though.&lt;/li&gt;&lt;li&gt;&lt;u&gt;Retry with Force Write&lt;/u&gt; has a built in support in the ClientSyncProvider, on the server side, you need to add support in your sync adapter commands and the demo show an example for update-update conflict.&lt;/li&gt;&lt;li&gt;&lt;u&gt;Abort the Sync&lt;/u&gt; by throwing an exception; all changes will be rolled back and re-synced in the next sync session.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;br&gt;&lt;b&gt;SyncAdapter Conflict Commands&lt;/b&gt;&lt;/p&gt;&lt;p&gt;There are two commands that we did not explore in the previous demos:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;SelectConflictUpdatedRowsCommand&lt;/b&gt; this command finds conflicting rows in the base table. The sync runtime executes this command if insert, update or&amp;nbsp;delete command failed (i.e. returned 0 row count)&lt;/li&gt;&lt;li&gt;&lt;b&gt;SelectConflictDeletedRowsCommand &lt;/b&gt;this command finds conflicting rows in the tombstone table. The sync runtime executes this command if the conflicting row was not found in the base table. This is how ClientUpdateServerDelete conflict is detected.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br&gt;&lt;b&gt;Demo Enhancements&lt;/b&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;I’ve added few more buttons to generate random conflicts&lt;/li&gt;&lt;li&gt;Also I changed the tombstone tables to accept more than one delete for the same PK. (there were questions about that in the forum)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;b&gt;How to install OfflineAppDemo application?&lt;/b&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Fire SQL server and load demo.sql file&lt;/li&gt;&lt;li&gt;Execute the script untill the "test sample" marker&lt;/li&gt;&lt;li&gt;Load server_procs.sql file and execute it to install server procs&lt;/li&gt;&lt;li&gt;Load VS solution (OfflineAppDemo-Conflicts Project)&amp;nbsp;&lt;/li&gt;&lt;li&gt;Build the project&amp;nbsp;&lt;/li&gt;&lt;li&gt;You are ready to go&lt;br&gt;&amp;nbsp;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;b&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;b&gt;&lt;a href="http://www.syncguru.com/projects/SyncServicesDemoConflictHandling.aspx" class="" mce_href="http://www.syncguru.com/projects/SyncServicesDemoConflictHandling.aspx"&gt;&lt;font color="#0065e2"&gt;Download Now&lt;/font&gt;&lt;br&gt;&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;Feedback&lt;/b&gt;: Visit &lt;a href="http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=1225&amp;amp;SiteID=1" class="" mce_href="http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=1225&amp;amp;SiteID=1"&gt;&lt;font color="#0065e2"&gt;Sync Services Forum&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma; font-size: 13px;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Update: Just to let you know, I left Microsoft to start a new company,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/" class="" mce_href="http://www.raveable.com" style="color: rgb(0, 101, 226);"&gt;Raveable Hotel Reviews&lt;/a&gt;&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;. See examples:&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/sc/myrtle-beach/top-10-hotels-in-myrtle-beach/l6180c3" mce_href="http://www.raveable.com/sc/myrtle-beach/top-10-hotels-in-myrtle-beach/l6180c3" style="color: rgb(0, 101, 226);"&gt;Top 10 Hotels in Myrtle Beach&lt;/a&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.raveable.com/ny/new-york-city/best-hotels-in-new-york-city/l5039c1" title="best hotels in nyc" mce_href="http://www.raveable.com/ny/new-york-city/best-hotels-in-new-york-city/l5039c1" style="color: rgb(0, 101, 226);"&gt;Best Hotels in NYC&lt;/a&gt;,&lt;a href="http://www.raveable.com/wa/seattle/romantic-hotels-in-seattle/l7344c2" mce_href="http://www.raveable.com/wa/seattle/romantic-hotels-in-seattle/l7344c2" style="color: rgb(0, 101, 226);"&gt;Romantic Hotels in Seattle&lt;/a&gt;&lt;/b&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/fl/orlando/kid-friendly-hotels-in-orlando/l1653c16" title="kid friendly hotels in orlando" mce_href="http://www.raveable.com/fl/orlando/kid-friendly-hotels-in-orlando/l1653c16" style="color: rgb(0, 101, 226);"&gt;Kid Friendly Hotels in Orlando&lt;/a&gt;&lt;/b&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;and&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/ca/san-diego/top-10-hotels-in-san-diego/l568c3" title="top 10 hotels in san diego" mce_href="http://www.raveable.com/ca/san-diego/top-10-hotels-in-san-diego/l568c3" style="color: rgb(0, 101, 226);"&gt;Top 10 Hotels in San Diego&lt;/a&gt;&lt;/b&gt;. Your feedback is welcome on&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://twitter.com/raveable" mce_href="http://twitter.com/raveable" style="color: rgb(0, 101, 226);"&gt;twitter.com/raveable&lt;/a&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma; font-size: 13px;"&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://blog.raveable.com/" title="raveable blog" mce_href="http://blog.raveable.com" style="color: rgb(0, 101, 226);"&gt;raveable blog&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1615465" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/synchronizer/archive/tags/demos/default.aspx">demos</category></item><item><title>Demo III: Offline Application – WebService</title><link>http://blogs.msdn.com/synchronizer/archive/2007/01/30/demo-iii-offline-application-webservice.aspx</link><pubDate>Tue, 30 Jan 2007 03:53:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1554160</guid><dc:creator>Rafik</dc:creator><slash:comments>12</slash:comments><comments>http://blogs.msdn.com/synchronizer/comments/1554160.aspx</comments><wfw:commentRss>http://blogs.msdn.com/synchronizer/commentrss.aspx?PostID=1554160</wfw:commentRss><description>&lt;p&gt;&lt;span style="font-size: 10pt;"&gt;The N-Tier demo has finally arrived. This demo shows you how to take the server side code, basically the ServerSyncProvider along with all SyncAdapters that we build in the last demo, and expose it as a web service. On the client side, you generate a web service proxy and build a thin wrapper around it to be able to plug it into the sync agent. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt;"&gt;Unlike pervious demos, this one needs some security settings to enable the service to access SQL Server. Also the default web service proxy generated by VS won’t comile due to type definition collisions. The steps below show you how to fix all these issues to run the demo smoothly. So please follow them carefully and let me know if you&amp;nbsp;ran into&amp;nbsp;any troubles.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt;"&gt;&lt;b&gt;How to install OfflineAppDemo application?&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: 10pt;"&gt;Fire SQL server and load demo.sql file&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 10pt;"&gt;Execute the script untill the "test sample" marker&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 10pt;"&gt;load server_procs.sql file and execute it to install server procs&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 10pt;"&gt;Install SyncWebService (see steps below)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 10pt;"&gt;Load VS solution (OfflineAppDemo-WebService Project) &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 10pt;"&gt;You are ready to go&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-size: 10pt;"&gt;&lt;b&gt;How to install SyncWebService?&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: 10pt;"&gt;&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;Copy SyncWebService directory to c:\interpub\wwwroot&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 10pt;"&gt;From IIS management console, setup the SyncWebService virtual directory as web application and set &lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;Application Pool to ASP.NET 2.0&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style=""&gt;&lt;/span&gt;Give network service account read\write access to&lt;span style=""&gt;&amp;nbsp;&lt;/span&gt;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 10pt;"&gt;Add web reference to the project and give it a name SyncWebServiceProxy&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 10pt;"&gt;Edit the Reference.cs manually and add namespace Microsoft.Synchronization.Data. Also remove code for types that are already defined in &lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;Microsoft.Synchronization.Data.dll&lt;span style=""&gt;&amp;nbsp;&lt;/span&gt;as the sample reference.cs&amp;nbsp;file shows&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 10pt;"&gt;Add new login to SQL Server for Network Service and give it dbowner access to the pub database&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;b&gt;&lt;a href="http://www.syncguru.com/projects/SyncServicesDemoWebService.aspx" class="" mce_href="http://www.syncguru.com/projects/SyncServicesDemoWebService.aspx"&gt;Download Now&lt;br&gt;&lt;/a&gt;Feedback&lt;/b&gt;: Visit&amp;nbsp;&lt;a href="http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=1225&amp;amp;SiteID=1" class="" mce_href="http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=1225&amp;amp;SiteID=1"&gt;&lt;font color="#0065e2"&gt;Sync Services Forum&lt;/font&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;&lt;o:p&gt;&lt;font color="#0065e2"&gt; &lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;&lt;o:p&gt;&lt;br&gt;&lt;br&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma; font-size: 13px;"&gt;Update: Just to let you know, I left Microsoft to start a new company,&amp;nbsp;&lt;b&gt;&lt;a href="http://www.raveable.com/" class="" mce_href="http://www.raveable.com" style="color: rgb(0, 101, 226);"&gt;Raveable Hotel Reviews.&lt;/a&gt;&lt;/b&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;See examples:&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/sc/myrtle-beach/romantic-hotels-in-myrtle-beach/l6180c2" mce_href="http://www.raveable.com/sc/myrtle-beach/romantic-hotels-in-myrtle-beach/l6180c2" style="color: rgb(0, 101, 226);"&gt;Romantic Hotels in Myrtle Beach&lt;/a&gt;&lt;/b&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/wa/seattle/best-hotels-in-seattle/l7344c1" mce_href="http://www.raveable.com/wa/seattle/best-hotels-in-seattle/l7344c1" style="color: rgb(0, 101, 226);"&gt;Best Hotels in Seattle&lt;/a&gt;&lt;/b&gt;,&lt;b&gt;&lt;a href="http://www.raveable.com/fl/miami/top-10-hotels-in-miami/l1644c3" mce_href="http://www.raveable.com/fl/miami/top-10-hotels-in-miami/l1644c3" style="color: rgb(0, 101, 226);"&gt;Top 10 Hotels in Miami&lt;/a&gt;&lt;/b&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/ca/san-diego/kid-friendly-hotels-in-san-diego/l568c16" title="kid friendly in san diego" mce_href="http://www.raveable.com/ca/san-diego/kid-friendly-hotels-in-san-diego/l568c16" style="color: rgb(0, 101, 226);"&gt;Kid friendly hotels in San Diego&lt;/a&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma; font-size: 13px;"&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/hotels-with-kitchen" title="hotels with kitchen or kitchenette" mce_href="http://www.raveable.com/hotels-with-kitchen" style="color: rgb(0, 101, 226);"&gt;Hotels with a kitchen or kitchenette&lt;/a&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;and&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/nv/las-vegas/5-star-hotels-in-las-vegas/l4839c15" title="5 star hotels in las vegas" mce_href="http://www.raveable.com/nv/las-vegas/5-star-hotels-in-las-vegas/l4839c15" style="color: rgb(0, 101, 226);"&gt;5 Star Hotels in Las Vegas&lt;/a&gt;&lt;/b&gt;. Your feedback is welcome on&lt;a href="http://twitter.com/raveable" mce_href="http://twitter.com/raveable" style="color: rgb(0, 101, 226);"&gt;twitter.com/raveable&lt;/a&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma; font-size: 13px;"&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://blog.raveable.com/" title="raveable blog" mce_href="http://blog.raveable.com" style="color: rgb(0, 101, 226);"&gt;raveable blog&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1554160" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/synchronizer/archive/tags/demos/default.aspx">demos</category></item><item><title>Demo II: Offline Application – TSQL+SProc</title><link>http://blogs.msdn.com/synchronizer/archive/2007/01/28/demo-ii-offline-application-tsql-sproc.aspx</link><pubDate>Mon, 29 Jan 2007 01:47:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1548535</guid><dc:creator>Rafik</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/synchronizer/comments/1548535.aspx</comments><wfw:commentRss>http://blogs.msdn.com/synchronizer/commentrss.aspx?PostID=1548535</wfw:commentRss><description>&lt;p&gt;&lt;span style="font-size: 10pt;"&gt;In the first demo, I showed you how to quickly build an offline application by using SyncAdapterBuilder to generate db commands needed for bidirectional sync on the server side. For the client side, we did not have to do anything except defining the tables of interest and the db connection to the local SQLCE database. SQLCE 3.5 and the SyncClientProvider took care of all sync magic for us. &lt;span style=""&gt;&amp;nbsp;&lt;/span&gt;As a reminder, the SyncAgent is the orchestrator of the sync processing between ClientSyncProvider and ServerSyncProvider and where the Synchronize() method is exposed. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt;"&gt;While SyncAdapterBuilder is a pretty useful utility, it hides some sync logic that I believe is important to understand so that you can expand on the basic commands shown in theses demos and add custom logic to address your real world scenarios better. In this demo, I want to show you how to write a SyncAdapter using TSQL statement or SProcs which you will need to create on the server database. To show you both, I decided to write TSQL statements for enumerating changes and SProcs for applying changes. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt;"&gt;One key thing to take away from this demo is the new session parameters. Session Parameters are built-in parameters that you will need to write your sync commands. The value of these parameters is set by the SyncServerProvider during sync. The names of all built-in session parameters are exposed via SyncSession class. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt;"&gt;&lt;b&gt;How to install OfflineAppDemo application?&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: 10pt;"&gt;Fire SQL server management studio and load demo.sql file&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 10pt;"&gt;Execute the script until the "test sample" marker&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 10pt;"&gt;Load server_procs.sql file and execute it to install server procs&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 10pt;"&gt;Load VS solution (OfflineAppDemo-TSQL+SProc Project) &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 10pt;"&gt;Build the project &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 10pt;"&gt;You are ready to go&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-size: 10pt;"&gt;&lt;b&gt;&lt;a href="http://www.syncguru.com/projects/SyncServicesDemoTSQL+SProcs.aspx" class="" mce_href="http://www.syncguru.com/projects/SyncServicesDemoTSQL+SProcs.aspx"&gt;Download Now&lt;br&gt;&lt;/a&gt;Feedback&lt;/b&gt;: Visit&amp;nbsp;&lt;a href="http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=1225&amp;amp;SiteID=1" class="" mce_href="http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=1225&amp;amp;SiteID=1"&gt;Sync Services Forum&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;&lt;o:p&gt;&lt;a href="http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=1225&amp;amp;SiteID=1" class="" mce_href="http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=1225&amp;amp;SiteID=1"&gt; &lt;br&gt;&lt;br&gt;&lt;/a&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma; font-size: 13px;"&gt;Update: Just to let you know, I left Microsoft to start a new company,&amp;nbsp;&lt;b&gt;&lt;a href="http://www.raveable.com/" class="" mce_href="http://www.raveable.com" style="color: rgb(0, 101, 226);"&gt;Raveable Hotel Reviews.&lt;/a&gt;&lt;/b&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;See examples:&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/ny/new-york-city/romantic-hotels-in-nyc/l5039c2" title="romantic hotels in nyc" mce_href="http://www.raveable.com/ny/new-york-city/romantic-hotels-in-nyc/l5039c2" style="color: rgb(0, 101, 226);"&gt;Romantic Hotels in NYC&lt;/a&gt;&lt;/b&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/wa/seattle/best-hotels-in-seattle/l7344c1" mce_href="http://www.raveable.com/wa/seattle/best-hotels-in-seattle/l7344c1" style="color: rgb(0, 101, 226);"&gt;Best Hotels in Seattle&lt;/a&gt;&lt;/b&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/sc/myrtle-beach/top-10-hotels-in-myrtle-beach/l6180c3" title="top 10 hotels in myrtle beach" mce_href="http://www.raveable.com/sc/myrtle-beach/top-10-hotels-in-myrtle-beach/l6180c3" style="color: rgb(0, 101, 226);"&gt;Top 10 Hotels in Myrtle Beach&lt;/a&gt;&lt;/b&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/il/chicago/kid-friendly-hotels-in-chicago/l2156c16" title="kid friendly hotels in chicago" mce_href="http://www.raveable.com/il/chicago/kid-friendly-hotels-in-chicago/l2156c16" style="color: rgb(0, 101, 226);"&gt;Kid Friendly Hotels in Chicago&lt;/a&gt;&lt;/b&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px; font-weight: bold;"&gt;&lt;a href="http://www.raveable.com/hotels-with-jacuzzi" title="hotels with jacuzzi" mce_href="http://www.raveable.com/hotels-with-jacuzzi" style="color: rgb(0, 101, 226);"&gt;Hotels with in-room jacuzzi&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;and&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.raveable.com/fl/miami/best-hotels-in-miami/l1644c1" title="best hotels in miami" mce_href="http://www.raveable.com/fl/miami/best-hotels-in-miami/l1644c1" style="color: rgb(0, 101, 226);"&gt;&lt;b&gt;Best Hotels in Miami&lt;/b&gt;&lt;/a&gt;. Your feedback is welcome on&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://twitter.com/raveable" mce_href="http://twitter.com/raveable" style="color: rgb(0, 101, 226);"&gt;twitter.com/raveable&lt;/a&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma; font-size: 13px;"&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://blog.raveable.com/" title="raveable blog" mce_href="http://blog.raveable.com" style="color: rgb(0, 101, 226);"&gt;raveable blog&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1548535" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/synchronizer/archive/tags/demos/default.aspx">demos</category></item><item><title>Demo I: Offline Application – SyncAdapterBuilder</title><link>http://blogs.msdn.com/synchronizer/archive/2007/01/25/offline-application-demo-i.aspx</link><pubDate>Thu, 25 Jan 2007 22:59:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1531408</guid><dc:creator>Rafik</dc:creator><slash:comments>10</slash:comments><comments>http://blogs.msdn.com/synchronizer/comments/1531408.aspx</comments><wfw:commentRss>http://blogs.msdn.com/synchronizer/commentrss.aspx?PostID=1531408</wfw:commentRss><description>&lt;p&gt;This is the first demo application to demonstrate building offline application using Synchronization Services for ADO.NET framework. I have more demo ideas in mind and I will post more demos in the following weeks. Feel free to make any suggestions ..&lt;br&gt;&lt;br&gt;Download the CTP: &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=75FEF59F-1B5E-49BC-A21A-9EF4F34DE6FC&amp;amp;displaylang=en" class="" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=75FEF59F-1B5E-49BC-A21A-9EF4F34DE6FC&amp;amp;displaylang=en"&gt;&lt;font color="#006666"&gt;Microsoft Synchronization Services for ADO.NET CTP release&lt;/font&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Overview of the demo&lt;/b&gt;&lt;/p&gt;&lt;p&gt;The demo shows how to build offline application using Synchronization Services for ADO.NET library. In this sample, two tables (orders, order_details) are at the server database and we would like to take the content offline and make some updates to client and server content then synchronize the changes.&lt;/p&gt;&lt;p&gt;&lt;b&gt;What is demonstrated in this sample?&lt;/b&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Two-Tier sync scenario where client have direct access to server database through ADO connection object&lt;/li&gt;&lt;li&gt;Setting up the server tables for bidirectional sync&lt;/li&gt;&lt;li&gt;Using SqlSyncAdapterBuilder to create SyncAdapter for each table we want to sync&lt;/li&gt;&lt;li&gt;Using SQLCE to cache content on the client &lt;/li&gt;&lt;li&gt;Showing sync progress&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;b&gt;What is not demonstrated in this sample?&lt;/b&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;N-Tier scenrio where the client connects to middle tear and does not have access to the server DB&lt;/li&gt;&lt;li&gt;Handling Conflicts&lt;/li&gt;&lt;li&gt;Manual creation of the SyncAdapter objects&lt;/li&gt;&lt;li&gt;Creating custom schema on the server &lt;/li&gt;&lt;li&gt;Inspecting inflight DataSet (for any custom logic, auditing..etc)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;b&gt;How to install OfflineAppDemo application?&lt;/b&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Fire SQL server and load demo.sql file&lt;/li&gt;&lt;li&gt;Execute the script until the "test sample" marker&lt;/li&gt;&lt;li&gt;Load VS solution (OfflineAppDemo-Builder Project) &lt;/li&gt;&lt;li&gt;Build the project &lt;/li&gt;&lt;li&gt;You are ready to go&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;b&gt;&lt;a href="http://www.syncguru.com/projects/SyncServicesDemoBuilder.aspx" class="" mce_href="http://www.syncguru.com/projects/SyncServicesDemoBuilder.aspx"&gt;Download Sample&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma; font-size: 13px;"&gt;&lt;span class="Apple-style-span" style="word-spacing: 0px; font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 13px; line-height: normal; text-transform: none; color: rgb(0, 0, 0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2;"&gt;Update: Just to let you know, I left Microsoft to start a new company,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/" title="raveable hotel reviews" mce_href="http://www.raveable.com" style="color: rgb(0, 101, 226);"&gt;Raveable Hotel Reviews.&lt;/a&gt;&lt;/b&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;See Examples:&amp;nbsp;&lt;b&gt;&lt;a href="http://www.raveable.com/sc/myrtle-beach/romantic-hotels-in-myrtle-beach/l6180c2" mce_href="http://www.raveable.com/sc/myrtle-beach/romantic-hotels-in-myrtle-beach/l6180c2" style="color: rgb(0, 101, 226);"&gt;Romantic Hotels in Myrtle Beach&lt;/a&gt;&lt;/b&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/wa/seattle/top-10-hotels-in-seattle/l7344c3" mce_href="http://www.raveable.com/wa/seattle/top-10-hotels-in-seattle/l7344c3" style="color: rgb(0, 101, 226);"&gt;Top 10 Hotels in Seattle&lt;/a&gt;&lt;/b&gt;,&lt;a href="http://www.raveable.com/fl/miami/best-hotels-in-miami/l1644c1" title="best hotels in miami" mce_href="http://www.raveable.com/fl/miami/best-hotels-in-miami/l1644c1" style="color: rgb(0, 101, 226);"&gt;&lt;b&gt;Best Hotels in Miam&lt;/b&gt;i&lt;/a&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/ca/san-francisco/best-hotels-in-san-francisco/l717c1" title="best hotels in san francisco" mce_href="http://www.raveable.com/ca/san-francisco/best-hotels-in-san-francisco/l717c1" style="color: rgb(0, 101, 226);"&gt;Best Hotels in San Francisco&lt;/a&gt;&lt;/b&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/hotels-with-jacuzzi" title="hotels with jacuzzi" mce_href="http://www.raveable.com/hotels-with-jacuzzi" style="color: rgb(0, 101, 226);"&gt;Hotels with in-room jacuzzi&lt;/a&gt;&lt;/b&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;and&lt;span class="Apple-converted-space"&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&lt;b&gt;&lt;a href="http://www.raveable.com/ca/los-angeles/best-hotels-in-los-angeles/l519c1" title="best hotels in los angeles" mce_href="http://www.raveable.com/ca/los-angeles/best-hotels-in-los-angeles/l519c1" style="color: rgb(0, 101, 226);"&gt;Best Hotels in Los Angeles&lt;/a&gt;&lt;/b&gt;. Your feedback is welcome on&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://twitter.com/raveable" mce_href="http://twitter.com/raveable" style="color: rgb(0, 101, 226);"&gt;twitter.com/raveable&lt;/a&gt;,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://blog.raveable.com/" title="raveable hotel reviews blog" mce_href="http://blog.raveable.com" style="color: rgb(0, 101, 226);"&gt;raveable blog&lt;/a&gt;.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp; &lt;br&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1531408" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/synchronizer/archive/tags/demos/default.aspx">demos</category></item></channel></rss>