Dal*_*gan 30 .net castle-dynamicproxy linfu-dynamicproxy
我正在寻找将逻辑添加到我正在处理的库中,这需要动态代理.我想从在生产环境中使用这两个库的用户那里得到一些建议.是否有一个人执行另一个,是否有任何缺点,使你必须切换到另一个,等等.基本上告诉我你的图书馆的经验.答案将帮助我决定使用哪一个.
- 编辑 -
我忘了提到我正在开发的图书馆将支持Mono,因此你可以分享关于这两个图书馆及其对Mono的支持的任何知识也会很棒.
Krz*_*mic 20
我是Castle的提交者,为动态代理做贡献,所以我可能有偏见,但我一般认为Castle的动态代理是更好的解决方案.我在这里谈论LinFu DynamicProxy v1.0,因为这是我熟悉的.LinFu.Proxy 2基于Mono.Cecil并从头开始重写.
invocation.Proceed();
对于LinFu来说,它看起来像这样(实际的方法/属性名称可能因我从内存中写入而有所不同)
//invocation.TargetMethod is MethodInfo, so you're using reflection
invocation.TargetMethod.Invoke(invocation.Target,invocation.Parameters);
Run Code Online (Sandbox Code Playgroud)
其他答案提到的性能问题不是DynamicProxy问题,而是微软实施BCL的错误结果(在Mono上没有这样的问题BTW).这仅在单个ModuleScope中有许多(超过200个)代理类型时才会显现.
解决方案是微不足道的 - 不要生成那么多代理类型(通常你不必)或使用许多ModuleScopes/ProxyGenerators(例如Rhino.Mocks使用这种方法)
我个人不用单声道开发,所以我没有第一手经验,但是在Mono上有使用Castle DP的库,我们没有得到任何compliaints所以我想它的工作正常.
自几个月前我的基准测试以来,没有新版本的Castle DP(新版本的目标是年底).LiFu有一个2.0版本,但我不确定它是仅仅是主干还是已发布.我不知道Spring或Unity.
归档时间: |
|
查看次数: |
9196 次 |
最近记录: |