5

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

(例如)StructureMap、Ninject、Castle Windsor、Unity、autofac 和其他有什么区别?任何人都可以提供一些可能有助于选择一个库的提示或资源链接吗?

更新:有一个问题(Enterprise Library Unity vs Other IoC Containers)讨论了 IoC 容器初始化的差异。

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

4

4 回答 4

6

各种 IoC 容器之间的不同之处在于开箱即用的生命周期或实例化模式(何时创建组件的新实例):

  • 结构图
    • 瞬态(称为按请求)、单例、线程本地、按 HttpContext、按 HttpSession、混合
  • 忍者
    • 瞬态、单例、每个线程、每个 HttpRequest
  • 温莎城堡
    • 单例、瞬态、每个线程、池化、每个 HttpRequest(可通过设施获得更多)
  • 自动法
    • 瞬态(工厂),单例,每个 HttpRequest
  • 统一
    • 瞬态,单例,每线程
于 2009-10-28T23:28:22.190 回答
5

这是一篇有用的博客文章,它比较了 .Net 中可用的各种 IOC 框架之间的功能,但我不知道 MVC 有什么东西偏爱一个容器而不是另一个容器。

最大限度

于 2009-10-28T22:21:55.040 回答
1

我个人选择了 Autofac。似乎非常好的一件事是资源的确定性处置。

当我检查它时,它也与它集成了 ASP.Net。我应该看看其他框架一段时间,但我没有遇到问题。当存在无法解析的组件时,它给您的错误消息非常好。

你最好的选择是尝试每个项目。我已经成为(尽可能多地)在代码中进行配置并使用 XML 配置作为备份的真正粉丝。因此,制定自己的优先级列表并尝试一下。

于 2009-10-28T22:27:59.113 回答
-1

就个人而言 - 这就是 OOP 不再是正确解决方案的地方,因为它不能很好地处理 IoC。找到自己的解决方案可能会更好。就我个人而言,我用 F# 自己动手——只要我能控制两端。

新的 Rx 可能有助于解决其中的一些问题,但它仍然只是从函数式编程中借用了一个创可贴。

我想我们暂时将对象作为某些事物的基本模型 - 幸运的是,在 Web 服务中,对象工作得非常糟糕,以至于标准已经从它们转向像 SOAP 这样的功能接口。

于 2009-12-02T16:50:18.767 回答