代码之家  ›  专栏  ›  技术社区  ›  alex

MEF(托管扩展框架)与IOC/DI

  •  54
  • alex  · 技术社区  · 18 年前

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

    3 回复  |  直到 16 年前
        1
  •  53
  •   J Healy    18 年前

    MEF的主要目的是可扩展性;当应用程序的作者和插件的作者( 延伸 )是不同的,除了已发布的接口之外,彼此之间没有特定的知识( 合同 图书馆。

    另一个不同于国际奥委会通常怀疑的问题,也是多边环境基金的优势之一,是[扩展]发现。它有许多可扩展的发现机制,可以在与扩展关联的元数据上操作。从MEF codeplex站点:

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

    结合延迟加载标记扩展的能力,能够查询扩展元数据 先前的 加载打开了一系列有趣场景的大门,并实质上启用了诸如[插件]版本控制之类的功能。

    MEF还具有“契约适配器”,允许扩展被“调整”或“转换”。( 从类型>到类型 )完全控制这些转换的细节。合同接合器为“发现”的含义和要求开辟了另一个创造性的前沿。

    同样,MEF的“意图”是紧紧关注匿名插件的可扩展性,这在很大程度上区别于其他IOC容器。因此,尽管MEF可以用于合成,但这仅仅是它相对于其他IOC能力的一个小交叉点,我怀疑我们将看到未来许多不稳定的相互作用。

        2
  •  26
  •   Glenn Block    17 年前

    IOC容器关注那些你知道的东西,也就是说,我知道我将在单元测试中使用一个记录器,在我的应用程序中使用另一个记录器。MEF关注那些你不关注的事情,在我的系统中可能会出现1到n个记录器。

        3
  •  11
  •   Glenn Block    17 年前

    斯科特·汉塞尔曼和我在最近的汉塞尔曼会议上更详细地讨论了这个话题。

    http://www.hanselminutes.com/default.aspx?showID=166

    推荐文章