Пока все делятся впечатлениями от новинок, представленными на MIX09, я решил написать о Microsoft Sync Framework. Исходя из того, что сказано на их сайте, можно синхронизировать всё.

Microsoft Sync Framework – a comprehensive synchronization platform enabling collaboration and offline for applications, services and devices with support for any data type, any data store, any transfer protocol, and network topology.

Для чего это может пригодиться? Например, у нас есть клиент-серверное приложение, которое работает со списком товаров в магазине. Сервер один, а клиентов может быть несколько, и все они работают со своей версией базы данных, которую нужно время от времени синхронизировать.

MicrosoftSync Framework предоставляет нам готовый механизм синхронизации данных. Вот только не все так хорошо, как кажется с первого взгляд. Каждый, кто сталкивался с такой необходимостью, знает, что для синхронизации данных нужно каким-то образом определить, были ли эти данные синхронизированы раньше, изменились ли они после этого или нет,а так же нужно определить какие данные нужно синхронизировать, а какие - нет. Для этого MicrosoftSync Framework добавляет к сущности, которая нуждается в синхронизации дополнительное  поле timestamp (имя и тип можно менять в зависимости от реализации сущности). Поэтому, если в проекте уже есть готовая база данных, то необходимо будет добавлять к ней в таблицы, требующие синхронизации, дополнительные поля, что не всегда можно сделать.

На сайте MicrosoftSync Framework уже есть готовые примеры для синхронизации коллекций объектов, баз данный, outlook и устройств, под управлением Windows Mobile. Примеры легкие в понимании и позволяют после незначительных изменений использовать их у себя в проекте.