与StructureMap相关的IoC容器的开销成本是多少?

时间:2008-09-12 00:17:01

标签: c# inversion-of-control structuremap

在IoC参加最近的Alt.NET小组之后,我开始考虑可用的工具以及它们的工作方式。 StructureMap特别使用属性和引导程序概念将IThing的请求映射到ConcreteThing。对于我来说,属性会自动抛出反射或IL注入的标记。有没有人确切知道这是如何工作的(对于StructureMap或其他IoC工具)以及相关的开销可能是在运行时还是在编译时?

4 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

另一件要注意的事情是,在导航代码时,您将无法转到将在运行时执行的代码。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

我构建了一个非常轻量级的基本IOC,在这里:

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

它不是您提到的库的替代品,但如果您需要的只是通过提供其界面来解析类型,那么它可能是一个完美的解决方案。

我不处理实例化类型(singleton,transient,thread,pool ...),所有对象都将被实例化为单例,你可以这样称呼它:

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

谢伊