At Tech Ed US '07, and several other events I've been giving a presentation discussing how Sync Services for ADO.NET and SQL Server Compact can optimize online and enable offline scenarios. I've been hoping to do more of a write up/blogicle, but just haven't had the time. So, rather than continue to procrastinate, here's the deck I've been using.

Tech Ed US '07 DAT 325- Synchronization Options for SQL Server Compact

Tech Ed US '07 DAT 326- Microsoft SQL Server 2005 Compact Edition in Action 

A slightly newer, modified version of Sync Services without Tech Ed specifics
Optimizing Online, Enabling Offline with SQL Server Compact and Sync Services for ADO.NET

One size doesn't fit all - Logical Queuing Demo

In order to show how Sync Services may fit into an overall architecture, I've been showing this demo that I call logical queuing. As I have time, I'll write up an article explaining the concept, but here's a quick picture from the PowerPoint above.

Many developers looking to implement service queuing may take the following approach caching the operating they wish to commit on the back end. If the "service" isn't available, the developer queues the "message" in some blob, potentially MSMQ, a queued WCF channel, or something else.

In Logical Queuing, you save the raw data for the operation you wish to commit, but store it in it's original format marking it "good to go". Until you can actually send the operation, you can continue to edit it, query it, etc.

The save and send operations are split. It's the same code, but instead of the save operation creating the message which is then queued, the save operation saves the original data, and marks it "good to go". As the service becomes available, an event is raised which triggers the same code in the service queuing that would take the operational change and it then submits it to the service. It then marks the local data as sent awaiting some sort of confirmation from the server that it has been received, processed, declined, etc.

 

The point is several technologies may play together to fill the broader need of synchronizing reference data and interacting with existing or new services.

For those that haven't seen me present this, it may seem like hogwash, or overly complicated. I promise to have a screencast, and article to follow it up in the near future.

 Steve