当然,松散耦合是很棒的,但我常常想知道使用IoC容器(例如Castle Windsor)动态连接的架空线路是通过一个紧密耦合的系统进行的?
我知道详细的答案将取决于IoC的用途,但我真的只是想了解IoC工作所涉及的工作量。
有没有人对此有任何统计数据或其他资源?
由于
答案 0 :(得分:9)
有关于表现的链接
http://realfiction.net/?q=node/143
结果有
但是你可以看到the Windsor isnt the fastest IoC(Autofac更快)
正确的答案是,表现并不重要:)
因为正确使用IoC,所有注册过程都处于初始化阶段。
换句话说,使用IoC必须实时减少“if else”的数量。
答案 1 :(得分:1)
初始化时间较慢,因为在启动容器时会加载所有内容。如果初始时间对你来说无关紧要,那么每个人都是那个运气轮的赢家。
答案 2 :(得分:1)
了解IoC容器的复杂程度的最佳方法来自分析它。
在一次特殊的体验中,我花了一整个下午使用plexus调试一些简单的“Hello World”代码,Maven基于and here is a helpful link to browse its source code)。它有点出现(通过查看defaultPlexusContainer):
这留下了一个重要的方面,深入到上面的步骤:查找组件。在丛中,阶段概念包含构造对象的步骤,并且这些阶段通常绑定到人格概念。但是,对于default setting,可以通过执行以下阶段来完成:
这些步骤中的大多数都是可选的,通常涉及识别给定的接口并在目标对象上调用它 - 这是plexus个性的默认值,请注意。
此外,每个对象可能绑定到生命周期管理器,这主要是新对象和单个对象之间的区别。
在我的特定记录中:最困难的部分实际上是解析配置,并启动容器。之后,您可能会注意到性能没有进一步的差异。