我们目前使用企业库策略注入来缓存我们的数据访问存储库,例如
public interface IClientStatusRepository { [CachingCallHandler(24,0,0)] IList GetAll(); }
var clientStatusRepository = PolicyInjection.Wrap(new ClientStatusRepository());
这对我们很有用,因为它的声明性并且绝对没有涉及配置文件。它也隐藏在我们自己的工厂模式背后,因此易于更换。
我们已开始研究替代解决方案。查看替代方案的主要原因是我们意识到我们需要改变其当前从asp.net缓存中过期内容的方式。此外,我们想要引入分布式缓存(MemCached或AppFabric),并希望能够从缓存中以声明方式逐出对象
任何人都可以建议一些理想情况下使用分布式缓存的替代方案。如果解决方案需要每个类的配置,它将被自动排除。 Aspects必须在代码中声明。
由于
克雷格
答案 0 :(得分:1)
编写调用处理程序非常简单。您还将缓存调用处理程序源作为示例。编写一个自定义调用处理程序,调用您想要使用的缓存系统。
请注意,此缓存行为比看起来更难,并且Entlib处理程序犯了足够的错误,我们将其拉出而不是尝试为Entlib 5修复它。特别是,它会在Web项目中“泄漏”用户的结果,因为缓存是每个应用程序。并且面对任意类型的任意参数智能地形成缓存键并不是一个容易的问题。