Архитектура Sync Framework для автономного приложения - PullRequest
1 голос
/ 30 апреля 2011

Я нахожусь в процессе разработки нового приложения, которое состоит из центральной базы данных SQL-Azure и множества (потенциально +2000) удаленных клиентов [киосков].Мне нужно синхронизировать простые (10 таблиц) локальные базы данных SQL CE с базой данных Azure и предусмотреть, что синхронизация должна выполняться не реже одного раза в день - может не быть большого количества транзакций, которые необходимо применить ккиоски в каждой синхронизации, то есть пара вставок, пара обновлений (довольно часто никаких изменений не требуется);в настоящее время я также только предполагаю, что это будут главные> клиентские обновления, не двунаправленные.Я рассмотрел синхронизацию клиент-клиент, чтобы помочь с масштабируемостью на сервере, но, к сожалению, мой клиент указал, что это может быть невозможно, поскольку киоски имеют только соединения 3G и не участвуют в локальной сети.

Для этого ястремлюсь использовать MS Sync Framework, который действительно хорошо работает, однако у меня есть опасения по поводу потенциальной конкуренции, а также по поводу производительности, когда многие клиенты могут одновременно подключаться к центральной базе данных Azure примерно в одно и то же время.Я вижу два возможных решения этого:

1) Иметь рабочую очередь планирования на стороне сервера, которая вызывает службу WCF на клиенте, которая инициирует синхронизацию с клиента.Это немного сложнее для меня и добавляет дополнительную сложность к решению.

2) Настройте синхронизацию каждого клиента или пакетов клиентов в разное время дня - это работоспособно, но может стать администратором.бремя.

... или, я слишком задумался над проблемой / проблема не существует и масштаб транзакций поддается управлению.

Спасибо

1 Ответ

3 голосов
/ 30 апреля 2011

я разместил ответ на ваш вопрос на форумах Sync Fx, но все равно опубликую его здесь:

вместо того, чтобы каждый клиент подключался к базе данных Azure напрямую, я бы предложил создать службу синхронизации на основе Azure.,Команда Sync Fx имеет пример для выполнения этого по адресу: http://blogs.msdn.com/b/sync/archive/2010/10/07/windows-azure-sync-service-demo-available-for-download.aspx

, теперь в отношении ваших клиентов на платформе Atom / OData / Non-MS, Sync Fx v4 CTP имеет встроенные функциональные возможности вокруг OData (но не является частью самой OData) и имеет образцы для Silverlight, Windows Phone и других клиентов.К сожалению, выпуск был отложен, но биты CTP вместо этого будут выпущены в качестве примеров кода (вместо выпуска продукта).

Другой вариант в CTP - это кеширование ссылок OData, проверьте его по адресу: http://blogs.msdn.com/b/astoriateam/archive/2011/04/13/reference-data-caching-walkthrough.aspx

Используя пример службы синхронизации Azure, вы можете легко адаптировать его к SQL CE - служба синхронизации Azure - синхронизация SQL Azure.Вам просто нужно измерить средний размер вашей синхронизации и продолжительность, чтобы вы могли распределить синхронизацию клиентов 2000 года.

Еще один вариант, который вы можете изучить, - это одноранговая синхронизация.

если у вас есть киоски, расположенные и соединенные друг с другом, вы можете синхронизировать один киоск с Azure, а другие киоски синхронизировать с этим киоском.

...