我的WCF服务的ObjectCache或本地字段?

时间:2012-08-28 13:46:42

标签: c# wcf caching memorycache objectcache

我有一个服务,我想实现某种缓存,但不确定我是否应该使用.NET 4的ObjectCache,或者只是在服务上有私有字段,经过一段时间后,会刷新。

情况如下:该服务用于返回大块数据。目前,我们在服务器的每个请求中访问数据库以获取数据。此数据仅在午夜每天刷新一次。我希望将这些数据缓存在服务上,并在数据库更新后每天晚上刷新它(比如上午12:30左右)。

现在,在过去,我们将填充本地字段并创建一个“监视器线程”,它将持续运行,并在一段指定的时间后重新填充这些字段。我看到的一个缺点是服务类在其中有一些额外的代码用于存储。

如果我切换到ObjectCache,一个好处是过期后自动删除。我想要做的是将一个回调方法分配给CacheEntryRemovedCallback委托,当调用它时,只需在将来的某个时刻重新缓存数据(刷新数据库后约30分钟)。

我的问题是,对于WCF服务,缓存数据的更理想选择是什么?

1 个答案:

答案 0 :(得分:1)

使用System.Runtime.Caching。它比本土自行车好。

如果您的数据仅在午夜更新,则可以使用SqlChangeMonitor。这将显着简化逻辑,您的缓存将与数据同步。

http://www.codeproject.com/Articles/167282/NET-4-0-MemoryCache-with-SqlChangeMonitor