CTK Plugin Framework 介绍「建议收藏」
大家好,又见面了,我是你们的朋友全栈君。 CTK Plugin Framework 基本原理
1 CTK Plugin Framework是什么
CTK Plugin Framework 技术是面向 C++ 的动态模型系统。该系统允许插件之间的松散耦合,并且提供了设计良好的方式来进行功能和数据的交互。此外,它没有预先对插件施加限制,这样就可以很容易地将插件的相关部分嵌入到现有的工具包中。 简单的说来CTK Plugin Framework就是一个框架,用于管理DLL插件,同时也提供DLL插件之间的通讯服务。
2 体系架构
插件层(Plugins):应用插件,符合规定接口的DLL插件。 服务层(Services Layer):通过为 C++ 对象提供一个 publish-find-bind 模型,以动态方式连接插件,其实就是提供了一个订阅发布的机制,实现插件间的通讯。 生命周期层(Life Cycle Layer):实现插件的安装、启动、停止、更新和卸载。 安全层(Security Layer):负责整个框架的安全机制(暂未实现)。
2.1 Plugins插件
Plugins插件一般有三部分组成: 目标文件:DLL形式的动态可库。 资源文件:DLL库中使用到的资源文件和相关配置文件。 元数据:CTK Plugin Framework中特有的,DLL要应用其中必须要有。用于描述DLL库的文件。
2.2 Service Layer层
提供了一套发布—订阅机制。一个服务简单应用步骤如下: 1、 插件创建一个服务对象 2、 使用上下文对其进行注册。 3、 注册之后可以随时更改这个服务的属性(内容)。 4、 其他插件可以通过上下文获取这个服务。 注意: 具体API在此先不介绍,后面会有介绍。 服务对象生命周期由创建的插件负责,伴随插件。
2.3 Life Cycle Layer层
生命周期层主要用于控制 Plugin 的安装、启动、停止、更新和卸载。 生命周期层的 API 主要由三个核心部分组成:ctkPluginActivator、ctkPluginContext 和ctkPlugin。
- ctkPluginActivator:提供一组接口,主要是插件的启动、停止接口,需要由插件继承并且实现。
- ctkPluginContext:一个plugin 在框架内的执行上下文,插件于框架的交互全靠它。
- ps:上下文:每一段程序都有很多外部变量。只有像Add这种简单的函数才是没有外部变量的。一旦你的一段程序有了外部变量,这段程序就不完整,不能独立运行。你为了使他们运行,就要给所有的外部变量一个一个写一些值进去。这些值的集合就叫上下文。在实际的世界中,目标不可能单独的存在,它一定会于周围其他的对象会这是环境有或多或少的关系,这就是通常所说的上下文信息
- ctkPlugin:对象是定义一个已安装插件的生命周期的访问点,在插件环境中安装的每个插件都必须有一个相关的 ctkPlugin 对象。此外,插件必须有一个唯一的标识,在插件的生命周期中,这个标识不能改变(即使是在插件更新时),卸载和重新安装插件必须创建一个新的唯一标识。
插件的状态图
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/135371.html原文链接:https://javaforall.cn
相关文章
- JavaScript CSS Style属性对照表「建议收藏」
- mysql索引是什么 优点和缺点_MySQL索引优缺点、使用原则及种类介绍「建议收藏」
- Java 二维数组初始化「建议收藏」
- OHEM 详解「建议收藏」
- CGLIB介绍与原理「建议收藏」
- 软件测试流程设计—黑盒测试用例设计方法「建议收藏」
- 轻量级MVVM框架Stylet介绍:(3)关于Bootstrapper「建议收藏」
- pytorch Dataset, DataLoader产生自定义的训练数据「建议收藏」
- 什么是WinHTTP?「建议收藏」
- java常量有哪些_JAVA常量介绍「建议收藏」
- windows server2008 R2搭建ftp服务器「建议收藏」
- docker(8)Dockerfile指令介绍「建议收藏」
- 时间序列 介绍(一)「建议收藏」
- Enterprise Library 3.1 介绍「建议收藏」
- 超声波雷达介绍及车位探测信号处理方法「建议收藏」
- Android N上一些新特性的介绍「建议收藏」
- UART介绍「建议收藏」
- lombok插件介绍「建议收藏」
- redis远程连接不上解决办法「建议收藏」
- JDK8辅助学习(四):Stream流 collect() 方法的详细使用介绍「建议收藏」
- python deepcopy_python中的深拷贝(deepcopy)和浅拷贝(copy)介绍及代码参考「建议收藏」
- 【python】python获取时间戳「建议收藏」
- Redis管理工具安装和使用「建议收藏」
- ElasticJob分布式调度,分布式多个微服务执行只需要执行一个定时任务,基本概念介绍(一)「建议收藏」
- 这几款高效办公神器,职场大神都在用(建议收藏)