• WPF插件式框架


    前言

      标题有点大,本文主要介绍了WPF插件式框架的一个思路,代码来自于以前给朋友写的一个Sample,细节地方不去关注,大致谈谈想法。

    插件式架构

      插件式(AddIn)架构,不是一个新名词,应用程序采用插件式拼合,可以更好的支持扩展。很多著名的软件都采用了插件式的架构,如常见的IDE:EClipse,VisualStudio等等。

      这些插件式架构在实现上各有特色,但是基本原理大致相同:

    1. 定义插件框架,用来下载,创建,销毁插件,并管理插件间的通信等等。
    2. 定义插件契约,定义统一的接口规范。
    3. 实现插件组件,组件实现插件契约,在运行时可以被插件框架所发现并集成。

      关于插件式架构的实现技术,可以有很多选择,使用动态链接库的导出函数,使用COM技术等等,这里选择的是.net的MEF,MEF(Managed Extensibility Framework)是微软集成在.net framework中的扩展性管理框架,VisualStudio2010就是使用了MEF来管理插件,关于MEF的具体使用,请参见MSDN,这里不详细介绍了。

    设计与实现

      工程目录以及架构图如下所示:

    1image

      Illusion中使用MEF实现了插件管理,通用的Services等等,Illusion作为一个Core模块,可以参见前文

      Workbench定义了插件的工作台,定义了UI的布局。

      Presentation定义了UI的具体实现,可以添加/替换UI的表现,默认提供了Ribbon和Default两种形式,可以点击选项-显示框架来动态切换整个UI。

    总结

      插件式架构应用程序不是什么新奇的东西,把UI布局和UI表现分离,并支持插件式架构是设计时的一些想法,具体到项目应用还需要一定的完善。代码放置很久了,拿出来分享一下,希望对朋友们有所帮助。

      项目代码可以点击这里下载。

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    九度OJ题目1137:浮点数加法 (JAVA)使用BigDecimal四个案例都通过了,但是超时了。
    九度OJ题目1080:进制转换(java)使用BigInteger进行进制转换
    九度OJ题目1076:N的阶乘 (java)运用BigInteger的例子。
    九度OJ题目1443:Tr A (JAVA)
    九度oj题目1207:质因数的个数
    pg 比mysql 强的数据库
    mysql8 sql_mode=only_full_group_by问题解决
    mysql 8.0.19 安装
    springboot + mybatis plus强大的条件构造器queryWrapper、updateWrappe
    Elasticsearch 学习
  • 原文地址:https://www.cnblogs.com/Zhouyongh/p/2353498.html
Copyright © 2020-2023  润新知