Microsoft Sync Framework с клиентской и серверной базой данных Mutliple - PullRequest
3 голосов
/ 03 марта 2010

Я работаю над изменениями в приложении, чтобы иметь локальное хранилище данных вместо прямого подключения к серверу базы данных. Затем клиентское приложение будет синхронизировать изменения в обоих направлениях между базой данных сервера и его локальным хранилищем данных. Я пытаюсь реализовать решение для синхронизации с помощью Microsoft Sync Framework. Чтобы было ясно, что нет серверного приложения, только сервер базы данных, но есть несколько клиентов.

Я начал реализовывать два класса, которые реализуют FullEnumerationSimpleSyncProvider, один называется LocalSyncProvider, а другой - ServerSyncProvider. LocalSyncProvider знает, как перечислять, вставлять, обновлять, удалять элементы из локального хранилища данных, а ServerSyncProvider знает, как перечислять, вставлять, обновлять, удалять элементы с сервера базы данных. Каждый из них использует предоставленный SqlMetadataStore и сохраняет два хранилища метаданных (одно для локального и одно для сервера) на локальном диске клиента. Это означает, что каждый клиент будет иметь свое собственное хранилище метаданных для своего локального хранилища данных и свое собственное хранилище метаданных для базы данных сервера.

Действительно ли это сработает, должен ли существовать только один сервер метаданных хранилища, или мне нужно использовать Sync Framework по-другому?

1 Ответ

0 голосов
/ 01 октября 2010

Мы используем похожий подход, и он работает так, как вы описали. Разница в том, что мы синхронизируем файлы, а не данные, используя FileSyncProvider для клиента и реализацию FullEnumerationSimpleSyncProvider для сервера. Но у нас нет кода Sync Framework, работающего на сервере, и есть два отдельных файла метаданных, оба хранятся на клиенте.

Однако недавно я столкнулся с проблемой, о которой вы, возможно, захотите знать. Кажется, что если хранилища метаданных на клиенте удалены, Sync Framework не сможет перестроить файлы метаданных, не запутавшись в данных / файлах, которые уже находятся на сервере.

...