MEF(托管可扩展性框架)与IoC / DI的比较

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

54
MEF的主要目的是可扩展性;作为应用程序作者和插件(扩展)作者不同并且除了已发布的接口(合同)库之外没有特定了解对方的“插件”框架。MEF解决的另一个与通常的IoC不同的问题空间,以及其实力之一,是[扩展]发现。它具有许多可扩展的发现机制,这些机制可以对与扩展相关联的元数据进行操作。结合延迟加载标记的扩展能力,能够在加载之前查询扩展元数据,打开了大量有趣场景的大门,并大大增强了诸如[插件]版本控制等功能。
MEF还有“合同适配器”,允许对扩展进行“适配”或“转换”(从类型到类型),并完全控制这些转换的详细信息。合同适配器相对于仅仅“发现”的含义和涵盖范围又开辟了另一个创造性的前沿。
再次强调,MEFs的“意图”专注于匿名插件的可扩展性,这很大程度上使它与其他IoC容器区别开来。因此,虽然MEF可以用于组合,但相对于其他IoC,这只是其能力的一个小交汇点,而我认为我们将看到很多乱搞的互动。

14
你选择用词非常独特。 - BlueRaja - Danny Pflughoeft

27

IoC容器专注于那些你已知的事情,例如我知道在单元测试中我将使用一个日志记录器,而在我的应用程序中则使用不同的日志记录器。而MEF则关注于那些你不知道的事情,我的系统中可能会出现1到n个日志记录器。


11

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接