2009-03-16 6 views
0

Je dois mettre en cache du code XML d'un service Web dans un fichier xml local pour l'utiliser dans mon application Web.Mise en cache fiable du flux XML d'un service Web dans un fichier

Il existe deux services Web, l'un qui renvoie les données et l'autre qui renvoie la date/heure de la dernière modification des données.

La taille du fichier xml peut aller de 50 Ko à 500 Ko

J'ai actuellement un exécutable qui fonctionne à partir d'un planificateur de fenêtres qui effectue ce qui suit.

  • Vérifier DateTime dernier a changé de WebService
  • fichier XML local Vérifiez DateTime Dernière modification
  • Comparez les dates pour déterminer si continuer
  • données Pull de webservice dans la chaîne locale
  • Ecrire les données sur un fichier local myxml.temp
  • Renommer le fichier en direct existant myxml.xml à myxml.delete
  • Renommer fichier myxml.temp à myxml.xml
  • Supprimer le fichier de myxml.delete

Je l'écriture initiale effectuer à l'aide FileInfo.CreateText() et un TextWriter.

J'effectue les renommages et les suppressions en utilisant FileInfo.MoveTo et FileInfo.Delete.

Ceci est assez fiable car les renames sont rapides, cependant, nous recevons toujours un certain nombre d'erreurs d'accès refusé car les fichiers sont toujours utilisés.

Quelqu'un a-t-il des conseils sur une façon plus fiable/résiliente de le faire? Y a-t-il quelque chose de construit que j'ai oublié de gérer un fichier local comme celui-ci?

Répondre

2

Une option pourrait être juste télécharger chaque mise à jour à un nouveau nom de fichier avec l'horodatage dans le nom du fichier

c: \ Téléchargements \ MyXml20090319-1035.xml

Ensuite, dans l'application qui est à l'aide les données, vous l'avez choisir le dernier fichier de ce répertoire.

Vous pouvez nettoyer les anciens fichiers de données à tout moment, et s'ils ne parviennent pas à supprimer maintenant, il suffit de réessayer à l'itération suivante.

Questions connexes