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

转载自 http://zhoujg.blog.51cto.com/1281471/519269

在上篇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

其它

参考blog:

A Crash Course on the MEF Primitives

MEF: Dependencies are Queries?

Hosting the .NET Composition Primitives.pdf

在 .NET 4 中使用托管可扩展性框架构建可组合的应用程序

MSDN-Managed Extensibility Framework Overview

项目网站:

Managed Extensibility Framework

Managed Extensibility Framework  Contrib

开源信息系统开发平台之OpenExpressApp框架 1.1 春节飞虎版发布

欢迎转载,转载请注明:转载自周金根 [ http://zhoujg.cnblogs.com/ ]

本文出自 “周金根” 博客,请务必保留此出处http://zhoujg.blog.51cto.com/1281471/519269

时间: 2024-10-08 23:36:37

.Net4下的MEF(Managed Extensibility Framework) 架构简介的相关文章

MEF(Managed Extensibility Framework)使用全部扩展组件

MEF(Managed Extensibility Framework),所在命名空间是System.ComponentModel.Composition.dll.简单来说,MEF是将符合约定(一般是实现接口)的组件的Parts(类.方法和属性可看作是Part)标记为Export特性,再把这些组件放到与可执行程序同目录的Extensions文件夹中,最后通过把Part标记为Import来引用这些组件,从而为我们创建可扩展组件提供了方便. 以球员踢球为例,体验MEF的工作原理和便捷之处. ● He

MEF(Managed Extensibility Framework)有选择性地使用扩展组件

在"MEF(Managed Extensibility Framework)使用全部扩展组件"中,客户端应用程序调用了所有的扩展组件,而且如果有新的扩展组件加入,必须先关闭程序,再重新启动才可以调用所有组件. 本篇体验使用MEF的ExportMetadata特性,有选择性地使用某些扩展组件,使用Lazy<>,让客户端程序延迟动态加载组件,即使不关闭应用程序,也能调用所有组件. ● StudentMEF.Lib, 类库,包含接口IStudent.cs ● StudentMEF

MEF(Managed Extensibility Framework )的入门介绍

1.什么是MEF MEF是一个来自于微软协作构建扩展应用的新框架,它的目的是在运行中的应用中添加插件.MEF继承于.NET 4.0 Framework平台,存在于各种应用平台的系统程序集中 2.程序集 System.ComponentModel.Composition.dll 3.关键结构 Import Export Compose 4.相关知识 Part:一个对象,能导入或者导出与应用程序 Catalog:一个对象,帮助在程序集或者文件夹中查找有效的构建部件 Contract:导入和导出部分需

MEF(Managed Extensibility FrameWork) API

作用:创建可扩展的轻量级应用程序的库.可以让扩展在程序内重复使用,还可以跨程序重复使用. 导出Export:把部件放到容器中,供其它部件使用. 导入Import:把部件从容器中拿出来使用. 导入和导出必须具有相同的约定:协定类型参数   &&  协定名称参数 隐式协定:协定类型参数和协定名称参数将从修饰的属性推断而出. 导出的类型必须与协定类型相同.派生自协定类型,或者实现协定类型接口. public class MyClass { [Import] public IMyAddin MyA

Managed Extensibility Framework (MEF)

http://msdn.microsoft.com/zh-cn/library/dd460648(v=vs.110).aspx [.NET] 浅谈可扩展性框架:MEF

Windows10(UWP)下的MEF

前言 最近在帮一家知名外企开发Universal Windows Platform的相关应用,开发过程中不由感慨:项目分为两种,一种叫做前人栽树后人乘凉,一种叫做前人挖坑后人遭殃.不多说了,多说又要变成月经贴了. 讲讲MEF. MEF全称Managed Extensibility Framework.我们做.Net的碰到依赖注入(DI:Dependency Injection)这一块的内容,一般会选择使用Unity或者MEF,这也是Prism主要使用的两种方式.在.Net 4.0之前,MEF一直

iOS快速开发框架Bee-Framework应用和解析(二) --- Bee framework架构概览

在第二部分里,分享一下Bee Framework架构的看法.如果您下载了Bee Framework, 在/document/developer_manual.pdf有Bee的开发手册.手册里有典型的教程,也有对架构的讲解.本文试图融入个人的理解,解答以下问题: Bee的MVC是如何工作的,核心组件是哪些? Bee的整体架构如何? 除了MVC, Bee提供了哪些常用的工具和服务? 该如何使用Bee开始一个项目? A1:Bee的核心类包括BeeModel, BeeMessage, BeeUIRout

物联网模式下的多活数据中心架构认识与实践

做互联网应用很重要的一点是要保证服务可用性,特别是某些业务更是需要7*24小时不间断的对外提供服务,任何停机.宕机都会引起大面积的用户不满.持续可用性是把业务服务化时一个需要考虑的重要指标,很多时候我们都会牺牲一些功能来换取可用性.如何保证服务的持续可用性,是每个互联网架构师一直坚持不懈追求的目标.在不同行业.不同场景下都有不同的解决方案.今天就与大家聊聊特来电在物联网模式下的多活数据中心架构上的认识和实践. 特来电是全球首家提出了将车联网.充电网.互联网三网融合的充电桩生态公司,拥有近18万个

千亿级数量下日志分析系统的技术架构选型

?? 随着数据已经逐步成为一个公司宝贵的财富,大数据团队在公司往往会承担更加重要的角色.大数据团队往往要承担数据平台维护.数据产品开发.从数据产品中挖掘业务价值等重要的职责.所以对于很多大数据工程师,如何根据业务需求去选择合适的大数据组件,做合适的大数据架构工作就是日常工作中最常遇到的问题.在这里根据七牛云在日增千亿级的日志分析工作,和大家分享一下大数据技术架构选型的一些经验.? 大数据架构师在关注什么 ?在一个大数据团队中,大数据架构师主要关注的核心问题就是技术架构选型问题.架构选型问题一般会