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

MEF、EntLib和Prism的区别

  •  5
  • jameschinnock  · 技术社区  · 14 年前

    我有一个相对基本的问题,但最重要的是需要一些明确的事实上,我一直在使用Prism(复合应用指南)在C#中创建一个WPF MVVM桌面应用程序,这一点我很清楚(或者我是这么想的),以及IoC和基于模块的架构等等。同时,我开始使用MEF,并意识到两者之间有一种灰色地带(我发现并阅读了许多关于在IoC容器中托管MEF扩展的文章/博客等)。

    然而……最近我开始看企业图书馆5,这就是导致我困惑的原因。它们都放在哪里?所以Prism使用基于模块架构的DI。。。EntLib使用具有应用程序块类型体系结构的Di。。。而MEF根本不使用DI?这是否意味着EntLib和Prism是完全独立的架构方法,或者一个是另一个的子集?MEF也可以与其中之一/两者一起使用吗?

    任何解释都是非常欢迎的。

    非常感谢

    2 回复  |  直到 14 年前
        1
  •  10
  •   Josh Smeaton    14 年前

    一、 也被国际奥委会和欧洲货币基金组织之间的差异所迷惑。我发现描述它们最简单的方法是:

    MEF用于发现和实例化一些您不知道的东西。

    国际奥委会是要求你知道一些事情。

    一点背景知识。MEF将始终实例化您至少请求一次的导入。你不可能自己创建它,并将其放入目录中以备使用。MEF负责创建和满足导入。动态加载的dll是一个很好的例子,您不知道哪些dll正在到达。

    另一方面,IoC-您从当前库中请求实现,并得到一个实现。但是,您还负责确保实现的存在。

    IoC用于依赖注入。MEF是为了扩展性。

        2
  •  3
  •   Grigori Melnik    14 年前

    看看这两个帖子:

    至于企业图书馆,在v5.0中我们已经做到了 容器不可知论 . 即使企业库附带了开箱即用的Unity容器,它的架构也可以使用您选择的任何容器或MEF。您确实需要提供一个合适的配置器(请参阅本文末尾的配置器信息 summary )