Managed Extensibility Framework(MEF)是.NET平台下的一个扩展性管理框架,它是一系列特性的集合,包括依赖注入(DI)以及Duck Typing等。MEF为开发人员提供了一个工具,让我们可以轻松的对应用程序进行扩展并且对已有的代码产生最小的影响,开发人员在开发过程中根据功能要求定义一些扩展点,之后扩展人员就可以使用这些扩展点与应用程序交互;同时MEF让应用程序与扩展程序之间不产生直接的依赖,这样也允许在多个具有同样的扩展需求之间共享扩展程序。进一步了解MEF可以看看TerryLee的文章:使用Managed Extensibility Framework方便的扩展应用程序
MEF之前放到了CodePlex的时候所使用的协议并不是开源协议,MS-LPL或者叫Microsoft Limited Permissive,这个协议要求代码只能在Windows平台上运行,不能在*unix平台上运行,在这个项目在CodePlex上放出来后,在开发社区,包括Mono之父Miguel De Icaza 对它提出了批评,微软积极听取社区的意见,意识到开源社区的价值,Glenn宣布了将这个项目的协议更改为开源的 MS-PL 协议。
MEF现在采用MS-PL协议和社区的声音和微软员工的努力分不开,以及微软认同开源社区的价值。大家也许已经知道开源项目Castle项目的创始人Hamilton Verissimo,加入了微软,担任微软MEF项目经理,这是它在Msdn的 Hamilton Verissimo blog。
刚刚看到开源运动和MVP,里面有很多回帖,对微软和开源之间存在很大的误解,需要有时间来修正。微软已经改变了 Enterprise Library 4 源代码的许可协议, 以基于开源友好的 Microsoft Public License (Ms-PL) 许可协议发布,可以在Mono下使用Enterprise Library 4.0。微软还在CodePlex上开源的很多项目都将将有利于在Unix上通过Mono重用这些类库,繁荣开源社区。