我正在考虑使用 CaSTLe Windsor 的拦截器来缓存数据以帮助扩展 asp.net 站点。
有没有人对此有任何想法/经验?
小说明:
我的意图是使用 Windsor 来拦截“昂贵”的调用并将缓存本身委托(delegate)给 MemCacheD 或 Velocity(或另一个分布式缓存)。
最佳答案
嘿,我们使用了温莎城堡拦截器,基于这篇文章:http://www.davidhayden.com/blog/dave/archive/2007/03/14/CastleWindsorAOPPolicyInjectionApplicationBlock.aspx以及上面提到的那个。
我发现整个事情很简单,这是一种非常优雅的 AOP 方式。然而....
不过要小心性能。使用拦截会创建一个动态代理,这肯定会减慢速度。根据我们使用 500 节点计算场的基准测试,我们发现在 Windsor 中使用拦截会降低大约 30% 的性能,这超出了我们在拦截内部所做的工作(本质上是记录方法调用和传递给我们的方法的参数) .并且简单地删除拦截加速了整个应用程序。
小心你不要让你的昂贵电话真的很贵。 :) 如果我是你,我会寻找不同级别的缓存,可能是通过实现 IRepository 类型模式,然后在适当的情况下使用各种缓存策略来支持它。
祝你好运,
--
马特。
关于.net - Windsor 拦截器 AOP 和缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/94410/