我绝对需要使用 IoC 容器来解耦日益复杂的企业服务系统中的依赖关系。我面临的问题是与配置相关的问题(又名:登记)。我们目前有 4 种不同的环境——开发到生产以及介于两者之间的环境。这些环境有许多配置,这些配置因环境而异。然而,在所有情况下 我目前能想到, ,组件之间的依赖关系因环境而异,尽管我可能错过了一些东西和/或这可能会明显改变。

所以,最终的问题是,是否有人有类似的使用 IoC 框架的经验?或者,有人可以推荐一个框架而不是另一个框架,通过某种约定或简化的配置信息来提供灵活的注册吗?我是否仍然能够从流畅的界面中受益,或者我是否仍坚持使用 XML —— 我想避免 XML 的地狱。

编辑: 这是一个 .Net 环境,我一直在关注 Windsor、Ninject 和 Autofac。它们现在似乎都支持两种注册方法(Fluent 和 XML),尽管 Autofac 对 lambda 表达式的支持似乎与其他方法略有不同。有人在类似的多部署环境中使用它吗?

有帮助吗?

解决方案

我用 忍者. 。我喜欢这样一个事实:我不必使用 Xml 来配置依赖项。我可以直接使用 C# 代码。有 多种方式 也这样做。我知道其他库也有这个功能,但是 Ninject 提供快速实例化,它非常轻量级,它具有条件绑定,支持紧凑框架,并且它支持 Silverlight 2.0。我还在它上面使用了一个包装器,以防将来我将其切换到另一个框架。在决定框架时,​​你绝对应该尝试 Ninject。

其他提示

如果您想抽象您的容器,并能够使用不同的容器,请考虑以我尝试的方式将其注入 这里

我不确定它是否适合您的具体情况,您没有提到您正在使用的平台,但我已经取得了巨大的成功 温莎城堡的IOC框架. 。依赖项在配置文件中设置(它是一个 .NET 框架)

看看艾延德犀牛的公共区域。他使用了 IoC 容器的抽象。这样您就可以随时切换容器。像container.Resolve这样的东西总是存在于每个容器中。

我使用 Structuremap 来做一些脏活,它有一个流畅的界面和 XML 东西,而且它对于你想做的大多数事情来说足够强大。每个都有自己的优点和缺点,所以一点抽象,这样你就可以轻松切换(你永远不知道它们会存在多久)是好的。对于其余的,我认为 Spring.Net、Castle Windsor、Ninject 和 StructureMap 已经不再那么遥远了。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top