我一直在搜索依赖注入(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 有两个组件:
Catalog:负责发现扩展
容器:提供将扩展加载到正在运行的程序的能力 应用
MEF 不仅仅是依赖注入(inject)技术。它用于我们的应用程序需要基于插件的架构,但同时 MEF 使用基于 IoC 的方法进行依赖项注入(inject)。
我期待更多人对此发表评论。