CTK Plugin Framework 介绍「建议收藏」

CTK Plugin Framework 介绍「建议收藏」CTKPluginFramework基本原理1 CTKPluginFramework是什么        CTKPluginFramework技术是面向C++的动态模型系统。该系统允许插件之间的松散耦合,并且提供了设计良好的方式来进行功能和数据的交互。此外,它没有预先对插件施加限制,这样就可以很…

大家好,又见面了,我是你们的朋友全栈君。



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
    对象。此外,插件必须有一个唯一的标识,在插件的生命周期中,这个标识不能改变(即使是在插件更新时),卸载和重新安装插件必须创建一个新的唯一标识。

插件的状态图
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/135371.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Centos7更换yum镜像源

    Centos7更换yum镜像源Centos7更换yum镜像源1、首先备份/etc/yum.repos.d/CentOS-Base.repomv/etc/yum.repos.d/CentOS-Base.repo/etc/yum.repos.d/CentOS-Base.repo.backup2、下载对应版本repo文件,放入/etc/yum.repos.d/(操作前请做好相应备份)以CentOS7-Base-163.repo为例#CentOS-Base.repo##Themirrorsystemusesth

  • uni-app中使用flyio请求_uniapp能否上架

    uni-app中使用flyio请求_uniapp能否上架前言:因为最近需要使用uni-app进行小程序的开发,所以最近在搭建小程序的环境,作为一个使用vue的前端小白,自然选择了支持vue的uni-app。但是uni自带的uni.request需要自己封装(因为懒)所以选择了flyio进行请求封装。环境配置:npminstallflyio在这里我使用npm进行安装,也可以下载源文件wx,js或者wx.umd.min.js1.先看一下np…

  • CentOS系统下Redis安装和自启动配置的步骤

    CentOS系统下Redis安装和自启动配置的步骤

    2021年10月11日
  • java快捷键怎么设置_键盘快捷键怎么设置

    java快捷键怎么设置_键盘快捷键怎么设置概述我现在同时用eclipse和idea,而且idea的快捷键与eclipse的快捷键不一致,此时需要先把idea的快捷键的设置的eclipse的一样。具体操作就是可以这idea的settings设置里选择keymap右边选择eclipse,此时大部分的快捷键就一致了。具体操作如图:如果还想更加的一致,就需要导入一个jar包了具体操作见图:首先选择file中的importsettings:然后选择jar包重启一下就行了当快捷键冲突当快捷键冲突时,有两种解决方法,一是修改eclip

    2022年10月26日
  • 【《重构 改善既有代码的设计》学习笔记8】重新组织数据

    本篇文章的内容来自《重构 改善既有代码的设计》一书学习笔记整理并且加上自己的浅显的思考总结!本篇介绍几个轻松处理数据的重构手法。1、自封装字段(Self Encapsulate Field)概述你直接访问一个字段,但与字段之间 的耦合关系逐渐变得笨拙。为这个字段建立取值和设值函数,并且通过函数来访问字段。【说白了就是使用get/set方法来访问字段】private int low …

  • win10 卸载cuda10.1

    win10 卸载cuda10.1创建于:@2020.04.19修改于:@2020.04.19文章目录1.背景2.cuda卸载1.背景在尝试安装tensorflow-gpu时,cuda安装版本错误。需要卸载。2.cuda卸载(1)在控制面板中打开【程序】–>【程序和功能】(2)确定要卸载的内容,图中红框内的内容(3)删除C盘里面C:\ProgramFiles\NVIDIAGPUComputi…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号