与IoC容器(如StructureMap)相关的间接费用是多少?
时间:2020-03-05 18:51:57 来源:igfitidea点击:
参加了最近在IoC上的Alt.NET组之后,我开始考虑可用的工具以及它们如何工作。特别地," StructureMap"同时使用属性和引导程序概念来将" IThing"的请求映射到" ConcreteThing"。属性自动为我抛出反射或者IL注入正在进行的标志。有谁知道确切的工作方式(对于" StructureMap"或者其他IoC工具)以及在运行时或者编译时相关的开销是多少?
解决方案
回答
对于其他IoC工具包,我不能说太多,但我使用Spring.Net,并且发现启动时会降低初始性能。配置容器后,应用程序将不会受到影响。
回答
他们的主要问题是代码变得难以理解。如果一个人过度使用IoC,可能会变成纯粹的魔术。另一个问题是性能。在大多数情况下,性能损失并不明显。但是,当我们开始通过IoC容器创建大多数对象时,它可能会突然跌落到海平面以下。
回答
我使用了CastleProject的Windsor,发现它在减少依赖方面非常有用。我还没有注意到性能问题,但是我发现的一件事是配置可能会有些麻烦。为了在这方面有所帮助,我开始研究Binsor,它是用boo编写的用于Windsor的DSL。
要注意的另一件事是,在导航代码时,我们将无法转到将在运行时执行的代码。
回答
我在这里构建了一个非常轻量级的基本IOC:
http://blogs.microsoft.co.il/blogs/shay/archive/2008/09/30/building-custom-object-mapper.aspx
它不是我们提到的库的替代方法,但是如果我们需要的只是通过提供类型接口来解析类型,那么它可能是一个完美的解决方案。
我不处理实例化类型(单例,瞬态,线程,池...),所有对象都将实例化为单例,我们将其称为:
IRepository _repository = ObjectFactory.BuildFactory<IRepository>();
y