Dependency injection MEF(托管扩展性框架)与IoC/DI

Dependency injection MEF(托管扩展性框架)与IoC/DI,dependency-injection,inversion-of-control,mef,Dependency Injection,Inversion Of Control,Mef,MEF(托管可扩展性框架)解决了哪些现有IoC/DI容器无法解决的问题?MEF的主要目的是可扩展性;当应用程序的作者和插件(扩展)的作者不同,并且除了发布的接口(合同)库之外,彼此没有特定的知识时,用作“插件”框架 MEF解决的另一个问题与通常的IoC怀疑不同,MEF的优势之一是[扩展]发现。它有很多可扩展的发现机制,这些机制可以操作您可以与扩展关联的元数据。从MEF CodePlex站点: “MEF允许使用附加元数据标记扩展,这有助于丰富的查询和筛选” 与延迟加载标记扩展的能力相结合,能够在加

MEF(托管可扩展性框架)解决了哪些现有IoC/DI容器无法解决的问题?

MEF的主要目的是可扩展性;当应用程序的作者和插件(扩展)的作者不同,并且除了发布的接口(合同)库之外,彼此没有特定的知识时,用作“插件”框架

MEF解决的另一个问题与通常的IoC怀疑不同,MEF的优势之一是[扩展]发现。它有很多可扩展的发现机制,这些机制可以操作您可以与扩展关联的元数据。从MEF CodePlex站点:

“MEF允许使用附加元数据标记扩展,这有助于丰富的查询和筛选”

与延迟加载标记扩展的能力相结合,能够在加载之前查询扩展元数据为一系列有趣的场景打开了大门,并基本上实现了[插件]版本控制等功能

MEF还具有“契约适配器”,允许对扩展进行“调整”或“转换”(从类型>到类型),并完全控制这些转换的细节。合同接受者开辟了另一个与“发现”的含义和内涵相关的创造性前沿


MEFs的“意图”再次强调匿名插件的可扩展性,这在很大程度上区别于其他IoC容器。因此,虽然MEF可以用于合成,但这只是其功能相对于其他IoC的一个小交叉点,我怀疑我们将看到未来会有很多乱伦的相互作用。

IoC容器将重点放在您知道的事情上,即我知道我将在单元测试中使用一个记录器,在我的应用程序中使用另一个记录器。MEF关注那些您不关注的事情,我的系统中可能会出现1到n个记录器。

Scott Hanselman和我在最近的hanselminutes中更详细地讨论了这个主题


你有非常独特的词语选择。