关于.net:IoC容器之间的差异

differences between IoC containers

我正在寻找有关如何为ASP.NET MVC应用程序选择IOC容器的一些指导。

结构图、Ninject、Castle Windsor、Unity、Autopac和其他软件有什么区别?有人能提供一些提示或链接到可能有助于选择一个库的资源吗?

更新:有一个问题(企业库统一与其他IOC容器)讨论IOC容器初始化的差异。

但是,功能上是否存在差异,这会使一些IOC容器成为ASP.NET MVC应用程序的更好选择?


不同的IOC容器之间有一点不同,那就是它的生命周期或实例化模式是开箱即用的(何时创建组件的新实例):

  • 结构图
    • 瞬态(按请求调用)、单实例、线程本地、每个httpcontext、每个httpsession、混合
  • 九针
    • 瞬态、单例、每个线程、每个httpRequest
  • 温莎城堡
    • 单实例、瞬态、每个线程、池、每个httpRequest(通过设施提供的附加功能)
  • AutoFac
    • 瞬态(工厂),单件,按HTTPRequest
  • 团结
    • 每个线程的瞬时、单例

这是一篇很有帮助的博客文章,它比较了.NET中各种IOC框架的功能,但我不知道MVC有什么比另一个更倾向于一个容器的功能。

马克斯


我个人决定用自动空调。有一件事似乎很好,那就是对资源的确定性处理。

当我签出它时,它也与ASP.NET集成在一起。我应该看一下其他框架,但我没有对它产生任何问题。当有一个不可解析的组件时,它给您的错误消息是非常好的。

你最好的选择是尝试每个项目。我非常喜欢在代码中进行配置(尽可能多),并使用XML配置作为备份。所以,列出你自己的优先顺序,然后试试看。


就个人而言,OOP不再是正确的解决方案,因为它不能很好地处理IOC。找到自己的解决方案可能会更好。就我个人而言,只要我能控制两端,我就用f来滚我自己的。

新的RX可能对这些问题有所帮助,但它仍然只是从功能编程中借用了一个创可贴。

不过,我想我们有一段时间一直将对象作为一些事情的基本模型——幸运的是,在Web服务对象中,这些对象的工作非常糟糕,以至于标准已经从它们转向了功能接口(如SOAP)。