2010-11-11 69 views
0

我试图实现从第三方web服务缓存数据到sql server数据库的一些功能。如何实现数据库缓存来自第三方Web服务的数据?

我有几个方法,如

  1. IProduct GetProductById(int productId)
  2. IEnumerable<IProduct> ListProductsAllByCategoryId(int categoryId)
  3. IEnumerable<IProduct> ListProductsPagedByCategoryId(int categoryId, int pageNumber, int itemsOnPage, out int totalRowCount)

所以,我有一个想法,代码/散列方法签名+参数作为Key并将输出序列化为Value并将此Key-Value-Pair存储在中数据库。

然后我打算只是通过密钥从数据库中获取这些项目。

问题:这是一个好主意,以及如何为(方法+参数)的每个组合实现唯一键?

任何其他解决方案对我来说都是有用的。

+0

对我没有意义...... – 2010-11-11 10:32:29

+0

过期怎么办?你打算无限期地保存数据吗? – 2010-11-11 10:54:51

+0

是的,我将使用expiration datetime属性。 – gyromonotron 2010-11-11 11:02:42

回答

2

我不太清楚你的问,所以我会假设你只想缓存你的对象......

当我缓存我使用的方法是有一个静态GUID为每个类类型(保持类型唯一),然后我追加“ - ”和对象的ID(它应该是唯一的)。

作为数据库的替代品,您是否考虑过使用memcached? - 有.Net版本,它们非常好,只要确保你明白正确的地方和缓存的内容,确保它适用于你的场景。

+1

啊,也许我明白你在说什么 - 你想缓存给定特定参数的特定方法的特定输出。你的想法应该工作,但我从来没有见过任何人这样做。通常你缓存你的对象并调用你的方法,然后你的方法会查看你是否有这些缓存中的对象,如果没有去获取它们。 – 2010-11-11 10:41:12

+0

是的,你是对的。如何将对象存储在缓存中更正确? – gyromonotron 2010-11-11 11:09:13

+0

是的,所以你的方法是管理缓存,所以你的客户不必担心数据来自哪里...... – 2010-11-12 10:08:01

相关问题