Question

Je fais une petite application peer-to-peer qui détient une collection commune d'objets. Ce nest pas une question sur le socket comms pour transférer les objets que j'ai que triée.

Pour commencer, je n'avez pas à vous soucier de conflits que les clients ne peuvent ajouter à la collection d'objets. Mais je me bats pour travailler dans ma tête comment les négocier clents quels objets dont ils ont besoin pour transférer les uns aux autres.

Je suppose que cela a été fait plusieurs fois auparavant, et il doit y avoir une sorte d'algorithme de synchronisation là quelque part ...

Toutes les idées?

Mise à jour:

Je suppose que je me demande s'il y a un moyen de synchroniser sans avoir à faire défiler tous les objets sur chaque poste et vérifier qu'ils existent à l'autre bout

Était-ce utile?

La solution

Si vous utilisez un ObservableCollection d'objets sérialisables mise en œuvre INotifyPropertyChanged, vous pouvez la file d'attente les objets pour la transmission car ils sont modifiés. Si vous gardez les objets qui ont besoin de synchronisation dans un HashSet, vous pouvez éviter les doubles entrées dans la file d'attente au détriment de la commande linéaire. Si vous remplacez soigneusement GetHashCode(), ou mieux encore créer une méthode qui retourne un hachage plus fort, vous pouvez filtrer les éléments qui ont changé également sur les deux extrémités.

Edit: Pour la synchronisation initiale, de construire un paquet qui dresse la liste des valeurs de hachage générées de tous les objets en cours sous forme d'un bloc binaire. De cette façon, l'échange est rapide.

Autres conseils

attribuer un guid à chaque objet et lorsque vous les fusionnez vous n'avez pas les problèmes qui les distingue en dehors. ou je comprends mal votre question?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top