What is the SyncWare Synchronization Framework?

SyncWare Data Synchronization Framework is a easy to use, self contained, liteweight and multiplatform data synchronization framework.

What does the SyncWare Synchronization Framework contain?

SyncWare Data Synchronization Framework contains a synchronization engine, a local data store engine and connectivity interfaces to the most popular PIM’s (also known as synchronization connectors):

  • Microsoft Outlook
  • Outlook Express
  • Thunderbird
  • Yahoo Mail
  • Google Mail
  • MSN Mail

What platorms can SyncWare based products be developed on?

For the current moment SyncWare Data Synchronization Framework is only available for .NET platform. We plan to port our framework to other development platforms as C++, Java, Symbian and Windows Mobile. However, we don’t have yet milestones set for these releases. If you’re interested in one of these platforms, please contact us.

When should I use the SyncWare Data Synchronization Framework?

The Syncware Data Synchronization Framework can be used in products requiering data synchronization, like PIM’s synchronization, database synchronization, file synchronization and so on. Here are the main possible ussages of the SyncWare Data Synchronization Framework:

  • Synchronize a desktop PIM (Microsoft Outlook, Outlook Express) with a Web PIM (MSN Mail, Yahoo Mail, GMail)
  • Synchronize two desktop PIM’s, when migrating from one to another
  • BackUp & Restore PIM’s content when moving to another machine or when reinstalling your system
  • BackUP & Restore your phone address book when changing phones or SIM’s
  • Synchronize local products database with your online store database
  • Synchronize any custom client-side databases with a server version
  • Enable oflline working mode for custom applications like accounting, financial, ERP, CRM and others.

Can the Syncware Synchronization Framework be extended?

The Syncware Data Synchronization Framework can be used in a wide variety of products because we designed it that way. We wanted to provide our customers a fast & simple solution for implementing the synchronization product they need. The Syncware Data Synchronization Framework’s architecture allows you to change any functionality of the sync engine by simply creating a small plugin for the part of the framework you want to change.

For instance, the Syncware Data Synchronization Framework contains by default a Local Data Storage implementation for MySQL and SQLite databases. If you need another Local Data Storage implementation, this is as simple as writing a few lines of code. The advanced Synchronization API available in the Syncware Synchronization Framework allows you to have your data synchronization application live & running in the shortest time.

Which are the main features of the SyncWare Data Synchronization Framework?

The SyncWare Data Synchronization Framework is the most complex and yet simple to use synchronization framework available on the market. The main features are:

  • Plugable synchronization types
  • Plugable synchronization actions
  • Duplicate detection engine
  • Conflict detection engine
  • Field level conflict resolution
  • Multiple conflict resolution policies
  • Auto record merging
  • Custom records merging
  • Multiple data section support
  • Auto sections mapping
  • Multiple folders support
  • Auto folders mapping
  • Custom field mapping
  • Auto field mapping
  • Filtering engine
  • Suspend & resume support
  • Self recovery support
  • Synchronization scheduling support
  • Automatic synchronization support

More details about the available features will be released soon.

Which are the main sync types supported by the SyncWare Data Synchronization Framework?

By default, Syncware Data Synchronization Framework supports the following synchronization types :

  • Slow sync
  • Fast sync
  • One way update sync
  • One way refresh sync

These synchronization types can be changed to suit your requirements. Also, other synchronization types can be added to the framework to match the exact functionality you need.

Every Synchronization application is built around a small number of synchronization types:

  • Slow Sync / Full Sync - two ways sync
  • Fast Sync / Normal Sync - two ways sync
  • Refresh Sync - one way sync
  • Update Sync - one way sync

1. Slow Sync / Full Sync:

This synchronization type takes place when the two systems are synchronized for the first time. When the Slow Sync occurs, the Synchronization Engine loads all records from both sides, filtered and grouped by section, folder and filters, and are processed.

The processing means that the duplicated are detected, so in case the two systems have one or more identical records, these records could be mapped corectlly, so there will be no duplicates after the synchronization is finished.

Here are the basic operations performed by the Synchronization Engine during the synchronization process:

  • The Synchronization Engine connects to the main system
  • The Synchronization Engine connects to the secondary system
  • The Synchronization Engine loads the supported fields, folders, sections and filters from the main system
  • The Synchronization Engine loads the supported fields, folders, sections and filters from the secondary system
  • If available the Synchronization Engine loads the fields/folders/sections mapping from the datastore, otherwise it attempts to perform automatic mapping
  • The Synchronization Engine clears the records cache and the records mapping table
  • For each section & folder, the Synchronization Engine retrieves all records from the main system that match the synchronization filters.
  • For each section & folder, the Synchronization Engine retrieves all records from the secondary system that match the synchronization filters.
  • The Duplicate Detection Engine performs duplicates detection.
  • The Duplicate Detection Engine automatically maps detected duplicates.
  • The Synchronization Engine sends all new records to the main system.
  • The Synchronization Engine sends all new records to the secondary system.
  • The Synchronization Engine updates the history log, the records mapping table and the records cache table with the status of the synchronized records
  • The Synchronization Engine performs miscelaneous clean-up actions
  • The Synchronization Engine disconnects from the main system
  • The Synchronization Engine disconnects from the secondary system

This is a tipical use-case / scenario for the Slow Sync type. Depending on many aspects of the synchronization application, durin the slow sync, the user might be able to confirm the operations that will be send to both systems, might be able to actually preview the changes that will be made or will be able to see records that were rejected by any of the two systems.

2. Fast Sync / Normal Sync

Normal Sync, also known as Fast Sync, is the synchronization type that is used for synchronizing two systems that at some point were fully synchronized by the Slow Sync. This means that the Synchronization Engine has a records mapping table and a records cache table, which can be used during the Duplicate Detection and Conflict Resolution process.

At some point, the Normal Sync / Fast Sync is identical to the Full Sync / Slow Sync. The differences are:

  • Fast Sync does not clear the reocrds cache table and the records mapping table, as the information stored into those tables is used during the Conflict Resolution process and during the automatic records merging.
  • Fast Sync does not retrieve all the records from the two systems, only the changes performed since the last sync

Knowing these differences, let’s create now the use-case/scenario for the Fast Sync / Normal Sync:

  • The Synchronization Engine connects to the main system
  • The Synchronization Engine connects to the secondary system
  • The Synchronization Engine loads the supported fields, folders, sections and filters from the main system
  • The Synchronization Engine loads the supported fields, folders, sections and filters from the secondary system
  • If available the Synchronization Engine loads the fields/folders/sections mapping from the datastore, otherwise it attempts to perform automatic mapping
  • For each section & folder, the Synchronization Engine retrieves all records from the main system that match the synchronization filters.
  • For each section & folder, the Synchronization Engine retrieves all records from the secondary system that match the synchronization filters.
  • The Duplicate Detection Engine performs duplicates detection.
  • The Duplicate Detection Engine automatically maps detected duplicates.
  • The Duplicate Detection Engine performs conflicts detection.
  • The Duplicate Detection Engine applies the most appropiate Conflict Resolution policy.
  • The Synchronization Engine sends all updates to the main system.
  • The Synchronization Engine sends all updates to the secondary system.
  • The Synchronization Engine updates the history log, the records mapping table and the records cache table with the status of the synchronized records
  • The Synchronization Engine performs miscelaneous clean-up actions
  • The Synchronization Engine disconnects from the main system
  • The Synchronization Engine disconnects from the secondary system

3. Refresh Sync

The major difference between the Refresh Sync and the Slow Sync is that the Refresh Sync only loads records from a system and updates the other system. Optionally, the system where the records are created can be cleaned up before the synchronization.
The Refresh Sync also has 2 sub-synchronization types:

  • Refresh Sync from main system only: all records from the main system are transfered to the secondary system. This sync type is also known as BackUp Sync
  • Refresh Sync from secondary system only: all records from the secondary system are transfered to the main system. This sync type is also known as Restore Sync

4. Update Sync

The Update Sync is for the Normal Sync what Refresh Sync is for the Slow Sync: the one way sync type. This sync type is used when the synchronization application provides backup & restore features and the backups should be incremental. So, instead of back-ing-up all the records, just “append” the backup with the changes.

Conclusion:

Using these 4 major sync types supported by the Syncware Synchronization Framework, you can create synchronization applications containing the basic synchronization features as well as advanced features like:

  • BackUP & Restore
  • Export & Import Wizards
  • Multi-step BackUps

Many other features can be provided by simply combining the 4 major synchronization types.