.Net4下的MEF(Managed Extensibility Framework) 架构简介

来源:互联网 发布:在线美工 编辑:程序博客网 时间:2024/06/06 01:15
在上篇WPF -.Net 4.0解决了DataGrid分组时的内存泄露中说过由于内存泄露问题,OpenExpressApp升级到.Net4平台,然后升级后之前的compositewpf出了点问题。在OpenExpressApp考虑动态扩展组件机制方面,以前就考虑过MEF,但当时还不成熟,所以使用了compositewpf,而现在MEF已经成为了.Net第一公民,compositewpf又没有提供.Net4的版本,也很久没有升级了,也不明确它的发展方向,并且现在软件中有些内存泄露问题也与它有关,所以干脆使用MEF作为插件机制。这里把这两个一起提出,主要是从动态扩充组件来说的,它们实际上不是一个东西,可以并存的,在这里就不多说这些了,下面我主要介绍一下MEF的架构,希望从总体上有所了解,更改OpenExpressApp后我会再写篇文章介绍一下如何在OpenExpressApp中使用MEF的。

各种Export提供者从目录提取part信息,然后由CompositionContainer进行装配,其中每个part都包含Import和Export两部分内容。

主要组成图

由容器、基础类库和属性编程模型组成,组成东西其实不多,要想扩充自己的东西必须熟悉这些东西。

我现在只是想用MEF替代Prsim实现插件扩充机制,由于时间紧张也不能深入研究,所以目前也就是使用过其中一些类,如:CompositionContainer、CompositionBatch、AssemblyCatalog、DirectoryCatalog和属性标记等,后面我会具体将从Prsim更改为MEF的。

主要类图

具体内容可以参考:

Hosting the .NET Composition Primitives.pdf

转载自:http://www.cnblogs.com/zhoujg/archive/2010/05/26/1740628.html

原创粉丝点击