2008-09-12 30 views
3

参加IoC最近的一个Alt.NET组后,我开始考虑可用的工具以及它们如何工作。 StructureMap特别使用属性和引导程序概念将IThing的请求映射到ConcreteThing。对于我来说,属性会自动抛出标志,反射或IL注入正在进行。有没有人知道它的工作原理(对于StructureMap或其他IoC工具)以及相关开销可能是运行时还是编译时?与StructureMap等IoC容器相关的开销成本是多少?

回答

1

对于其他IoC工具包,我不能多说,但我使用Spring.Net,并发现在启动时会有一次性的初始性能损失。容器配置完成后,应用程序不受影响。

+0

感谢。 ..我其实没有听说过Spring.Net,你喜欢它吗? – 2008-09-12 00:29:11

0

他们主要的问题是代码变得很难理解。如果过度使用IoC,它可能会变成纯粹的神奇。另一个问题是性能。在大多数情况下,性能损失并不明显。但是当你通过IoC容器开始创建大部分对象时,它可能突然降到海平面以下。

+0

性能损失有多大?你测量了什么? – Rookian 2010-07-23 20:22:45

1

我使用CastleProject的Windsor,并发现它在减少依赖方面非常有用。我还没有注意到性能问题,但我发现的一件事是配置可能会有点麻烦。为了帮助这方面,我开始看看Binsor,这是一个写在温哥华的DSL的DSL。

另一件需要注意的事情是,当浏览代码时,你将无法访问将在运行时执行的代码。

0

我建立了一个非常轻便,基本IOC,在这里:

http://blogs.microsoft.co.il/blogs/shay/archive/2008/09/30/building-custom-object-mapper.aspx

这不是你提到的库的选择,但如果所有你需要的是通过给它的接口它可能解决一个类型成为完美的解决方案。

我不处理实例的类型(单身,暂时的,线程,池......),所有的对象将被实例化作为单身,你把它想:

IRepository _repository = ObjectFactory.BuildFactory<IRepository>(); 

吉文