在WAS托管的WCF服务中使缓存无效

时间:2014-05-19 19:44:49

标签: c# wcf was

我需要使WAS-hosted WCF服务所拥有的缓存条目无效。皱纹是失效触发器来自外部过程。我考虑过以下方法:

  1. 使用System.Runtime.Caching.MemoryCache定时缓存条目到期。这对我来说不起作用,因为缓存基础数据的更改不会按计划发生,我绝不能返回陈旧数据。
  2. 在我的WCF服务上添加“管理”InvalidateCache()方法,以使适当时可由外部进程调用的缓存无效。如果WCF服务不是WAS托管的,这将是可行的。换句话说,如果应用程序空闲并由WAS卸载,则调用InvalidateCache()方法将不必要地激活它。我查找了可以查询WAS以获取服务状态的方法,并且仅在服务处于活动状态时有条件地调用InvalidateCache(),但我找不到WAS的此类API。
  3. 使用Windows命名事件作为触发跨进程缓存失效的机制。我认为可以将WCF服务配置为侦听命名事件并在响应中使其自己的缓存无效,但这似乎是解决常见问题的不必要的复杂解决方案。
  4. 是否有更好的方法或某些方法可以使上述三种方法中的一种可行?

0 个答案:

没有答案