MEF是一个依赖注入框架吗?

32

最近宣布的.NET 4.0托管可扩展框架(MEF) - 它是一个依赖注入框架吗? Microsoft Patterns and Practices的Unity在4.0中将过时吗? MEF与Unity等框架相比如何?


这个问题可能会对您有兴趣:https://dev59.com/BHVD5IYBdhLWcg3wO5ID。 - Bryan Watts
4个回答

27
具体在2008 PDC第二场的Scott Guthrie主题演讲中介绍,MEF更多地涉及扩展Visual Studio 2008和其他应用程序,而无需使用所有COM和旧技术......其中包括扩展VS2008文本版的非常好的演示。从第二天的主题演讲开始约1小时15分钟(http://www.microsoftpdc.com),您将获得直接信息,但是基本上,如果要 "构建具有内置可扩展性点的应用程序,可以轻松发现并支持扩展的发现",那么MEF就是您想要的。Unity是您想要高质量IoC容器的解决方案之一,它像其他解决方案一样进行DI,但与Enterprise Library有很好的易于集成。
关于EL4.0(现在是4.1 - http://msdn.microsoft.com/en-us/library/dd203099.aspx)中的Unity实际上是一个IoC,它位于版本2 ObjectBuilder之上,并且EL4.1具有统一各种EL应用程序块配置的可扩展性点。
MEF与Unity的比较就像是苹果和橙子的比较。这里有一些很棒并且具体描述Unity的播客/网络节目,我强烈推荐:
DotNetRocks Show #393 http://www.dotnetrocks.com/default.aspx?showNum=393 DNR.tv Show #126 http://www.dnrtv.com/default.aspx?showNum=126

10
如果我已经有MEF,为什么我还想使用Unity? - bitbonk

1

Codeplex的存档并不容易找到旧的讨论。这里有另一个版本:https://web.archive.org/web/20150131190610/http://mef.codeplex.com:80/discussions/35083 - Collin K

1

我看到一篇文章,让我觉得它只是一个依赖注入框架,但更多的信息(PDC2008上的Scott Guthrie[视频/wmv])让我认为它不仅仅是一个依赖注入框架。 从事情的声音来看,它可以用于依赖注入,但也有更多的功能。


0

我想要添加一行刚刚读到的内容:MEF不是控制反转的一部分(因为依赖被称为IOC的同义词),但它实现了它。 当我们通过依赖注入来实现IOC时,通常使用Unity,它有助于发现静态依赖关系,但MEF允许我们增加应用程序的可扩展性,而无需静态配置组件,甚至可以在运行时发现它们。 还有其他链接可以帮助您更多: Unity和MEF之间的区别


1
我不确定这个答案是否完全连贯。 - Andrew Barber

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