插件式框架与MEF

article/2025/9/14 10:01:32

一、插件式架构设计意义
        为什么采用插件式架构设计?业务上要求在应用程序部署完后,在不需要重新编译、安装应用程序的情况下,仍然可以对应用程序的功能进行扩展;为方便源码管理、项目管理、团队协作以及协同开发需求,将业务逻辑关系分成独立的模块;架构设计需求,将模块解耦,分而治之。

在这里插入图片描述

【集成部署】

【插件式部署】

**插件式架构设计的核心是:业务模块动态加载,而非静态引用。**

二、MEF插件式框架介绍
1、介绍
        MEF(Managed Extensibility Framework)是微软为大型应用程序(比如Visual Studio)提供的一个功能扩展框架,通过一个混合层提升了灵活性、维护性和可测试性。MEF既可以用于第三方插件支持扩展功能,也能为常见的应用程序带来松耦合插件架构的好处。MEF现在已作为基础库,随.NET Framework中一起发布,命名空间System.ComponentModel.Composition;
2、版本说明

  • .NET Framework 版MEF

随.NET 4.0和Silverlight 4发布的内置MEF,称之为MEF1.0;命名空间:System.ComponentModel.Composition;这个版本提供了标准的扩展模型;Visual Studio 2010 中使用的是该版本;随.NET 4.5 发布了MEF2,该版本与.NET 4.0 中的MEF接口兼容,称之为MEF2.0;相比MEF1.0,MEF2.0更好用;这两个版本统称MEF
源码地址:https://github.com/MicrosoftArchive/mef
相关文档:
1)https://docs.microsoft.com/en-us/dotnet/framework/mef/
2)https://docs.microsoft.com/en-us/dotnet/framework/mef/attributed-programming-model-overview-mef

  • Nuget版MEF

        通过Nuget发布的轻量级版本,是由.NET Framework 中 MEF2 移植;命名空间System.Compostion,这是一个可移植版本,针对静态混合进行了优化,提供更快的混合,可以用于手机、商店应用、桌面和WEB应用之中。

  • .NET Core版本

由.NET Framework 中 MEF2 移植;
源码地址:https://github.com/dotnet/corefx/tree/master/src
.NET Core 中使用MEF:
http://weblogs.asp.net/ricardoperes/using-mef-in-net-core

  • VS-MEF

        Visual Studio 开发团队觉得 .NET Framework 里的 MEF2 性能太差,NuGet 版的 MEF2 功能太少,于是自己又写了一个,微软称之为 VS-MEF;从Visual Studio 2013开始就一直使用该版本
源码地址:https://github.com/microsoft/vs-mef.git


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

相关文章

.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)的安全性检测。支持海…

VA虚拟平台十大亮点

VA虚拟平台十大亮点 一、自适应多种安装环境、并可以手动调整二、兼容互联网上主流动态域名自动连接,并有自主的动态域名解析。三、系统稳定性有效保障和看门狗机制四、高级参数最大限度保障程序兼容性五、智能打印-动态调整、实时预览、多页排版、自动打印六、向下…

Linux虚拟化平台检测

如果要找出 Linux 系统运行在虚拟化平台中还是硬件服务器上,有多种方式可供大家选择,这主要取决于你的 hypervisor 或 container 环境。不同的虚拟化或容器技术会在其实例中引入不同的识别指纹,如:处理器厂商、特殊的 /proc 文件或…