当前位置:  开发笔记 > 运维 > 正文

为什么MEF不是DI/IoC容器?

如何解决《为什么MEF不是DI/IoC容器?》经验,为你挑选了2个好方法。

据博客圈和微软自己说,MEF不是另一个IoC容器.

好的......但为什么呢?对我来说似乎是一样的.也许它不如Unity或Castle Windsor好,但它仍然符合定义,不是吗?

为什么MEF不是像Unity或Castle Windsor这样的IoC容器?



1> Tom Stickel..:

MEF有潜力,但作为DI容器,它缺乏:

    代码为配置

    自动注册

    XML配置(对我来说不是那么重要)

    自定义生命周期

    截击

那些事情非常重要.

对于生活方式,它缺乏:

    每个图表

    Web请求上下文

    线程上下文

    会话背景

    汇集

    作用域

    自定义参考

参考文献: - Mark Seemann的书".NET中的依赖注入"



2> 小智..:

在我的世界中,DI基于三个维度,即对象组合,生命周期管理和拦截.这是其他完整的DI容器,如Unity,Castle Windsor和Ninject的便利.MEF仅支持一维,即对象组合.它做得很好,但MEF不支持剩余的两个维度.


除了具有基于约定的配置模型之外,生命周期管理现在在nuget 4.5/4.0中的MEF 2.0中得到显着改善.虽然MEF Contrib确实有AOP/Interception的扩展,但拦截并不存在.
推荐阅读
臭小子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有