2010-07-07 8 views
5

Ho un'app server che offre dati a un numero di client sulla rete. Puoi immaginare i dati come un enorme elenco di stringhe. I dati sul server possono cambiare e devono essere sincronizzati su tutti i client.Esiste un modello per sincronizzare gli elenchi di dati sulla rete?

Attualmente sto utilizzando questo approccio: Durante la connessione iniziale, un'app client richiede tutti i dati correnti (che possono essere molti byte). Quindi, si iscrive agli aggiornamenti (aggiunte, modifiche s e cancellazioni) di qualsiasi dato.

Questo funziona perfettamente se i dati non vengono modificati sul server tra l'invio dell'elenco di dati iniziale e l'app che sottoscrive le modifiche, in questo caso il client non riceve alcuni aggiornamenti e lavora su dati obsoleti senza saperlo.

Credo che questo sia uno scenario molto comune, quindi ci dovrebbe essere uno schema che risolva il problema. Sto usando C# 4 e WCF, ma il pattern dovrebbe essere indipendente dal linguaggio, credo.

risposta

0

non ho alcuna esperienza di fare questo, ma ...

Se ogni 'connessione iniziale' contiene un 'timestamp', e al momento della sottoscrizione, si sottoscrive 'dal timestamp di connessione iniziale' poi server potrebbe includere tutti cambia da quel timestamp, sì?

La chiave deve includere una nozione di tempo canonico del server su cui sia il client che il server sono d'accordo.

ad es. invece di

void Connect() 
Subscribe() 

avete

Timestamp Connect() 
Subscribe(timestamp) 
0

vorrei solo aggiungere un altro messaggio che invia un aggiornamento completo al cliente subito dopo la richiesta Sottoscrivi.

In alternativa, il client potrebbe inizialmente assumere che l'elenco sia vuoto e il server invia messaggi per ricostruire l'elenco completo sul client inserendoli in un numero di messaggi "aggiuntivi" incrementali.

2

Avete dato un'occhiata a Synchronization Framework di Microsoft per .Net. Ti dà un controllo più preciso su ciò che viene sincronizzato e come. WCF è completamente supportato. Supporta aggiornamenti incrementali e la sincronizzazione delle modifiche sul server.

L'API è piuttosto grande e copre più della semplice sincronizzazione dei database, ma ci sono molti articoli là fuori. Questo dovrebbe iniziare:

Introduction to Sync Framework Database Synchronization

Synchronizing Databases

Problemi correlati