`
izuoyan
  • 浏览: 9220790 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

《MEF程序设计指南》博文汇总

阅读更多
  在MEF之前,人们已经提出了许多依赖注入框架来解决应用的扩展性问题,比如OSGI 实现以Spring 等等。在 Microsoft 的平台上,.NET Framework 自身内部包含组件模型和 System.Addin。同时存在若干种开源解决方案,包括 SharpDevelop 的 SODA 体系结构和“控制反转”容器(如 Castle Windsor、Structure Map、Spring.Net 以及Unity)。

  虽然.NET平台下,包括MS在内的各种方案已经遍地开花,但是MEF是第一个随着CLR发布的解决方案。
  官方说法: Managed Extensibility Framework(MEF)是.NET平台下的一个扩展性管理框架,它是一系列特性的集合,包括依赖注入(DI)以及Duck Typing等。MEF为开发人员提供了一个工具,让我们可以轻松的对应用程序进行扩展并且对已有的代码产生最小的影响,开发人员在开发过程中根据功能要求定义一些扩展点,之后扩展人员就可以使用这些扩展点与应用程序交互;同时MEF让应用程序与扩展程序之间不产生直接的依赖,这样也允许在多个具有同样的扩展需求之间共享扩展程序。

  了一个月左右的休息时间将官方提供的MEF程序设计指南(The MEF Programming Guide)以及自己使用中的一些经验进行了整理,为了方便大家阅读特将此系列博文进行汇总,详细如下博文列表。


  MEF程序设计指南一:在应用程序中宿主MEF

  本篇通过一个简单的应用实例介绍了如何在应用程序中宿主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/

分享到:
评论

相关推荐

    Mef demo Mef demo

    Mef demoMef demo

    MEF框架源代码 MEF框架源代码 MEF框架源代码

    MEF的主要目的是简化应用程序的可扩展性和模块化,使得开发者可以轻松地添加、替换或更新应用组件,而无需修改核心代码。此框架为.NET应用程序提供了动态组合和发现功能,支持依赖注入(Dependency Injection,DI)...

    MEF 10.2.pdf

    MEF 10.2文档是关于metro ethernet技术的权威标准,名为“Technical Specification MEF 10.2 Ethernet Services Attributes Phase 2”,该文档于2009年10月27日发布。MEF,即Metro Ethernet Forum(城域以太网论坛)...

    C#MEF简单例子

    MEF 是一个由 Microsoft 开发的框架,用于实现应用程序的可扩展性和模块化。它提供了一种简单的方式来组合不同的组件,以创建一个功能强大且灵活的应用程序。 MEF 的主要概念 1. 组件(Component): MEF 中的组件...

    MAF_MEF_示例程序

    微软MAF——Managed Add-in Framework; 微软MEF——Managed Extensibility Framework;...本资源含2个MAF示例程序和1个MEF示例程序,在VS2010和VS2017下均编译通过。学习插件开发框架的同学们,绝对物超所值。

    mef与wcf整合

    MEF(Managed Extensibility Framework)是.NET Framework中一个用于构建可扩展应用程序的库,它允许开发者在运行时发现并使用外部组件,实现了插件式架构。而WCF(Windows Communication Foundation)是微软提供的...

    WPF prism MEF 架构

    - **插件架构(Plugin Architecture)**:MEF提供了一种机制,允许应用程序在运行时发现和加载外部组件,这些组件可以在不修改主应用程序的情况下添加新功能或扩展已有功能。 - **导出(Export)和导入(Import)**...

    MEF+WPF Demo

    **MEF(Managed Extensibility Framework)** 是微软推出的一个扩展性框架,它允许开发者在应用程序中方便地引入和管理插件或者模块。MEF 主要用于构建可扩展的应用程序,使得第三方开发者能够轻松地为应用程序添加...

    MEF(Managed Extensibility Framework)入门教程

    通过MEF,可以有效地管理和组装应用程序的各个部分,不管是将应用程序设计为能够接受各种插件,还是将功能模块化以便于复用,MEF都能够提供出色的支持。随着.NET技术的不断发展,MEF作为.NET生态系统中的一个重要...

    MEF导入usercontrol及服务

    MEF,全称为Managed Extensibility Framework,是一个用于构建可扩展应用程序的框架。它允许开发者创建可插入的组件,这些组件可以在运行时被发现并注入到应用中,无需显式地实例化它们。MEF的核心概念包括导出...

    MEF 结合 MVVMLight

    MEF是一个用于构建可扩展应用程序的.NET框架,而MVVMLight则是一个轻量级的MVVM(Model-View-ViewModel)设计模式实现库,它简化了UI和业务逻辑之间的解耦。** **MEF的主要功能包括:** 1. **组件发现**:MEF允许...

    WPF使用MEF方式实现插件化加载控件

    插件化允许我们把应用程序的不同部分设计为独立的模块,这些模块可以在运行时动态加载或卸载,而不会影响到其他部分。在WPF中,我们可以利用Managed Extensibility Framework (MEF) 来实现这一目标。 MEF是.NET ...

    C# MEF使用实例

    **C# MEF(Microsoft Managed Extensibility Framework)使用实例** C# MEF,全称为Microsoft Managed Extensibility Framework...在实际项目中,MEF提供的功能可以帮助我们实现模块化设计,使代码更加清晰和易于管理。

    MEF6-1协议

    标题:MEF6-1协议 描述:城域以太网系列MEF6-1协议,EVC分类详解,基础知识 知识点: 一、MEF6-1协议简介 MEF6.1是城域以太网论坛(Metro Ethernet Forum,简称MEF)于2008年4月发布的技术规范,其主要目标是定义...

    Mef实现的简单例子

    这个框架允许开发者轻松地引入外部组件,并在运行时发现和组合这些组件,以实现高度灵活和模块化的应用程序设计。MEF适用于那些需要频繁添加、修改或替换功能的大型系统,因为它提供了一种无需更改核心代码就能扩展...

    MEF框架整理学习内容

    **Managed Extensibility Framework (MEF)**,即托管可扩展性框架,是Microsoft在.NET平台下推出的一个用于解决应用程序扩展性的框架。在MEF发布之前,业界已经有多种依赖注入框架来解决软件系统的扩展性问题,例如...

    Mef_MEFwinForm_

    【描述】"c#的插件小例子程序,方便新手学习插件入门"表明这个项目是为初学者设计的,旨在帮助他们理解和掌握MEF在创建可扩展的、模块化的Windows Forms应用中的基本用法。通过这个例子,开发者可以学习到如何将应用...

    Prism4使用MEF的演示项目

    Managed Extensibility Framework (MEF) 是 .NET Framework 4.0 中引入的一个组件,它提供了一种简单而灵活的方式来实现应用程序的扩展性和插件架构。MEF 可以帮助开发者轻松地发现、组合和重用应用程序组件,而无需...

    Silverlight MEF 演示源代码

    MEF(Managed Extensibility Framework)是微软提供的一种用于构建可扩展应用程序的框架,它在Silverlight中扮演着重要角色,尤其是在大型复杂项目中,帮助开发者实现模块化和插件化。 在"Silverlight MEF 演示源...

    Silverlight Mef Demo

    Microsoft Expression Blend的Silverlight技术结合Managed Extensibility Framework (MEF) 提供了一种强大的方式来创建高度可扩展的应用程序。"Silverlight Mef Demo"就是这样一个示例,它展示了如何利用MEF来构建一...

Global site tag (gtag.js) - Google Analytics