.net - Windsor 拦截器 AOP 和缓存

标签 .net castle-windsor aop

我正在考虑使用 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/

相关文章:

ninject - transient 与每个 Web 请求的生活方式,什么构成 Web 请求?

java - 如何使方面在方法 AService.methodB() 上工作?

javascript - 从 javascript 调用 Webform 身份验证页面后面的 .net Web 服务

c# - MessageBox 在 Windows 7 Embedded 中不显示

c# - 使用 ADO.NET 的批处理操作

.net - 如何使用 .Net 命令提示符强制启动和运行 .bat 文件

.net - IWindsorInstaller和CaSTLe中的AbstractFacility之间的区别

caSTLe-windsor - CaSTLe Windsor 3.0 组件注册 "ServiceType"

java - 为什么 pointcut.matches(String.class) 返回 "true"

c# - 如何使用 PostSharp 实现延迟加载?