【问题标题】:Reliably caching XML feed from a web service into a file可靠地将来自 Web 服务的 XML 提要缓存到文件中
【发布时间】:2009-03-16 16:12:23
【问题描述】:

我需要将一些 xml 从 web 服务缓存到本地 xml 文件以供我的 web 应用程序使用。

有两种 Web 服务,一种返回数据,另一种返回数据上次更改的日期/时间。

xml 文件大小范围为 50KB 到 500KB

我目前有一个从执行以下操作的 Windows 调度程序运行的可执行文件。

  • 检查上次从 WebService 更改的 DateTime
  • 检查 DateTime 本地 xml 文件上次修改时间
  • 比较日期以确定是否继续
  • 从 web 服务拉取数据到本地字符串
  • 将数据写入本地文件 myxml.temp
  • 将现有的实时文件 myxml.xml 重命名为 myxml.delete
  • 将 myxml.temp 文件重命名为 myxml.xml
  • 删除 myxml.delete 文件

我使用 FileInfo.CreateText() 和 TextWriter 执行初始写入。

我使用 FileInfo.MoveTo 和 FileInfo.Delete 执行重命名和删除。

这是相当可靠的,因为重命名很快,但是,由于文件仍在使用中,我们仍然会收到一些拒绝访问错误。

有人对更可靠/更有弹性的方法有任何建议吗?在管理这样的本地文件时,是否有任何我可能忽略的内置内容?

【问题讨论】:

    标签: c# web-services caching file-io


    【解决方案1】:

    一种选择可能是将每个更新下载到一个新文件名,文件名中包含时间戳

    c:\downloads\MyXml20090319-1035.xml

    然后,在使用数据的应用程序中,您可以让它从该目录中选择最新的文件。

    您可以随时清理旧数据文件,如果它们现在无法删除,只需在下一次迭代中重试。

    【讨论】:

      猜你喜欢
      • 2011-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多