[转]MEF程序设计指南
《MEF程序设计指南》博文汇总
虽然.NET平台下,包括MS在内的各种方案已经遍地开花,但是MEF是第一个随着CLR发布的解决方案。
花了一个月左右的休息时间将官方提供的MEF程序设计指南(The MEF Programming Guide)以及自己使用中的一些经验进行了整理,为了方便大家阅读特将此系列博文进行汇总,详细如下博文列表。
本篇通过一个简单的应用实例介绍了如何在应用程序中宿主MEF,以及最基本的导入、导出和部件组合的应用。
MEF程序设计指南二:Silverlight中使用CompositionInitializer宿主MEF
本篇介绍了如何在Silverlight中使用CompositionInitializer宿主MEF,并通过不同的导入导出配置,演示了MEF的动态装载配件组合和一些简单的应用案例。
MEF程序设计指南三:MEF中组合部件(Composable Parts)与契约(Contracts)的基本应用
本篇介绍了如何定义组合部件(Composable Parts)和契约(Contracts),以及基于契约的的多重组件部件的相关应用,包括接口的多实现,如何使用ImportManyAttribute特性通过契约获取接口的多重实现实例等。最后还介绍了通过契约进行约束,实现装配指定契约的部件。
MEF程序设计指南四:使用MEF声明导出(Exports)与导入(Imports)
本篇介绍了如何使用MEF声明导出(Exports)与导入(Imports),包括类、字段、属性以及方法级别的部件导出、导出的应用。
MEF程序设计指南五:迟延(Lazy)加载导出部件(Export Part)与元数据(Metadata)
本篇介绍了MEF中的迟延加载(Lazy)机制和元数据(Metadata)导出功能特性。
MEF程序设计指南六:MEF中的目录服务(DeploymentCatalog)
对于MEF的目录服务MEF分别为WPF和Silverlight提供了不同的目录机制。使用目录的主要功能就是方便实现程序部件的装载,以及动态的组合应用程序部件等功能,更可以非常方便的得到程序部件的程序集、导出部件等相关数据。
MEF程序设计指南七:使用目录(Catalog)动态装载xap与目录筛选(Filtered Catalog)
如果不使用MEF进行托管扩展处理,只有通过WebClient进行程序包的下载、解析。实际上MEF的动态下载的底层实现一样是使用的WebClient,然后利用AggregateCatalog进行动态组合。
MEF程序设计指南八:部件生命周期(Parts Lifetime)托管
MEF中的每一个可进行动态装配的导出部件都是具有生命周期的,在没有特别需求的情况下一般都没有对生命周期进行管理,而实际上MEF已为每一个部件进行了默认的生命周期管理,MEF的生命周期分为三种:Any、Shared及NonShared,被定义在System.ComponentModel.Composition.CreationPolicy枚举对象中。
MEF程序设计指南九:重组(Recomposition)MEF部件
通过前面八篇程序设计指南的学习,相信大家都知道应用程序部件的组合都是在初始化的时候进行装配的。如果当应用程序已经初始化完成了,此时又有新的部件被导入且进行装配,按照目前的实现方式就无法实现了,我们需要一种可以进行动态装配、动态组合以及可以动态的进行新的部件被装配组合的通知的功能,于此MEF所提供的重组(Recomposition)部件特性就可以派上用场了。
MEF官方网站:http://mef.codeplex.com/
相关说明
本文属学习笔记文章,愿与有志者共同学习交流。欢迎转载,但请在明显地位标记本文的原文连接。
作 者:Beniao
[转]MEF程序设计指南的更多相关文章
- 《MEF程序设计指南》博文汇总
<MEF程序设计指南>博文汇总 在MEF之前,人们已经提出了许多依赖注入框架来解决应用的扩展性问题,比如OSGI 实现以Spring 等等.在 Microsoft 的平台上,.NET Fr ...
- [zhuan]《MEF程序设计指南》博文汇总
http://www.cnblogs.com/beniao/archive/2010/08/11/1797537.html 在MEF之前,人们已经提出了许多依赖注入框架来解决应用的扩展性问题,比如OS ...
- 【转】MEF程序设计指南四:使用MEF声明导出(Exports)与导入(Imports)
在MEF中,使用[System.ComponentModel.Composition.ExportAttribute]支持多种级别的导出部件配置,包括类.字段.属性以及方法级别的导出部件,通过查看Ex ...
- MEF程序设计指南
############################################################################################## ##### ...
- [转]《MEF程序设计指南》博文汇总
在MEF之前,人们已经提出了许多依赖注入框架来解决应用的扩展性问题,比如OSGI 实现以Spring 等等.在 Microsoft 的平台上,.NET Framework 自身内部包含组件模型和 Sy ...
- 【转】MEF程序设计指南五:迟延(Lazy)加载导出部件(Export Part)与元数据(Metadata)
MEF中使用导出与导入,实质上就是对一个对象的实例化的过程,通过MEF的特性降低了对象的直接依赖,从而让系统的设计达到一种高灵活.高扩展性的效果.在具体的设计开发中,存在着某些对象是不需要在系统运行或 ...
- 【转】MEF程序设计指南三:MEF中组合部件(Composable Parts)与契约(Contracts)的基本应用
按照MEF的约定,任何一个类或者是接口的实现都可以通过[System.ComponentModel.Composition.ExportAttribute] 特性将其定义为组合部件(Composabl ...
- 【转】MEF程序设计指南二:Silverlight中使用CompositionInitializer宿主MEF
MEF可以在传统应用程序中使用(包括桌面的Winform.控制台程序和Web的ASP.NET),也可以在RIA的Silverlight中使用.在Silverlight中只是宿主的方式有所不同,实际上在 ...
- 【转】MEF程序设计指南一:在应用程序中宿主MEF
在应用程序中宿主MEF其实非常简单,只需要创建一个组合容器对象(CompositionContainer)的实例,然后将需要组合的部件(Parts)和当前宿主程序添加到容器中即可.首先需要添加MEF框 ...
随机推荐
- scala 中List的简单使用
/** * scala 中List的使用 * */ object ListUse { def main(args: Array[String]): Unit = { def decorator(l:L ...
- Python 学习杂项
#print("Hello World!") #name = "nihfjkds" age = 454 num1 = 1 num2 = 2 #print(nam ...
- sublime 3打开中文乱码问题
首先到官网 https://packagecontrol.io/installation#Simple 下载一个控制台支持的扩展包Package Control.sublime-package 在su ...
- csp-s模拟测试85
csp-s模拟测试85 $T1$全场秒切没有什么区分度,$T2$全场成功转化题意但是我并不会打,$T3$暴力都没打很遗憾. 100 00:21:49 02:56:35 02:56:49 135 02: ...
- iOS 5 ARC 入门
这篇文章还可以在这里找到 英语, 波兰语 Learn the ins and outs of ARC in iOS 5! 这是iOS 5 盛宴中的第12篇教程! 这篇教程是我们的新书 iOS 5 By ...
- 阿里P8架构师谈:数据库分库分表、读写分离的原理实现,使用场景
本文转载自:阿里P8架构师谈:数据库分库分表.读写分离的原理实现,使用场景 为什么要分库分表和读写分离? 类似淘宝网这样的网站,海量数据的存储和访问成为了系统设计的瓶颈问题,日益增长的业务数据,无疑对 ...
- VS2010-MFC(字体和文本输出:文本输出)
转自:http://www.jizhuomi.com/software/241.html 上一节讲了CFont字体类,本节主要讲解文本输出的方法和实例. 文本输出过程 在文本输出到设备以前,我们需要确 ...
- day 54 Django基础四之模板系统
Django基础四之模板系统 本节目录 一 语法 二 变量 三 过滤器 四 标签Tags 五 模板继承 六 组件 七 自定义标签和过滤器 八 静态文件相关 一 语法 模板渲染的官方文档 关于模 ...
- JS之缓冲动画
原素材 main.html <!DOCTYPE html> <html lang="en"> <head> <link href=&quo ...
- JPA默认方法查询遇到转JSON的处理
JPA提供的findAll等查询方法在有关联的对象时 比如:在查userInfo @Entity@Table(name = "user_info")public class Use ...