Managed Extensibility Framework (MEF) 是用于创建可扩展的轻量级应用程序的库。 它让应用程序开发人员得以发现和使用扩展且无需配置。 它还让扩展开发人员得以轻松地封装代码并避免脆弱的紧密依赖性。 MEF 让扩展不仅可在应用程序内重复使用,还可以跨程序重复使用。
最近闲来无事,想着搞点事情来着,想搞一个工具箱程序,又想着自由灵活点,于是就选用了MEF.这玩意适用于小的项目,可以方便的做出一个插件开发系统.
起因:工作需要针对不同类型的文件做不同的处理。打个比方,txt文件,直接打印,doc文件,直接发email,jpg文件,上传xxx相册站点。
分离关注( Separation of Concerns : SOC)是Ioc模式和AOP产生最原始动力,通过功能分解可得到关注点,这些关注可以是 组件Components, 方面Aspects或服务Services。
本篇主要描述GIX4项目中如何把单独的模块设计为一个“插件”,如何把它组装到系统中。至于为什么加引号,之后会有说明。 原理 在基于产品线开发时,7,2,1的产品功能分类中,20%的功能是需要在产品线主干中包含进来的。这些功能一般会被设计为“可选包”。在某一客户版本产品的装配阶段,在“可选包”集合中挑选需要的功能,进行组装,得到最终的产品。具体内容,见:《软件产品线工程方法:如何在OpenExpressApp做客户化工作》。 在基于OpenExpressApp框架的GIX4项目中,“合
在.NET平台用C#这么久,自然会发现其版本很多,相应的概念也会很多,常常都是萌萌哒。而在实际工作中经常会遇到需要配置dll版本号,公钥token等场景,因而对C#、NET、CLR、框架类型等基础概念有个大略的了解有很大必要性。当涉及到程序集版本时,注意查看全局程序集缓存GAC(Global Assembly Cache),路径为c:\windows\assembly,还有几个相似的.net framework路径,同时可以使用IL Disassembler (x64)查看DLL中所引用的外部库信息。
MEF,全称Managed Extensibility Framework(托管可扩展框架)。单从名字我们不难发现:MEF是专门致力于解决扩展性问题的框架,MSDN中对MEF有这样一段说明:
在http://www.cnblogs.com/aehyok/p/3386650.html前面一节主要是对MEF进行简单的介绍。本节主要来介绍如何在Asp.Net Mvc3.0中使用MEF。
用于标准化生命周期服务编排的LSO Sonata API是本周MEF年会的热门话题之一。 LSO Sonata API使用程序化的API到API接口,允许服务提供商在独立的SDN架构之间实现自动化配置服务。
Joseph Fultz Chris Mabry 下载代码示例 过去几个月中,我和一位同事一直在从事一个利用 Microsoft Extensibility Framework (MEF) 的项目。
发布于 2018-01-17 15:41 更新于 2018-09-01 00:13
如果想深入学习Caliburn.Micro,Bootstrapper和IOC容器配置是重中之重,一定要弄清楚,否则很难理解CM的工作方式。
本文主要把MEF作为一种IOC容器进行讲解,.net中可用的IOC容器非常多,如 CastleWindsor,Unity,Autofac,ObjectBuilder,StructureMap,Spring.Net等,这些第三方工具各不相同,但功能大体都相同,大都需要事先对接口与实现进行配对(通过代码或配置文件),然后由系统自动或手动来通过接口来获得相应实现类的实例,对象实例化的工作由IOC容器自动完成。
在程序中使用框架必然要有一个切入点,框架会在这里进行初始化,处理相关配置等。在Prism中扮演这一角色的就是Bootstrapper。
MEF是微软自家的托管可扩展框架,在这里我把它用成了ioc容器。在Caliburn.Micro框架下,view和viewmodel被注入到CompositionContainer容器中,然后通过名称可以实现view和viewmodel的匹配。利用这一特点,在多人合作项目开发中,一个解决方法就可以拆分成很多个项目,只用在主项目中搭建框架,每个分支项目开发好以后加载到容器中,就可以实现界面和逻辑的调用,可能这样解释有点生涩,具体我们看下面实例再去理解。
Nicholas Blumhardt经过了2年多的开发,设计和试验,Autofac发布了第二版,针对1.4版本进行了重组,提供了更好的开发体验,你可以到这里下载正式的版本。 2.1版本也带来许多新特性: 组件发现:Autofac 2可以从一个程序集的注册类型设置根据用户指定的规则: var dataAccess = Assembly.GetExecutingAssembly(); builder.RegisterAssemblyTypes(dataAccess) .
最近有个产品需要设计重构,主要后端是C#和前端是Android程序,后端也考虑过微服务,但是觉得根据用户体量来说,有点太重了,但是也是想要团队分工,所以就考虑了MEF的方式,原来MEF的插件方式在《C# MEF插件的使用及Demo分享》的文章中介绍过,不过当时用的是WinForm版本,现在是要在NET5上使用,所以就专门做了DEMO程序来验证可行性。
当 WPF 客户端需要实现插件系统的时候,一般可以基于容器或者进程来实现。如果需要对外部插件实现异常隔离,那么只能使用子进程来加载插件,这样插件如果抛出异常,也不会影响到主进程。WPF 元素无法跨进程传输,但是窗口句柄(HWND)可以,所以可以将 WPF 元素包装成 HWND,然后通过进程间通信将插件传输到客户端中,从而实现插件加载。
MEF本周推出了与MEF 3.0架构相关的两个新的规范,这两个规范是在MEF声明周期服务编排(LSO)参考架构内开发的,目标是在多网络技术域实现编排架构。 今天发布的两个MEF 3.0相关的编排规范主
目前最新的PRISM的版本是8.1.97,本节以6.3.0.0 讲解,可以在Github上获取PRISM的源码。
Managed Extensibility Framework MEF, MEF2 是属于 .Net 基金会的一个项目,本文将简要介绍该项目相关的信息。
标准通过提供互操作性和提高意识,推动技术市场向前发展。为此,作为一个支持服务提供商社区标准化的行业组织MEF,周二在其年度MEF18会议上发布了一套广泛的软件定义广域网(SD-WAN)规范。
这是一篇单一图像对比度增强的论文,传统的单一图像对比度增强方法包括基于HE和Retinex理论,但由于自然场景的复杂性和单张图像包含的信息有限,往往很难产生高质量的结果。因此有了基于多曝光图像序列的图像增强,主要有多曝光图像融合(MEF)和高动态范围图像堆叠(stack-based HDR image),再加上色调映射,但这些序列图像中会,存在模糊或者物体移动,导致得到的结果产生伪影。 为了解决上述问题,这篇文章构造了一个大规模的多曝光率图像数据集,包含不同曝光率的低对比度图像及其对应的高质量ref图像,这个对应的ref图像是通过现有的13中MEF和HDR堆叠等方法生成的效果最好的一种,这样就可以用一张图像作为输入,通过网络学习来达到MEF的目的,作者很巧妙地构造了这样一个数据集,使得单图输入也可以实现多图像输入的结果。 网络的设计也不是特别复杂,作者刚开始直接使用一个15层的网络端到端的学习,发现效果不是很好,然后参考了一些其他论文的方式,图像低频信息代表整体自然度,高频信息代表局部细节,先把图像分为高频和低频部分,对两部分分别进行增强,若直接合并两部分的结果效果不是很好,所以作者把增强后的两部分进行合并后再通过一个网络进一步增强,最终得到对比度增强的结果。训练的时候,先分别训练这两个stage,用第一阶段训练好的参数再来训练第二阶段的网络。两个阶段训练完后,移除第一阶段的两个loss,使用DSSIM作为loss来fine-tune整个网络。
很多初学者都会问一个问题,什么是SD-WAN?这个问题的答案取决于你问的是谁,不同的人给与你的答案可能截然不同。
MEF正与多家SD-WAN供应商合作开发MEF 3.0多厂商SD-WAN实施项目,这将使服务提供商更容易通过MEF 3.0架构部署SD-WAN。 该项目是服务提供商日益关注多厂商多个SD-WAN解决方
据电信公司的Anil Simlot称,在虚拟化方面,CenturyLink通过使用内部开发的软件和工具开辟了自己的道路。
11月初,VMware收购SD-WAN初创公司VeloCloud的新闻怒刷了朋友圈,也再一次将SD-WAN推向了业界关注的热点。本周,国内SD-WAN初创公司大河云联(DAHO)获得了MEF(Metro Ethernet Forum,城域以太网论坛)的认可,其CanalON入围MEF Award第三类网络技术解决方案,同时获得提名的还有Silver Peak、VeloCloud等厂商。这是中国的SD-WAN创业公司首次入围MEF的全球大奖,是中国技术获得全球认可的标志。 作为全球网络领域久负盛名的评选,
NuGet Gallery (nuget.org) 是一个中心化的报管理中心,可以为全世界的作者和用户提供包管理服务。
MEF、TM论坛正在与多个服务提供商合作,致力于标准化生命周期服务编排(LSO)应用程序编程接口(API),以跨多个网络协调服务。 参与LSO API标准制定的服务提供商包括AT&T、Orange、C
使ModuleCatalog和MEF的ComposablePartsCatalog成为一体
SD-WAN近几个月已成为采用和行业重点的热点领域,随着它的快速发展,越来越多的服务提供商争相提供SD-WAN作为管理服务,很明显的是企业和运营商也希望从SD-WAN市场中分一杯羹。 成立于2001年
Managed Extensibility Framework (MEF) 旨在为 Microsoft .NET Framework 开发人员提供一种简便的方法来构建松散耦合的应用程序。MEF 版本 1 的主要重点是可扩展性,以使应用程序开发人员可以向第三方开发人员公开某些扩展点,并使第三方开发人员可以构建这些组件的加载项或扩展。用于扩展 Visual Studio 本身的 Visual Studio 插件模型就是一个很好的使用案例,您可以阅读 MSDN 库页面“开发 Visual Studio 扩展”(b
MEF(Managed Extensibility Framework)是.NET Framework 4.0一个重要的库,Visual Studio 2010 Code Editor的扩展支持也是基于MEF构建的。
2021年9月16日,根据埃默里大学 (EU) 进行的调查报告和研究诚信办公室 (ORI) 在其监督审查中进行的额外分析,ORI 发现王雅(音译,Wang Ya) , 医学博士, 博士,Winship 癌症研究所放射肿瘤学系实验放射肿瘤学部退休教授和主任,在美国公共卫生服务 (PHS) 基金支持的研究中从事不当行为,特别是在已经发表的JBC,Cell Death & Disease, Cancer Research 等6篇文章中从事学术不当行为。
QuickStartBootstrapper类型继承自MefBootstrapper类型
自从学习.NET以来,优雅的编程风格,极度简单的可扩展性,足够强大开发工具,极小的学习曲线,让我对这个平台产生了浓厚的兴趣,在工作和学习中也积累了一些开源的组件,就目前想到的先整理于此,如果再想到,就继续补充这篇日志,日积月累,就能形成一个自己的组件经验库。
最近做的项目使用mvc+webapi,采取前后端分离的方式,后台提供API接口给前端开发人员。这个过程中遇到一个问题后台开发人员怎么提供接口说明文档给前端开发人员,最初打算使用word文档方式进行交流,实际操作中却很少动手去写。为了解决这个问题,特意在博客园中搜索了一下api接口文档生成的文章,引起我注意的有两种方案。1.微软自带的Microsoft.AspNet.WebApi.HelpPage 2.swagger(我比较喜欢戏称为“丝袜哥”)
这段时间园子里有不少介绍IOC组件的文章,由于自己也一直在学习IOC的各种组件,及IOC的思想,常见的IOC组件很多:AutoFac、Ninject、Utity包括.NET自带的MEF等。由于今天周六,女朋友去加班了(也是一枚标准的程序媛,做java开发),闲来没事,自己就想着根据反射可以自己写一个简易的IOC组件。IOC组件说白了就是根据反射实例化对应的接口。废话不多说,开始说说我的解决方案。
在增强弱光图像时,许多深度学习算法都是基于Retinex理论的,不过Retinex模型没有考虑隐藏在黑暗中或由点亮过程引入的损坏。
Managed Extensibility Framework(MEF)是.NET平台下的一个扩展性管理框架,它是一系列特性的集合,包括依赖注入(DI)以及Duck Typing等。MEF为开发人员提供了一个工具,让我们可以轻松的对应用程序进行扩展并且对已有的代码产生最小的影响,开发人员在开发过程中根据功能要求定义一些扩展点,之后扩展人员就可以使用这些扩展点与应用程序交互;同时MEF让应用程序与扩展程序之间不产生直接的依赖,这样也允许在多个具有同样的扩展需求之间共享扩展程序。进一步了解MEF可以
本系列将继《.net wpf快速入门教程》带领大家了解wpf,帮助各位在初级向中级过渡的中掌握基本该具备的能力。本系列视频长度大约在15分钟到30分钟左右,视频内容不仅仅会讲解技能还会分享面试中常见的问题。
Managed Extensibility Framework(MEF)是.NET平台下的一个扩展性管理框架,它是一系列特性的集合,包括依赖注入(DI)等。MEF为开发人员提供了一个工具,让我们可以轻松的对应用程序进行扩展并且对已有的代码产生最小的影响,开发人员在开发过程中根据功能要求定义一些扩展点,之后扩展人员就可以使用这些扩展点与应用程序交互;同时MEF让应用程序与扩展程序之间不产生直接的依赖,这样也允许在多个具有同样的扩展需求之间共享扩展程序。
本周二领先的全球软件定义网络开源平台OpenDaylight发布了第六个版本——碳(Carbon),OpenDaylight碳版本的发布增加新的功能,以更好地支持城域以太网、有线运营商以及物联网(Io
使用bootstrapper,你可以更方便的控制Prism类库组件与你的应用程序之间的关系
SDN:软件定义网络(Software Defined Network,SDN),是一种新型的网络创新架构,是网络虚拟化的一种实现方式,其核心技术OpenFlow通过将网络设备的控制面和数据面分离开来,从而实现了网络流量的灵活控制,使网络作为管道变得更加智能。 NFV:网络功能虚拟化(Network Function Virtualization),通过X86等通用硬件以及虚拟化技术,来承载很多功能的软件处理。从而降低网络昂贵的设备成本,可通过软硬件解耦及功能抽象,使网络设备不在依赖于专用硬件,资源可以充分
在软件定义网络(SDN)和网络功能虚拟化(NFV)开源工作的头几年,开源工作的目标相对模糊,但今年开源工作的进展有了3个明显的趋势。 首先,CORD项目变得越来越受业界的欢迎。CORD项目在2016年
编者按:如果说MEF(城域以太网论坛)的第三类网络愿景在前几年的时候还是个美好的愿望,那么在今年SDN/NFV技术的发展,成为了第三类网络实现的基础,在MEF主席陈子湳眼中第三类网络即将到来。 在20
在ASP.NET Core中使用依赖注入中使用很简单,只需在Startup类的ConfigureServices()方法中,通过IServiceCollection接口进行注入即可,其它的无需关心。
本文为52CV粉丝cyh投稿,介绍了 ICCV 2023 上的新工作《Retinexformer: One-stage Retinex-based Transformer for Low-light Image Enhancement》。
领取专属 10元无门槛券
手把手带您无忧上云