2010-07-07 5 views
5

У меня есть серверное приложение, которое предлагает данные нескольким клиентам по сети. Вы можете представить данные как огромный список строк. Данные на сервере могут измениться и должны быть синхронизированы для всех клиентов.Есть ли шаблон для синхронизации списков данных по сети?

В настоящее время я использую этот подход: при первоначальном подключении клиентское приложение запрашивает все текущие данные (что может быть большим количеством байтов). Затем он подписывается на обновления (добавления, смены и удаления) любых данных.

Это прекрасно работает, если данные не изменены на сервере между отправкой исходного списка данных и приложением, подписывающимся на изменения. В этом случае клиент пропускает несколько обновлений и работает с устаревшими данными, не зная об этом.

Я считаю, что это очень распространенный сценарий, поэтому должен быть шаблон, который решает проблему. Я использую C# 4 и WCF, но шаблон должен быть агностиком языка, я считаю.

ответ

0

У меня нет никакого опыта, делая это, но ...

Если каждый «начальное соединение» содержит «временной метки», и когда вы подписываетесь, вы подписались «так как метки времени первоначального подключения», то сервер может включать в себя все изменения с этой отметки времени, да?

Ключ должен включать в себя некоторое серверно-каноническое представление о времени, которое согласовывает как клиент, так и сервер.

например. вместо

void Connect() 
Subscribe() 

у вас есть

Timestamp Connect() 
Subscribe(timestamp) 
0

я бы просто добавить еще одно сообщение, которое посылает полное обновление к клиенту сразу после запроса Subscribe.

В качестве альтернативы клиент может изначально предположить, что список пуст, и Сервер отправляет сообщения для пересоздания полного списка на Клиенте, упаковывая их в несколько дополнительных «дополнительных» сообщений.

2

У вас есть взгляд Synchronization Framework на .Net. Это дает вам более тонкий контроль над тем, что синхронизируется и как. WCF полностью поддерживается. Он поддерживает инкрементные обновления и синхронизацию изменений на сервере.

API довольно большой и охватывает не только синхронизацию базы данных, но и множество статей. Это поможет вам начать:

Introduction to Sync Framework Database Synchronization

Synchronizing Databases

0

Может быть, эта статья на Architecture Patterns for Data Synchronisation будет полезно для вас.

Это звучит как Шаблон проектирования для синхронизации данных на основе событий близок к тому, что вам нужно.

Смежные вопросы