首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在MEF和MAF之间选择(System.AddIn)

在MEF和MAF之间选择(System.AddIn)
EN

Stack Overflow用户
提问于 2009-05-07 06:59:25
回答 7查看 49.9K关注 0票数 166

托管扩展框架(MEF)和托管AddIn框架(又称System.AddIn)似乎完成了非常相似的任务。根据这个堆栈溢出问题,Is MEF a replacement for System.Addin?,你甚至可以同时使用两者。

什么时候你会选择使用一种而不是另一种?在什么情况下,您会选择同时使用这两个工具?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-05-08 07:34:33

我一直在评估这些选项,下面是我得出的结论。

MAF是一个真正的插件框架。您可以完全分离您的插件,甚至在单独的应用程序域中运行它们,这样即使插件崩溃,它也不会关闭您的应用程序。它还提供了一种非常完整的方法来解耦插件,使其不依赖于任何东西,而不依赖于您给它们的合同。事实上,在升级主应用程序时,您可以对合同适配器进行版本化,以提供对旧插件的向后兼容性。虽然这听起来很棒,但它带来了沉重的代价,你必须付出沉重的代价才能跨越应用程序域。您在速度和可以来回发送的类型的灵活性上付出了这样的代价。

MEF更像是依赖注入,具有一些额外的好处,如可发现性和...(在这一点上是空白的)。MAF的隔离程度在MEF中是不存在的。它们是针对两个不同事物的两个不同的框架。

票数 134
EN

Stack Overflow用户

发布于 2009-05-14 12:36:13

Danielg说的很好。我要补充的是:

如果你看了关于System.Addins的视频,他们显然是在谈论非常大的项目。他谈到一个team管理主机应用程序,另一个team管理每个AddIn,第三个team管理合同和管道。基于此,我认为System.Addins显然适用于更大的应用程序。我在考虑像SAP这样的ERP系统这样的应用程序(可能没有那么大,但你明白了)。如果你看过这些视频,你就会知道使用System.Addins的工作量非常大。如果你有很多公司为你的系统编写第三方插件,并且你不能违反任何一个被判死刑的插件合同,那么它将会工作得很好。

另一方面,MEF似乎与夏普开发的插件方案,Eclipse plugin架构或Mono.Addins有更多的相似之处。它比System.Addins更容易理解,我相信它也更灵活。你失去的东西是,你没有得到AppDomain隔离或强大的版本控制合同与MEF的开箱即用。MEF的优势在于,您可以将整个应用程序结构化为部件的组合,因此您可以为不同的客户提供不同配置的产品,如果客户购买了新功能,您只需将该功能的部件放入其安装目录中,应用程序就会看到并运行它。它还简化了测试。您可以实例化要测试的对象,并为其提供模拟对象的所有依赖项,但当它作为组合应用程序运行时,组合过程会自动将所有实际对象挂钩在一起。

我想提的最重要的一点是,尽管System.Addins已经在框架中了,但我没有看到很多人使用它的证据,但CodePlex只是坐在那里,理应包含在.NET 4中,人们已经开始用它构建很多应用程序(包括我自己)。我认为这告诉了你一些关于这两个框架的信息。

票数 66
EN

Stack Overflow用户

发布于 2009-08-05 06:43:48

已经开发并发布了MAF应用程序。我对MAF的看法有些厌倦。

MAF在最坏的情况下是一个“解耦”系统或“松散耦合”系统。MEF充其量是“耦合”系统或“松耦合”系统。

我们通过使用MAF实现的MAF好处是:

  1. 在应用程序运行时安装新组件或更新现有组件。AddIn可以在应用程序运行时进行更新,并且更新可以无缝地呈现给用户。您必须拥有基于已购买组件的that.
  2. Licensing AppDomains。我们可以控制用户的角色和权限加载哪些AddIn,以及AddIn是否获得使用许可。
  3. 快速开发(更快的上市时间)。QA开发完全符合敏捷方法论,开发团队一次只开发一个QA,而不必开发与application.
  4. Improved AddIn其余部分的集成部分(一次只开发一个AddIn组件)。然后,QA可以测试并发布单个功能的缺陷。测试用例更容易开发和implement.
  5. Deployment (在开发和发布时添加组件,它们就可以“正常工作”)。部署只需创建一个AddIn并安装文件即可。没有其他考虑因素,因为necessary!
  6. New组件可以与旧组件一起工作。早期开发的AddIn继续工作。新的AddIns可以无缝地融入应用程序
票数 61
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/835182

复制
相关文章
WPF 跨应用程序域的 UI(Cross AppDomain UI)
发布于 2017-11-12 16:36 更新于 2017-11-13 15:04
walterlv
2018/09/18
1.1K0
WPF 跨应用程序域的 UI(Cross AppDomain UI)
Ioc模式和MEF
  分离关注( Separation of Concerns : SOC)是Ioc模式和AOP产生最原始动力,通过功能分解可得到关注点,这些关注可以是 组件Components, 方面Aspects或服务Services。
aehyok
2018/09/11
4980
Kafka 和 Kinesis 之间的对比和选择
在对比 Kafka 和 Kinesis 和之前,我们需要对 Kinesis 有所了解。
HoneyMoose
2021/08/07
1.9K0
Kafka 和 Kinesis 之间的对比和选择
关于MEF
MEF(Managed Extensibility Framework)是.NET Framework 4.0一个重要的库,Visual Studio 2010 Code Editor的扩展支持也是基于MEF构建的。
Jerremy
2022/05/09
3950
Boruta 和 SHAP :不同特征选择技术之间的比较以及如何选择
当我们执行一项监督任务时,我们面临的问题是在我们的机器学习管道中加入适当的特征选择。只需在网上搜索,我们就可以访问讨论特征选择过程的各种来源和内容。
deephub
2021/07/23
3.2K0
Boruta 和 SHAP :不同特征选择技术之间的比较以及如何选择
在 Linux 和 FreeDOS 之间复制文件
我曾经通过计算第一个 DOS 分区的偏移量来访问我的虚拟磁盘镜像,然后用正确的选项组合来调用 Linux 的 mount 命令来匹配这个偏移量。这总是很容易出错,而且不是很灵活。幸运的是,有一个更简单的方法可以做到这一点。来自 libguestfs-tools 包的 guestmount 程序可以让你从 Linux 中访问或 挂载 虚拟磁盘镜像。你可以在 Fedora 上用这个命令安装 libguestfs-tools:
用户1685462
2021/09/13
1.2K0
在 Linux 和 FreeDOS 之间复制文件
我运行 Linux 作为我的主要操作系统,我在一个虚拟机中启动 FreeDOS。大多数时候,我使用 QEMU 作为我的 PC 模拟器,但有时我会用 GNOME Boxes(它使用 QEMU 作为后端虚拟机)或用 VirtualBox 运行其他实验。
用户1880875
2021/09/08
1.4K0
Boruta 和 SHAP :不同特征选择技术之间的比较以及如何选择
来源:DeepHub IMBA 本文约1800字,建议阅读5分钟 在这篇文章中,我们演示了正确执行特征选择的实用程序。 当我们执行一项监督任务时,我们面临的问题是在我们的机器学习管道中加入适当的特征选择。只需在网上搜索,我们就可以访问讨论特征选择过程的各种来源和内容。 总而言之,有不同的方法来进行特征选择。文献中最著名的是基于过滤器和基于包装器的技术。在基于过滤器的过程中,无监督算法或统计数据用于查询最重要的预测变量。在基于包装器的方法中,监督学习算法被迭代拟合以排除不太重要的特征。 通常,基于包装器的方法
数据派THU
2023/03/29
2.6K0
Boruta 和 SHAP :不同特征选择技术之间的比较以及如何选择
在 Linux 和 FreeDOS 之间复制文件
我运行 Linux 作为我的主要操作系统,我在一个虚拟机中启动 FreeDOS。大多数时候,我使用 QEMU 作为我的 PC 模拟器,但有时我会用 GNOME Boxes(它使用 QEMU 作为后端虚拟机)或用 VirtualBox 运行其他实验。
用户8965210
2021/09/27
2.6K0
Prism MEF example
Related Attributes These attributes are under namespace System.ComponentModel.Composition Import The attribute can be used on fields, properties, parameters. E.g. If a property is defined with the attribute, the property will be created automatically when
绿巨人
2018/05/16
9500
Kustomize 和 Helm 之间,我为什么选择了 Kustomize?
本文将记录为什么最终没有采用 Helm 而是选择了 Kustomize 作为 Kubernetes 应用的部署工具。
iMike
2019/09/17
4.4K0
Kustomize 和 Helm 之间,我为什么选择了 Kustomize?
WPF 通过多进程实现异常隔离的客户端
当 WPF 客户端需要实现插件系统的时候,一般可以基于容器或者进程来实现。如果需要对外部插件实现异常隔离,那么只能使用子进程来加载插件,这样插件如果抛出异常,也不会影响到主进程。WPF 元素无法跨进程传输,但是窗口句柄(HWND)可以,所以可以将 WPF 元素包装成 HWND,然后通过进程间通信将插件传输到客户端中,从而实现插件加载。
沙漠尽头的狼
2021/12/01
1.4K0
WPF 通过多进程实现异常隔离的客户端
一道编程题: 在1~n之间选择若干个数,使其和为m
这是一道很明显的动态规划的题目。 递推公式为 用sum(n, m)表示所有可能的1~n之间存在的和为m的组合 那么 sum(n,m) = sum(n-1, m) | sum(n-1, m-n) 直接上代码 void FindCombine(std::list<int> la, int n,int m) { if(m < 0 ) return ; if(m == 0) { for(std::list<int>::iterator iter = la.b
2018/07/04
4680
.NET周报 【5月第4期 2023-05-27】
https://www.cnblogs.com/gmmy/p/17430613.html
InCerry
2023/08/31
1880
.NET周报 【5月第4期 2023-05-27】
C# MEF入门讲解
起因:工作需要针对不同类型的文件做不同的处理。打个比方,txt文件,直接打印,doc文件,直接发email,jpg文件,上传xxx相册站点。
用户9127601
2021/11/01
7500
MEF框架基础理解
Managed Extensibility Framework (MEF) 是用于创建可扩展的轻量级应用程序的库。 它让应用程序开发人员得以发现和使用扩展且无需配置。 它还让扩展开发人员得以轻松地封装代码并避免脆弱的紧密依赖性。 MEF 让扩展不仅可在应用程序内重复使用,还可以跨程序重复使用。
JusterZhu
2023/09/06
7860
MEF框架基础理解
通过休眠在 Linux 和 windows 之间无缝切换
Linux 电脑挂了一个 Windows 虚拟机,但是有些东西还得是真机才管用,比如 Windows 大型独占软件,或者备份国内某空间占用贼大但只要你一找文件它就告诉你文件已过期的社交软件的聊天记录。备份可以在虚拟机中完成,但是只能是电脑连接手机热点,速度太慢了咱没那时间。
网名重要么
2023/06/07
2.9K0
通过休眠在 Linux 和 windows 之间无缝切换
.NET Core 和 .NET Framework 中的 MEF2
发布于 2018-01-17 15:41 更新于 2018-09-01 00:13
walterlv
2018/09/18
1.4K0
.NET Core 和 .NET Framework 中的 MEF2
快速入门系列--CLR--01基本概念
在.NET平台用C#这么久,自然会发现其版本很多,相应的概念也会很多,常常都是萌萌哒。而在实际工作中经常会遇到需要配置dll版本号,公钥token等场景,因而对C#、NET、CLR、框架类型等基础概念有个大略的了解有很大必要性。当涉及到程序集版本时,注意查看全局程序集缓存GAC(Global Assembly Cache),路径为c:\windows\assembly,还有几个相似的.net framework路径,同时可以使用IL Disassembler (x64)查看DLL中所引用的外部库信息。
用户1216676
2018/01/24
1.3K0
.NET 基金会项目介绍-Managed Extensibility Framework MEF, MEF2
Managed Extensibility Framework MEF, MEF2 是属于 .Net 基金会的一个项目,本文将简要介绍该项目相关的信息。
newbe36524
2020/03/16
9120

相似问题

插件之间的System.AddIn (Maf)互连

22

同时使用MEF和MAF

13

在Mono上用MAF (和MEF)编程

43

处理使用MAF (System.AddIn)创建的AddIns

22

System.Addin (MAF)的源代码在哪里?

115
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文