How to Choose a Data Synchronization Technology – Offline & Collaboration
Here at Microsoft there are a number of synchronization technologies that support offline and collaboration data solutions. The key technologies include:
- Microsoft Sync Framework core components
- Microsoft Sync Framework database synchronization providers
- Merge replication
Why does Microsoft offer multiple synchronization solutions? Well, we believe it is virtually impossible to create a single solution that will fit everyone's needs. For example, IT administrators may look for more of a packaged solution that is easy to install and administer. ISVs and developers may be interested in a more embeddable and customizable solution. Ultimately, multiple synchronization solutions give you more choices at the cost of adding increased confusion. We hope this summary will help narrow down the choice for you.
The synchronization technologies can be broken down by flexibility and the amount of code required. In general, more code is required to get a greater level of synchronization flexibility.
Microsoft Sync Framework
One area of confusion we hear from customers is with Microsoft Sync Framework. I believe it can be confusing because Microsoft Sync Framework is both a product and a family of products. From the below diagram you can see that the Microsoft Sync Framework family includes a number of technologies that support offline and collaboration scenarios including:
- Database synchronization providers: Synchronization for ADO.NET-enabled data sources
- Web synchronization components: Synchronization for RSS and ATOM feeds
- File synchronization provider: Synchronization for files and folders
- Sync Framework core components: Synchronization components enabling custom provider creation
As such, a more appropriate question in relation to data synchronization is "What is the difference between the Sync Framework database synchronization providers and the Sync Framework core components"?
Database Synchronization Providers
The Sync Framework database synchronization providers were built to allow developers who were familiar with the concepts of ADO.NET to apply that knowledge to data synchronization through a very similar set of APIs to that of ADO.NET. The database synchronization providers offer the flexibility of a programming model like offline datasets and a richer synchronization feature set like that found in Merge replication. These providers also support synchronization over services, such as Windows Communication Foundation (WCF). Specifically, Sync Framework targets the following scenarios:
Offline Database Synchronization: With Sync Framework you are able to build a solution where multiple remote clients connect and synchronize to a central ADO.NET database in a Hub-and-Spoke configuration. This enables occasionally connected devices to periodically connect and synchronize changes with a central ADO.NET database server. This topology is a common solution for remote workers such as sales reps or field service workers.
Collaboration Between Databases: Sync Framework also includes Peer-to-Peer capabilities. Through a custom Peer provider, collaboration between two or more SQL Server databases can occur. Unlike a Hub-and-Spoke architecture, this provider enables a SQL Server database to communicate and exchange information with any other SQL Server database. This type of scenario is useful in group scenarios where users (such as auditors) need to update information and then collaborate those changes with other group members.
Sync Framework Core Components
The Sync Framework core components are similar to the database synchronization providers in that they enable collaboration between data sources. The key difference between the two technologies is that Sync Framework core components enable building custom providers that have the ability to exchange information with any data store, and not just SQL Server databases. So you may be asking yourself, if I can use the Sync Framework core components to collaborate between SQL Server databases, why would I use the database synchronization providers? The answer is that you can. The difference is that the database synchronization providers have a high level of integration with SQL Server and as such make building Peer to Peer much simpler because providers have already been created and tested for you. With the Sync Framework core components, you are required to create your own provider to communicate with the data source. Although provider creation is a little more complex, it does give you increased flexibility and the ability to collaborate with any data source. Additionally, Sync Framework core components have support for managed as well as native code which gives a developer greater flexibility from a development perspective.
Unlike Sync Framework, which is targeted towards developers and ISVs, Merge replication is targeted at IT and database administrators who are looking for a complete out-of-the-box synchronization solution that easily enables them to synchronize central SQL Server databases with client side (occasionally connected) SQL Server and SQL Server compact databases in a Hub-and-Spoke topology. Through wizards, stored procedures, and its own API, Merge replication can be easily configured and deployed. Merge replication also includes a number of out-of-the-box administration components such as a Replication monitor which allows an administrator to monitor various aspects of the synchronization system. Additionally common upgrade tasks such as automatic schema upgrades are included within the server side management tool.