Skip to main content
 首页 » 编程设计

dependency-injection之MEF 和 IoC 容器之间的区别(如 Unity、Autofac、SMap、Ninject、Windsor.Spring.net 等)

2024年07月26日7myhome

我一直在搜索依赖注入(inject)并阅读了一些文章。 但我仍然无法找出 MEF 和其他 IoC 之间的区别。 所以,我的问题是:在哪种情况下我应该更喜欢使用 MEF 或 IoC 容器?

为什么将 MEF 与 PRISM 结合使用(WPF 和 Silverlight)或桌面应用程序会很好?

而在 Web 应用程序中,人们使用 IoC 容器。

那么,决定我应该使用哪种依赖技术的标准是什么?

我已经浏览过这篇文章http://devlicio.us/blogs/casey/archive/2009/12/18/what-is-the-difference-between-an-ioc-container-and-mef.aspx ,但我无法确定任何事情。

请您参考如下方法:

最终我对 MEF 与 IoC 容器的结论如下:

当必须处理未知类型或基于插件的架构时,首选使用 MEF。

IoC 容器最好与已知类型一起使用。

此外,MEF是依赖注入(inject)的架构解决方案

而 IoC 容器是依赖注入(inject)的代码级解决方案。

IoC 容器只是依赖注入(inject)技术,它填充类的实例,如果这些类的构造函数需要其他类的对象,那么 IoC 也会注入(inject)所需的对象。但 MEF 所做的不仅仅是依赖注入(inject)。虽然,MEF 也使用基于 IoC 的方法进行依赖注入(inject),但除了依赖注入(inject)之外,MEF 还做了很多其他事情。

MEF 有两个组件:

  1. Catalog:负责发现扩展

  2. 容器:提供将扩展加载到正在运行的程序的能力 应用

MEF 不仅仅是依赖注入(inject)技术。它用于我们的应用程序需要基于插件的架构,但同时 MEF 使用基于 IoC 的方法进行依赖项注入(inject)。

我期待更多人对此发表评论。