MEF技术

article/2025/9/15 0:21:03

MEF 是一个使开发人员能够创建“插件式应用程序”的技术,这里的“插件”是指在应用程序部署后开发人员能够通过开发“插件”来扩展应用程序功能。但不同之处是使用MEF框架您在系统设计阶段不需要考虑在应用程序部署后可能会有什么插件,MEF可以自动搜索这些插件。这也是为什么会叫他Managed Extensibility Framework。

一个简单的MEF示例,

假设系统中有如下需求
支付功能: 用户可以选择多种支付方式进行支付如支付宝,网银在线,财付通等等。

1. 定义支付接口及支付请求数据结构

2. 定义插件接口及插件元数据(用于标识插件信息)

3. 添加获取支付插件方法, 修改支付函数使支付支持多种支付方式

4.使用MEF实现支付接口

5. 编写第一个支付插件

6. 使用MEF容器注册插件

7. 目前系统中可用的插件只有“支付宝支付插件”,如果我们想添加一个新的网银在线插件

8. 插件元数据的定义:

9. 使用插件/刷新插件

  1. 拷贝需要的插件程序集至 ./bin/debug/plugins。(如Plugin.Payments.Echinabank.dll或 Plugin.Payments.Alipay.dll)MEF会自动加载plugins文件夹中的插件程序集。
  2. 刷新插件,拷贝新插件程序集至 ./bin/debug/plugins调用directoryCatalog.Refresh()函数. MEF会重新加载plugins文件夹中的插件程序集。

总结,MEF还是挺适合做.net程序的插件框架,使用MEF做插件主要有下面几个好处:

  1. 从.Net 4.0 开始微软已经把MEF内置在.Net Framework中,使用时只需要引用System.ComponentModel.Composition即可。
  2. 开源。
  3. 轻量级,不像Castle 或者 Spring之类的IoC使用起来比较复杂。
  4. 很容易实现动态搜索插件。
  5. 元数据功能使得插件有自描述能力不需要使用xml或者json来描述插件

相关资源

MEF 主页, MSDN 文档, MSDN 杂志 MEF vs IoC, .NET 4.0 MEF FAQ (Socket, Plug and extension) 

转载于:https://www.cnblogs.com/cw_volcano/p/3881276.html


http://chatgpt.dhexx.cn/article/QDZGPlSV.shtml

相关文章

【同时完成超分和MEF】

Deep Coupled Feedback Network for Joint Exposure Fusion and Image Super-Resolution (用于联合曝光融合和图像超分辨的深度耦合反馈网络) 如今,人们已经习惯了拍照来记录自己的日常生活,然而,照片实际上与真实的…

插件式框架与MEF

一、插件式架构设计意义 为什么采用插件式架构设计?业务上要求在应用程序部署完后,在不需要重新编译、安装应用程序的情况下,仍然可以对应用程序的功能进行扩展;为方便源码管理、项目管理、团队协作以及协同开发需求&…

.NET中间件 -- MEF2

MEF官方解释 : MEF(Managed Extensibility Framework)是一个用于创建可扩展的轻型应用程序的库。 应用程序开发人员可利用该库发现并使用扩展,而无需进行配置。 扩展开发人员还可以利用该库轻松地封装代码,避免生成脆弱的硬依赖项。 通过 MEF&#xff0c…

C# MEF入门讲解

MEF入门之不求甚解,但力求简单能讲明白(一) 起因:工作需要针对不同类型的文件做不同的处理。打个比方,txt文件,直接打印,doc文件,直接发email,jpg文件,上传xxx相册站点。 其实这个问…

Mef

hint: 宿主和插件都引用协议程序集 0-------------------------------------------- 从mef的角度来看,根本不需要接口协议, 协议可以是简单的字符串。 插件部分 [Export("cccd")] public class Foo{ public string Bar(){ retu…

MEF基础

https://www.cnblogs.com/yk123/p/5350133.html 之前公司里用到了一个叫MEF的东西,说来惭愧一直只管写代码却不曾理解MEF框架为何物,今天就来学习一下,这是一篇迟到了不知多久的博客。 --------------------------------------------------…

C# 依赖注入 MEF

1、什么是MEF 先来看msdn上面的解释:MEF(Managed Extensibility Framework)是一个用于创建可扩展的轻型应用程序的库。 应用程序开发人员可利用该库发现并使用扩展,而无需进行配置。 扩展开发人员还可以利用该库轻松地封装代码,避免生成脆弱…

MEF 基础简介 一

前言 小编菜鸟级别的程序员最近感慨颇多,经历了三五春秋深知程序路途遥远而我沧海一粟看不到的尽头到不了的终点何处是我停留的驿站。说了段废话下面进入正题吧! 什么是MEF? MEF:全称Managed Extensibility Framework(…

MEF插件式开发

一、MEF 简介 1、 Managed Extensibility Framework简称MEF,是WPF中的一种插件式开发的框架。其开发程序的主要优点如下: 易于将复杂程序进行拆分成不同的功能模块,然后进行多团队的协作。将各个功能编译成dll的形式提供给主程序&#xff0…

C#可扩展编程之MEF学习笔记(一):MEF简介及简单的Demo

在文章开始之前,首先简单介绍一下什么是MEF,MEF,全称Managed Extensibility Framework(托管可扩展框架)。单从名字我们不难发现:MEF是专门致力于解决扩展性问题的框架,MSDN中对MEF有这样一段说明&#xff1…

【C#进阶系列】【MEF框架(一)】

C#进阶系列 第一章 【C#进阶系列】【MEF框架(一)】 文章目录 C#进阶系列前言一、MEF介绍二、为什么要用MEF三、MEF的概念四、使用示例五、MEF框架的好处六、源码链接总结 前言 这里对MEF作了基本的介绍,包括使用了一个特定场景(…

【虚拟化生态平台】平台架构图思路和实现细节

设计思路 我需要一个内网生态,通过一个nginx访问到我所有的资源,内部实现细节我不关心,那么就需要一个nginx服务器来负载所有的服务服务器太多了,我不想一个个的记录ip去登录,那我就需要一个跳板机来记录我的服务器&a…

ARM平台的虚拟化介绍

本篇博文主要介绍虚拟化的基本思想以及在arm平台如何做虚拟化,arm提供的硬件feature等等。 虚拟化技术简介 虚拟化技术 虚拟化是一个概念,单从这个概念的角度来看,只要是用某一种物品去模拟另一种物品都可以称为虚拟化,甚至于有…

ARMv8虚拟化

1 概述 2 虚拟化简介 3 AArch64虚拟化 4 Stage-2地址转换 5 指令的陷入和模拟 6 虚拟化异常 7 虚拟化通用定时器 8 虚拟化主机扩展 9 嵌套虚拟化 10 安全空间的虚拟化 11 虚拟化的成本 12 小测验 13 其它参考文章 14 接下来的计划 1 概述 本文描述了ARMv8-64的虚…

虚拟化服务器环境搭建方案,虚拟化环境建设方案

虚拟化环境建设方案 市场背景: 随着IT技术的飞速发展,基础传统IT架构模式下的应用规模扩大,需要更多的服务器来支持业务的发展,同时出现了如下几个问题: 1.资源利用率低、闲置率高,运行效率低 2.应急处理响应时间慢、服务保障差 3.运行维护成本高 虚拟化的出现很好的解决…

搭建vmware虚拟化平台的基础配置,以及Hadoop平台的搭建

需要准备的东西: vmware workstations centos.iso hadoop3.3.0 mobaxterm/xshell/pietty/winscp jdk的tar包 第一步 : 安装centos操作系统 第二步 : 克隆虚拟机(也可以在hadoop安装后再克隆) 我们这里需要选择完整克隆…

WSL2 请启用虚拟机平台 Windows 功能并确保在 BIOS 中启用虚拟化

bcdedit /set hypervisorlaunchtype autoC:\WINDOWS\system32>bcdedit /set hypervisorlaunchtype auto 操作成功完成。

嵌入式虚拟化平台jailhouse踩坑笔记

目录 简介 相关论文 架构 jailhouse的应用示例 jailhouse 官方demo jailhouse的运行 jailhouse none-root cell中挂载nfs作为根目录启动linux 注意事项 jailhouse的配置 1.cell配置文件简介 2. cell文件的生成过程 2. .c配置文件内容解析 QEMU中实现jailhouse的…

搭建华为FusionCompute虚拟化平台

最小实验要求:两台服务器 1、通过BMC口安装CNA操作系统 远程光驱安装CNA,需要设置服务器从远程光驱启动,然后进入BIOS可以查看BMC控制台的用户名和密码,以及IP,一般服务器都默认有。然后登陆BMC的控制台,进…

服务器虚拟化 涉密,面向高安全服务器虚拟化领域应用研制的安全保密虚拟化平台...

中标麒麟服务器虚拟化系统是基于中标麒麟虚拟化平台软件V7,面向高安全服务器虚拟化领域应用研制的安全保密虚拟化平台;产品通过国家保密科技测评中心基于《涉密信息系统服务器虚拟化和桌面虚拟化产品安全保密技术要求》(BMB30-2017)的安全性检测。支持海…