外部应用程序更新后刷新企业库缓存

时间:2010-11-30 18:10:33

标签: .net caching enterprise-library distributed-caching

经过几个月的搜索,我终于决定将其发布。

我们有一个ASP.NET MVC应用程序,它使用企业库来缓存项目。我们还使用Windows服务,每次都经常更新这些缓存的项目。问题是,当Windows服务更新缓存的项目时,mvc网站在重置IIS之前不会看到更新的缓存项目。我们已经考虑过在服务中添加一些代码来重新启动IIS服务,但我认为必须有更好的方法。似乎还有一篇文章谈到从外部应用程序中删除项目,但它还远远不够。

我们认为它与内存版本有关,该内存版本是缓存管理器的每个实例的本地版本,但根本找不到将它们组合在一起的方法。

1 个答案:

答案 0 :(得分:0)

嗯,这就是它。 Enterprise Library正在使用的缓存是内存中的,ASP.NET和Windows Service应用程序都有不同的内存空间。当您在一个缓存中更新缓存时,不会更新另一个缓存。

ASP.NET应用程序中也存在问题,但似乎这是一个只读缓存,而您正在执行服务的写入。

您需要做的是创建一个应用程序域可以共享的缓存,并且有很多方法可以执行此操作:

  • 将项目存储在两个应用程序域均可轻松访问的共享持久性存储(文件系统,数据库等)中
  • 有一个缓存服务,它将处理缓存项的更新,但您将查询(例如,通过WCF)缓存项

通常,您希望执行“分布式缓存”。为此,您应该阅读MSDN杂志中标题为“Distributed Caching On The Path To Scalability”的文章,以获取有关.NET中分布式缓存选项的更多信息

相关问题