WPF插件式框架
前言
标题有点大,本文主要介绍了WPF插件式框架的一个思路,代码来自于以前给朋友写的一个Sample,细节地方不去关注,大致谈谈想法。
插件式架构
插件式(AddIn)架构,不是一个新名词,应用程序采用插件式拼合,可以更好的支持扩展。很多著名的软件都采用了插件式的架构,如常见的IDE:EClipse,VisualStudio等等。
这些插件式架构在实现上各有特色,但是基本原理大致相同:
- 定义插件框架,用来下载,创建,销毁插件,并管理插件间的通信等等。
- 定义插件契约,定义统一的接口规范。
- 实现插件组件,组件实现插件契约,在运行时可以被插件框架所发现并集成。
关于插件式架构的实现技术,可以有很多选择,使用动态链接库的导出函数,使用COM技术等等,这里选择的是.net的MEF,MEF(Managed Extensibility Framework)是微软集成在.net framework中的扩展性管理框架,VisualStudio2010就是使用了MEF来管理插件,关于MEF的具体使用,请参见MSDN,这里不详细介绍了。
设计与实现
工程目录以及架构图如下所示:
Illusion中使用MEF实现了插件管理,通用的Services等等,Illusion作为一个Core模块,可以参见前文。
Workbench定义了插件的工作台,定义了UI的布局。
Presentation定义了UI的具体实现,可以添加/替换UI的表现,默认提供了Ribbon和Default两种形式,可以点击选项-显示框架来动态切换整个UI。
总结
插件式架构应用程序不是什么新奇的东西,把UI布局和UI表现分离,并支持插件式架构是设计时的一些想法,具体到项目应用还需要一定的完善。代码放置很久了,拿出来分享一下,希望对朋友们有所帮助。
项目代码可以点击这里下载。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报