MEF(Managed Extensibility Framework)是.NET Framework 4.0一个重要的库,Visual Studio 2010 Code Editor的扩展支持也是基于 MEF构建的。 MEF组合过程
1.创建组件目录(如AssemblyCatalog)
2.创建组合容器CompositionContainer
3.创建一个组件
4.从组件容器获取其它组件功能定义,执行匹配组合
var 贴点简单事例代码吧,看下用法,具体的机制大家慢慢研究吧,MEF基于net framework 4.0,不用引入第三方类库,使用也是挺方便的:
///
attribute ImportingConstructor. image.png Export: This attribute is used to register a class into MEF PartCreationPolicy The attribtue is used with attribute Export, tell MEF the class creation policy,
选择MEF方式 .net中可用的IOC容器非常多,如 CastleWindsor,Unity,Autofac,ObjectBuilder,StructureMap,Spring.Net等,这些第三方工具各不相同 MEF相对于上面的这些IOC容器有什么优势呢? 下面是我推荐的理由: 1..net4.0 自带:MEF的功能在 System.ComponentModel.Composition.dll 程序集中,直接引用即可使用,不用安装第三方组件 2.0 配置: MEF是不需要使用配置文件或代码对接口与实现进行一一配对的,只需要简单的使用几个Attribute特性,就能自动完成源与目标的配对工作 3.自动化:系统初始化时自动遍历程序目录或指定文件夹下的dll,根据程序集中接口与类的特定
1.概要 什么是MEF? Managed Extensibility Framework (MEF) 是用于创建可扩展的轻量级应用程序的库。 它让应用程序开发人员得以发现和使用扩展且无需配置。 MEF 让扩展不仅可在应用程序内重复使用,还可以跨程序重复使用。 如果聊到MEF不得不提到的是IoC(IoC-Invertion of Control),即控制反转。它是一种程序设计指导思想。 而MEF、Unity、MAF(包括Prism框架部分)、Ninject、StructureMap、Autofac等,都是IoC思想的具体实现。 使用场景:为类或成员添加描述信息,然后在使用的时候拿到该信息 (7)MEF提供三种方式发现部件 AssemblyCatalog 在当前程序集发现部件。 2.详细内容 源码地址:https://github.com/JusterZhu/Further-learning-WPF/tree/main/P8MEF IoC(MEF)容器 using Chapter8
MEF入门之不求甚解,但力求简单能讲明白(一) 起因:工作需要针对不同类型的文件做不同的处理。打个比方,txt文件,直接打印,doc文件,直接发email,jpg文件,上传xxx相册站点。 MEF就是微软自家的托管可扩展框架,在这里被我用成了ioc容器,其他的功能,不求甚解。 我们先拿MEF练练手,再应用到具体的项目中。概念什么的先扔到一边。 新建一个控制台应用程序项目和一个类库项目,两个项目均引用MEF库。类库项目中新建三个类文件。 从这个小例子,我们可以学到,使用MEF三步骤:1、导出所需的类型(部件),2、在合适的目录(AssemblyCatalog、DirectoryCatalog)中查找。3、将找到的部件加入到容器。
Managed Extensibility Framework MEF, MEF2 是属于 .Net 基金会的一个项目,本文将简要介绍该项目相关的信息。 Managed Extensibility Framework (MEF, MEF2) Managed Extensibility Framework (MEF) 为大型应用程序提供了一个组合层,以改善应用程序的灵活性 因此,在微软的项目之外,用到 MEF 的似乎并不多见。 有趣的是,为了项目的特殊性, MEF 在微软中其实有至少三个不同的版本:Differences between .NET MEF, NuGet MEF and VS MEF 英文介绍 Managed Extensibility Framework (MEF, MEF2) The Managed Extensibility Framework (MEF) is a composition layer for .NET that
MEF本周推出了与MEF 3.0架构相关的两个新的规范,这两个规范是在MEF声明周期服务编排(LSO)参考架构内开发的,目标是在多网络技术域实现编排架构。 MEF 59主任兼高级系统工程师Andrea Mazzini表示:“MEF在多载波、多厂商、多技术环境中为服务和资源的无缝管理发挥了主导作用,可互操作的网络管理模式是MEF愿景的基本组成部分,在标准化敏捷 网络资源调配——接口配置文件规范(MEF 60) MEF 59也是第二个规范发布的基础,该版本是称为“接口配置文件规范(MEF 60)”的网络资源配置规范。 目前MEF提供三种认证,分别是MEF电信级以太网认证专家(MEF-CECP)和MEF网络基础(MEF-NF)认证以及本周新推出的SDN/NFV专家认证,获得了全部三项认证的人员,将获得MEF网络专家认证 MEF总裁Nan Chen表示:“MEF-SDN/NFV认证是计划构成MEF专业认证架构的基础、专业、专家和大师级认证系列中最新的认证。
为此,作为一个支持服务提供商社区标准化的行业组织MEF,周二在其年度MEF18会议上发布了一套广泛的软件定义广域网(SD-WAN)规范。 ? MEF的目标是通过定义市场和标准来阻止这种混乱。MEF还为那些需要深入研究术语的真正极客发布了SD-WAN术语指南。 SD-WAN服务定义是加速销售、市场采用和认证MEF 3.0 SD-WAN服务的基础性步骤,这些服务由自动化网络的全球生态系统编排。 MEF表示这项计划针对四个目标: 减少市场对服务组件,核心功能和相关概念的困惑,从而节省宝贵的时间。 许多服务提供商和技术供应商已经为MEF SD-WAN服务规范工作做出了贡献或提供了支持。
本篇将带你实现通用参数设置,在阅读之前你需要了解的知识,ASP.NET MVC,Entity Framework,MEF。在线预览地址:http://config.myscloud.cn ? 回到顶部 关键代码解析 1.初始化(Global.asax.cs) //1.MEF初始化 MefConfig.Init(); //2.EF初始化 EFInitializer.UnSafeInit(); set { if (_allConfig == null) { _allConfig = value; } } } 通过MEF
在本文中,我首先介绍一些使用 MEF 等系统的原因。如果您是一个经验丰富的 MEF 开发人员,则可以跳过此部分。 “日期” MEF 中的另一个非常有用的功能是,能够将元数据添加到部件中。 无缝开发 在本文中,我介绍了约定驱动的配置,这是 MEF 的一个新功能,它是在 RegistrationBuilder 类中公开的,可以大大简化与 MEF 有关的开发工作。 具有讽刺意味的是,RegistrationBuilder 可以使您的日常开发活动不再那么以 MEF 为中心,您在项目中使用 MEF 是高度无缝的。 经验表明,无论什么代码“正常工作”,在开始遵循指定的约定时,您可以获得在应用程序中使用 MEF 的好处,而无需亲自编写一行 MEF 代码。
在本文中,我们将看看如何使用 MEF 使云部署更易于管理一点、更灵活一些。MEF(以及 Unity 之类的类似框架)是一种软件结构,可将开发人员从管理依赖关系解析、对象创建和实例化等工作中释放出来。 您可能不时会发现自己在撰写工厂方法或在构造函数或所需初始化方法内创建依赖对象,但借助 MEF 之类的框架,大部分此类工作不再是必需的了。 Microsoft .NET Framework 4.5 将给 MEF 带来一些改进,将允许放宽当前围绕容器中的泛型的一些约束。 我们具有两个规则,一个针对电话号码,一个针对姓名,并且具有一个诊断库,它们都将通过 MEF 容器提供。 使用 MEF 之类的框架有许多原因,但这有点超出了我们在本文中重点介绍的功能。
MEF正与多家SD-WAN供应商合作开发MEF 3.0多厂商SD-WAN实施项目,这将使服务提供商更容易通过MEF 3.0架构部署SD-WAN。 MEF将记录实施状况,服务提供商可以通过该项目加速在MEF 3.0架构内采用SD-WAN进程。 MEF基于LSO的方法假设每个SD-WAN供应商在其SD-WAN控制器产品上启用标准北向LSO NRP API(在MEF 60中定义)。 MEF 60正式名称为LSO Presto NRP接口配置文件规范,是MEF内服务提供商和供应商成员之间的协作以及利用ONF的TAPI模型进行网络资源激活和拓扑的外部协作的结果。 此规范在发布时将为MEF 3.0在LSO、MEF信息模型、策略驱动的编排、意图和其他主要项目上为SD-WAN服务的应用铺平道路,从而将它们无缝集成到日益自动化的MEF 3.0生态系统。
MEF简介 MEF,全称Managed Extensibility Framework(托管可扩展框架)。 单从名字我们不难发现:MEF是专门致力于解决扩展性问题的框架,MSDN中对MEF有这样一段说明: Managed Extensibility Framework 或 MEF 是一个用于创建可扩展的轻型应用程序的库 通过 MEF,不仅可以在应用程序内重用扩展,还可以在应用程序之间重用扩展。 开始编码 我们新建一个桌面应用程序项目起名为MefDemo ? 在Form1下面增加一个MenuStrip,改名为ms ? ---- 下面的自己做的这个MEF的DEMO演示视频: ?
Managed Extensibility Framework(MEF)是.NET平台下的一个扩展性管理框架,它是一系列特性的集合,包括依赖注入(DI)以及Duck Typing等。 MEF为开发人员提供了一个工具,让我们可以轻松的对应用程序进行扩展并且对已有的代码产生最小的影响,开发人员在开发过程中根据功能要求定义一些扩展点,之后扩展人员就可以使用这些扩展点与应用程序交互;同时MEF 进一步了解MEF可以看看TerryLee的文章:使用Managed Extensibility Framework方便的扩展应用程序 MEF之前放到了CodePlex的时候所使用的协议并不是开源协议 MEF现在采用MS-PL协议和社区的声音和微软员工的努力分不开,以及微软认同开源社区的价值。 大家也许已经知道开源项目Castle项目的创始人Hamilton Verissimo,加入了微软,担任微软MEF项目经理,这是它在Msdn的 Hamilton Verissimo blog。
MEF为开发人员提供了一个工具,让我们可以轻松的对应用程序进行扩展并且对已有的代码产生最小的影响,开发人员在开发过程中根据功能要求定义一些扩展点,之后扩展人员就可以使用这些扩展点与应用程序交互;同时MEF 实际上MEF提供了发现和组合的能力使你的应用程序可以加载扩展,为运行时的可扩展性提供了一种简单的解决方法: MEF为宿主应用提供了一种标准的途径来暴露自身并使用外部扩展。 扩展之间也可以存在依赖关系,MEF则会自动将它们按照正确的顺序进行调用。MEF还提供了一些用来定位和加载可用扩展的方法。MEF允许使用附加元数据对扩展进行标记,从而达到易于丰富的查询和筛选的目的。 简短说一下MEF的工作原理,MEF的核心包括一个catalog和一个CompositionContainer。category用于发现扩展,而container用于协调创建和梳理依赖性。 MEF原理上很简单,找出有共同接口的导入、导出。然后找到把导出的实例化,赋给导入。说到底MEF就是找到合适的类实例化,把它交给导入。
MEF的通信研究总监Stan Hubbard在给FierceTelecom的电子邮件中表示,MEF批准的LSO Sonata API将于今年晚些时候发布。 “我们目前的计划是在MEF 18期间发布正式的MEF批准的LSO Sonata API,LSO Sonata API为产品提供产品资格,库存,报价和订购等服务,”Hubbard写道。 MEF和TM论坛一直在合作开发API,以加快开发速度并避免其他组织或公司做重复工作。 所有这些又回到了MEF正在进行的LSO API工作。 关于LSO Sonata MEF开发了一个标准化生命周期服务编排的参考框架。它包括一组功能性的管理实体,这些实体支持MEF 3.0生命周期服务编排。 MEF 55 LSO参考架构和框架文件描述了这些实体之间的七个参考点。MEF成员积极参与定义这些界面参考点,并从这7个参考点中创建开源的API。
更新于 2018-09-01 00:13 MEF,Managed Extensibility Framework,现在已经发布了三个版本了,它们是 MEF 和 MEF2。 ---- MEF 和 MEF2 其实微软发布了四个版本的 MEF: 随着 .NET Framework 4.0 发布,微软称之为 MEF 随着 .NET Framework 4.5 发布,微软让它更好用了 ,微软称之为 MEF2,但因为接口兼容,也直接称之为 MEF .NET 开发团队觉得 MEF 第一代性能太差,于是通过 NuGet 为移动设备发布了可移植类库,是个轻量级版本,只移植了 .NET Framework 里的 MEF2 性能太差,NuGet 版的 MEF2 功能太少,于是自己又写了一个,微软称之为 VS-MEF 对于第一代的 MEF,我们这里就完全不说了,性能又差功能又少,没有利用价值。 博客园 Is MEF or MEF2 baked into the .NET Framework?
前言 Managed Extensibility Framework(MEF)是.NET平台下的一个扩展性管理框架,它是一系列特性的集合,包括依赖注入(DI)等。 MEF为开发人员提供了一个工具,让我们可以轻松的对应用程序进行扩展并且对已有的代码产生最小的影响,开发人员在开发过程中根据功能要求定义一些扩展点,之后扩展人员就可以使用这些扩展点与应用程序交互;同时MEF MEF方式 MEF 提供一种通过“组合”隐式发现组件的方法。 MEF 组件(称为“部件-Part”)。 MEF原理上很简单,找出有共同接口的导入、导出。然后找到把导出的实例化,赋给导入。说到底MEF就是找到合适的类实例化,把它交给导入。 使用 MEF 编写的可扩展应用程序会声明一个可由扩展组件填充的导入,而且还可能会声明导出,以便向扩展公开应用程序服务。 每个扩展组件都会声明一个导出,而且还可能会声明导入。
最近闲来无事,想着搞点事情来着,想搞一个工具箱程序,又想着自由灵活点,于是就选用了MEF.这玩意适用于小的项目,可以方便的做出一个插件开发系统. 下面我先介绍一下MEF MEF简介 MEF可以方便的在c#程序中实现插件式开发。 使用MEF主要由4个步骤完成 1、定义插件插口 2、公开接口的实现类.
前言 在http://www.cnblogs.com/aehyok/p/3386650.html前面一节主要是对MEF进行简单的介绍。本节主要来介绍如何在Asp.Net Mvc3.0中使用MEF。 在MEF.Repository类库项目中建立一个ITestRepository的接口 namespace MEF.Repository { public interface ITestRepository 记得还需要引用命名空间 using System.ComponentModel.Composition; 实现MEF的注入工作 步骤大概分为四步 第一步:发现部件---这种方式是通过读取当前程序下的dll 为第一步中获取到的部件创建一个CompositionContainer实例 第三步:实现IDependencyResolver接口 第四步:注册到DependencyResolver //设置MEF