我们正在考虑在我们的asp.net 3.5应用程序中使用企业库缓存框架来存储我们最受欢迎产品的小数据表。
如果需要,有没有办法编写外部进程(如控制台应用程序)来删除这些数据表?例如,客户端可以进入并更新产品的数据,这将使存储在缓存中的数据表过期。发生这种情况时,我希望外部应用程序进入缓存并删除甚至用新数据更新缓存。
答案 0 :(得分:1)
我可以想到两种从进程中删除缓存项的方法。
第一种是在向缓存中添加项目时使用FileDependency
。如果要使缓存项过期,请修改该文件。
DataTable books = GetTopBooks();
ICacheManager cacheManager = CacheFactory.GetCacheManager();
cacheManager.Add("books", books, CacheItemPriority.NotRemovable, new BookCacheRefreshAction(),
new FileDependency("books.xml"));
然后,外部进程可以通过修改磁盘上的相应文件(在本例中为books.xml)来使DataTable到期。您还可以配置ICacheItemRefreshAction以在缓存过期时刷新缓存(例如,从数据库中)。
如果由于某种原因基于文件的方法不够,那么第二种方法是创建一个可以由进程外应用程序调用的自定义接口。例如创建一个Web服务,它将从缓存中删除项目并可能刷新缓存项。