引言
接着上篇整个平台的介绍,本篇想跟大家分享一下整个平台的基础层,微内核插件化框架的构建。插件架构体系的发展由来已久,很多大型软件也都或多或少的融入了插件的体系架构,随着人们对插件技术研究工作的深入,涌现了一些具有代表性的插件框架,例如VS Code插件框架、OSGi等等。OSGi框架是运行在JavaVM环境里的服务平台,实现了一个优雅、完整和动态的组件模型,使用Java语言开发的人可以借鉴。VS Code是基于 Electron+Chromium进行开发的,使得开发者可以使用 HTML, CSS 和 JavaScript 等前端技术来开发跨平台桌面 GUI 应用程序,前端技术比较熟悉想从事桌面端开发的人可以去研究一下。从事自然资源数据处理方面,大部分人熟悉的可能是c++、c#,基于这方面考虑,本平台的集成框架考虑用C#进行构建,这样不管是C++的应用还是C#的应用,都可以较好的进行集成。
简介
平台在逻辑上分为六层,微内核插件化框架位于核心层,是整个平台运行的基础,主要包括平台的框架组件——插件,负责整个插件扩展功能项的管理;平台的服务组件——服务工厂,实现对整个平台的信息服务,包括功能的调用、消息注册、日志管理等;平台的界面框架——工作台框架,通过用户的定义,利用插件仓库中的插件,完成对工作台的组装;平台的插件仓库管理器——插件管理,负责整个平台插件仓库的管理,包括插件的安装、部署,以及插件依赖项的管理等。系统功能仓库作为整个平台的知识库,以插件的形式由核心层的插件管理器进行管理,其内容可以由用户或开发人员进行不断扩充及完善,从而实现对业务信息化的支撑。
框架使用
框架使用过程分两步,首先继承框架接口编写插件代码,可以继承的接口包括系统菜单、工具栏、视图窗口、文档窗口等等,插件功能编写完成后,在插件配置文件中配置插件显示的位置、名称及图标等信息,并放到相应目录下,即可自动进行加载。
//功能菜单接口,可以配置成菜单栏或工具栏public class DataConvertCommand : AbstractCommand{ public override void Run() { //业务逻辑代码编写 }}//插件配置,包括菜单名称、图标等,通过路径可以控制插件的嵌套关系
//视图窗口定制,集成arcgis图层控制器,视图文档窗口类似 public class CommonMapLegend : AbstractPad { Panel arcMapTocPanel = new Panel(); public override System.Windows.Forms.Control Control { get { return arcMapTocPanel; } } public CommonMapLegend() { arcMapTocControl = new Legend(); arcMapTocPanel.Controls.Add(arcMapTocControl); } }//视图插件配置,
插件加载后效果如下图所示,通过丰富的定制接口,可以集成所有支持二次开发的第三方软件平台,包括mapgis、arcgis、cad等,同时支持多文档视图、多视图窗口及工具菜单,因此需要用到哪个平台,只需把哪个平台的插件放到插件目录下就可以使用了,为后期项目的快速定制开发可以大大的提高效率,同时避免重复造轮子。
本篇暂时介绍到这里,欢迎大家进行讨论交流,私信或QQ:3022257867