我有一组将从服务中检索的实体。 其中一些是静态的,所以我决定创建一个客户端缓存。 但我找不到插入缓存的要点。我有svcutil生成的代理,我需要为其中一些(不是全部)启用缓存。 我的观点是建立一些机制,它将在channelFactory / clientBase级别工作,并将缓存所有必需的实体。
我想要的是什么:
透明缓存,没有业务逻辑变化(共同或根本)
使用某种属性配置可缓存实体:[Cacheable]
添加缓存实现的能力:MemoryCache,DistributedCache
答案 0 :(得分:1)
然而,在服务上使用IOperationInvoker
创建缓存属性非常容易(查看示例here),在客户端进行同样的操作非常困难。
我见过的最好的例子来自Paolo Salvatori,可用here。很好的解决方案,但由于复杂性,我终于放弃了。我把自己变成了WCF调用的通用包装器。仍然有手动任务,但它更简单,我可以轻松管理它。
答案 1 :(得分:0)
如何使用Castle Windsor集成设施进行缓存?你可以拦截并实现缓存客户端(我做到了)。弱点:我认为这个项目没有很好的记录,而且我也不知道它有多活着。
http://docs.castleproject.org/Windsor.WCF-Integration-Facility.ashx