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