【问题标题】:Check for new data after a certain time frame在特定时间范围后检查新数据
【发布时间】:2011-07-27 05:36:12
【问题描述】:

现在我正在使用第 3 方提供商来获取一些数据。每次我调用该服务时,我都需要为数据支付少量费用。我想知道 sql 或 c# 中是否有一种方法可以将数据存储在个人数据库中,然后检查(在指定的时间范围后)我的第 3 方提供商是否有新数据。

例如,不是每次加载页面时都“调用服务”/“查找数据”,而是希望每周左右查找新数据并将数据存储在个人数据库中以供使用下周。这有助于我降低成本并加快我的系统速度。

我不是在这里寻找任何代码,只是一种执行/解决问题的简单方法。我的工具是VS、c#、SQL、asp.net/html。

【问题讨论】:

  • 这取决于您使用的服务;他们的 API 可能不支持这个

标签: c# javascript asp.net sql web-services


【解决方案1】:

您可以在 SQL 中创建一个简单的表,在其中存储用于调用数据提供者的密钥、上次取回的数据以及上次从数据提供者检索数据时的时间戳。如果他们的键不在您的表中,请致电您的数据提供者并在表中插入一行,其中包含结果和新的时间戳。如果时间戳比您希望的要旧(可能在您的 web.config 中配置该时间量),请检索数据并使用新数据和新时间戳更新表中的该行。

通过存储数据,确保您没有违反数据提供商的服务条款。我为一家数据提供商工作,我们的合同允许将大部分数据存储最多 24 小时。

【讨论】:

  • 谢谢 Eric,有没有办法在 .net 框架中创建和存储时间戳?在使用 sql-server 或 c# 之前我从未这样做过
  • 您可以设置触发器等,但最简单的方法是简单地从您的应用程序调用服务,获取数据,并将其保存到指定 DateTime.Now(或 UtcNow)的数据库中时间戳。您喜欢的任何 ORM 都将帮助您持久化数据并取回数据。
  • @cfarm54:是的,从 .NET 框架将内容存储在 SQL 中很容易。那里有很多教程。以下是谷歌搜索结果:codeproject.com/KB/database/sql_in_csharp.aspx
  • 重新发明轮子并不是一个好习惯。使用经过验证的解决方案比滚动自己的解决方案要好得多。
  • @subt13 有什么我可以用的吗?
【解决方案2】:

我建议你使用 sql 依赖。当数据发生变化时,它会通知您的应用程序:read more here 当然,如果他们允许的话。您还可以使用任意数量的缓存应用程序:AppFabric、memcached、SharedCache、ASP.NET 缓存。

【讨论】:

  • 感谢您。你有缓存的具体细节/例子吗?
  • 请参阅:stackoverflow.com/questions/2458205/… 使用 asp.net 缓存对象,您可以设置项目何时过期的时间限制,您也可以选择使用上述 sqlcachedependency。
猜你喜欢
  • 2020-07-28
  • 2016-10-23
  • 2021-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-26
相关资源
最近更新 更多