Question

On m'a demandé à la recherche des approches pour faire face à une application que nous sommes censés construire. Cette application, hypothétiquement un formulaire Windows écrit en C #, émettra des commandes directement au serveur s'il est connecté, mais si l'application est en mode hors connexion, l'état doit être maintenu comme s'il était connecté, puis synchroniser et émettre des modifications de données / commandes de le serveur une fois est connecté.

Je ne sais pas où commencer à chercher. Ceci est quelque chose qui ressemble à Google Gears, mais je ne pense pas avoir cette option si nous une route Winform (qui semble probable, étant donné qu'il existe d'autres fonctions que l'application a besoin d'une application Web n'a pas pu effectuer). Le Microsoft Sync Framework une option viable? Est-ce que Silverlight faire quelque chose comme ça? Toutes les autres options? J'ai googlé autour d'un peu, mais je voudrais l'entrée de la communauté sur ce qui est le mieux compte tenu du scénario.

Était-ce utile?

La solution

Le Microsoft Sync Framework supporte certainement le scénario que vous décrivez, mais je dirais qu'il est assez compliqué de le faire fonctionner.

Une chose à comprendre au sujet du Sync Framework est qu'il est vraiment deux cadres bien distincts expédition dans le même paquet:

  • Sync Framework
  • Services de synchronisation ADO.NET v. 2

Les services Sync ADO.NET sont de loin les plus faciles à mettre en place, mais ils sont contraints de synchroniser deux magasins de données relationnelles (bien que vous pouvez mettre en place un service Web comme une façade à distance entre les deux).

Le cadre de base Sync n'a pas de telles limitations, mais il est beaucoup plus complexe à mettre en œuvre. Quand je l'ai utilisé il y a environ six mois, j'ai trouvé que la meilleure source pour apprendre à partir était le SDK, et en particulier l'exemple de code de synchronisation de fichier / dossier.

Pour autant que je sache, il n'y avait peu ou pas de partage de code et de types entre les deux « cadres », de sorte que vous devrez choisir l'un ou l'autre.

Dans les deux cas, il n'y a pas de contraintes sur la façon dont vous hébergez le code de synchronisation, de sorte que Windows Forms est juste une option parmi d'autres.

Autres conseils

Si je comprends bien, cela ne ressemble pas à un problème de synchronisation des données pour moi où vous voulez conserver deux bases de données synchronisées. ça sonne plus comme vous voulez un mécanisme fiable pour un client d'appeler des fonctions sur un serveur dans un environnement où la connexion est instable, et si la connexion n'est pas présent au moment, vous voulez la fonction appelée dès que la connexion est de retour vers le haut.

Si je comprends bien, c'est une option. sinon, ce ne sera probablement pas utile.


Ceci est une réponse très court à un problème en profondeur, mais nous avons eu une situation similaire et c'est la façon dont nous manipulaient.

Nous avons une application client qui a besoin de surveiller certaines données sur un PC dans un magasin. Lorsque certains événements se produisent, cette application cliente a besoin de mettre à jour notre serveur dans les bureaux de l'entreprise, de préférence en temps réel. Cependant, la connexion n'est pas fiable à 100%, donc nous avons besoin d'un mécanisme similaire.

Nous avons résolu en essayant d'écrire sur le serveur via un service Web. S'il y a une erreur d'appeler le service Web, la commande est sérialisé en tant que fichier XML dans un dossier nommé « en attente de téléversement ».

Nous avons une course de routine dans notre application client sur un ensemble de minuterie pour chaque n minutes. Lorsque le délai est écoulé, il vérifie les fichiers XML dans ce dossier. Si trouvé, il tente d'appeler le service Web en utilisant les informations enregistrées dans le fichier, et ainsi de suite jusqu'à ce qu'il soit réussi. Lors d'un appel avec succès, le fichier XML est supprimé.

Il semble pirater-ish, mais il était simple de code et a fonctionné sans problème depuis cinq ans. Il est effectivement notre application la plus sans problème tout autour et nous avons mis en œuvre le modèle ailleurs avec succès

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