插件框架实现方法、计算设备及存储介质技术
本发明专利技术公开了一种插件框架实现方法、计算设备及存储介质,在计算设备中执行,所述插件框架适于链接到应用内,所述插件框架包括核心插件、服务接口,所述服务接口对应多个服务插件;所述方法包括:响应于所述应用启动,加载所述核心插件,以便显示应用背板;加载所述服务接口对应的多个服务插件,以便在所述应用背板中显示每个服务插件对应的界面控件。根据本发明专利技术的技术方案,核心插件更加轻量化,有利于提高应用的启动效率,且实现了粒度更小的模块划分。分。分。
全部详细技术资料下载
【技术实现步骤摘要】
插件框架实现方法、计算设备及存储介质
[0001]本专利技术涉及计算机,尤其涉及一种插件框架实现方法、计算设备及存储介质。
技术介绍
[0002]集成开发环境(IDE,Integrated Development Environment)是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。所有具备这一特性的软件或者软件套(组)都可以叫集成开发环境,例如微软的Visual Studio系列,Borland的C++Builder、Delphi系列等。[0003]目前,国产平台上用到的主流的IDE包括Qt Creator,结合Qt开发套件基本能够满足桌面应用的研发。Qt Creator采用的是插件框架,在代码实现层面,其主要逻辑放到了projectexplore插件中,里面包含一些基础的内容,包括输出面板、构建步骤基础类、输出内容解析基础类、套件基础类等,一些基于这些基础类扩展的逻辑放到了其它插件中,其实现原理为利用了C++语言的多态特性,例如,当用户打开一个工程时,如果打开的是qmake工程,则会在projectexplore里面调用qmake插件的实例对象编译工程;如果打开的是cmake工程,则会在projectexplore里面调用cmake插件的实例对象编译工程。[0004]由于在projectexplore插件里包含了大部分业务流程,包括构建流程、调试流程、编辑器等等,所以该插件较为庞大,在每次启动Qt Creator时都需要对其进行加载,由于其自身粒度较大会造成加载时间长、且占用内存较多的情况,造成整体效率不高。另外,Qt Creator在projectexplore里面把主流程(构建、调试等)都串联起来,涉及到不同工程的不同处理逻辑放到了不同的插件里面,但这些插件只是被动的实现了一些定义好的接口,无法去修改在projectexplore里面的主流程,这样会让插件缺乏主动性。此外,作为在插件里面实现的逻辑,如果其继承的父类接口发生修改,那么插件会因为接口不兼容的问题无法再正常使用。此外,服务和事件等没有延迟创建机制,虽然不会影响逻辑正常运行,但会造成部分内存浪费的现象。[0005]鉴于此,需要一种能够提高IDE运行效率、优化内存使用策略的插件框架实现方法。
技术实现思路
[0006]为此,本专利技术提供一种插件框架实现方法,以解决或至少缓解上面存在的问题。[0007]根据本专利技术的一个方面,提供一种插件框架实现方法,适于在计算设备中执行,所述插件框架适于链接到应用内,所述插件框架包括核心插件、服务接口,所述服务接口对应多个服务插件;所述方法包括:响应于所述应用启动,加载所述核心插件,以便显示应用背板;加载所述服务接口对应的多个服务插件,以便在所述应用背板中显示每个服务插件对应的界面控件。[0008]可选地,根据本专利技术的插件框架实现方法,所述服务插件包括业务插件,所述加载所述服务接口对应的多个服务插件,以便在所述应用背板中显示每个服务插件对应的界面控件,包括:加载所述服务接口对应的多个业务插件,以便在所述应用背板中显示与每个业务插件相对应的子模块界面。[0009]可选地,根据本专利技术的插件框架实现方法,还包括:多个服务插件从服务注册列表获取服务接口,并在所述服务接口注册所述服务插件的方法。[0010]可选地,根据本专利技术的插件框架实现方法,还包括:将一个或多个服务接口自动注册到服务注册列表。[0011]可选地,根据本专利技术的插件框架实现方法,将服务接口自动注册到服务注册列表,包括:将所述服务接口的服务类继承服务注册基础类;在所述服务注册基础类中调用注册函数;在所述注册函数中向服务注册列表传入所述服务类的名称。[0012]可选地,根据本专利技术的插件框架实现方法,还包括:将创建所述服务类的服务对象保存为动作指针;响应于所述服务接口被调用,调用所述动作指针以创建所述服务类的服务对象。[0013]可选地,根据本专利技术的插件框架实现方法,还包括:基于服务名从服务注册列表中获取对应的服务对象;通过函数绑定,将所述服务插件与所述服务对象对应的服务接口建立关联。[0014]可选地,根据本专利技术的插件框架实现方法,还包括:通过事件代理,基于事件注册基类来自动注册事件;通过事件代理,响应于事件发送请求,创建所述事件的订阅者,以便所述订阅者处理接收所述事件并处理所述事件。[0015]可选地,根据本专利技术的插件框架实现方法,还包括:构建事件数据结构,以便调用事件代理来发送事件数据结构;其中,所述事件数据结构包括事件主题、事件数据、事件类型。[0016]可选地,根据本专利技术的插件框架实现方法,所述应用包括开发应用;所述子模块包括编译模块、调试模块。[0017]根据本专利技术的一个方面,提供一种计算设备,包括:至少一个处理器;存储器,存储有程序指令,其中,程序指令被配置为适于由上述至少一个处理器执行,所述程序指令包括用于执行如上所述的插件框架实现方法的指令。[0018]根据本专利技术的一个方面,提供一种存储有程序指令的可读存储介质,当该程序指令被计算设备读取并执行时,使得该计算设备执行如上所述的插件框架实现方法。[0019]根据本专利技术的技术方案,提供了一种插件框架实现方法,其中,根据本专利技术的插件框架实现方法200,插件框架包括核心插件、服务接口,服务接口可对应多个服务插件。当应用(例如IDE等开发应用)启动时,首先通过加载核心插件将应用背板显示出来,进而,通过加载服务接口对应的多个服务插件,可以在应用背板中依次插入并显示每个服务插件对应的界面控件。这样,无需等待全部逻辑加载完成即可显示应用界面,从而提高了应用的启动效率;由于核心插件只包含应用背板服务,更加轻量化,从而可以提高核心插件的加载效率,并且降低核心插件加载过程中占用的内存,进一步提高了应用启动效率;并且,利用多个服务插件来提供绘制多个界面控件的逻辑,这样,将服务逻辑分布到多个服务插件,有利于降低服务插件的颗粒度,实现了粒度更小的模块划分。[0020]进一步地,通过加载服务接口对应的多个业务插件,可以显示与每个业务插件相对应的子模块界面。这样,通过各个业务插件来独立提供对应的子模块界面和逻辑,可以更灵活地处理界面逻辑。[0021]此外,根据本专利技术的服务机制和事件机制,均采用自动注册和延迟创建的方法,其中,当其他插件调用服务接口时,才会创建服务对象,实现了对服务对象的延迟创建;当事件代理接收到事件发送请求时,才会创建事件的订阅者,实现延迟创建事件订阅者。这样,不仅能实现全程自动处理,达到即用即创建的效果,而且,有利于提高程序启动性能和运行效率,降低内存占用。而且,通过绑定服务接口的方式可以降低ABI兼容性问题,提高应用的适应性。[0022]上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,而可依照说明书的内容予本文档来自技高网…
【技术保护点】
【技术特征摘要】
1.一种插件框架实现方法,适于在计算设备中执行,所述插件框架适于链接到应用内,所述插件框架包括核心插件、服务接口,所述服务接口对应多个服务插件;所述方法包括:响应于所述应用启动,加载所述核心插件,以便显示应用背板;加载所述服务接口对应的多个服务插件,以便在所述应用背板中显示每个服务插件对应的界面控件。2.如权利要求1所述的方法,其中,所述服务插件包括业务插件,所述加载所述服务接口对应的多个服务插件,以便在所述应用背板中显示每个服务插件对应的界面控件,包括:加载所述服务接口对应的多个业务插件,以便在所述应用背板中显示与每个业务插件相对应的子模块界面。3.如权利要求1或2所述的方法,其中,还包括:多个服务插件从服务注册列表获取服务接口,并在所述服务接口注册所述服务插件的方法。4.如权利要求1
‑
3中任一项所述的方法,其中,还包括:将一个或多个服务接口自动注册到服务注册列表。5.如权利要求4所述的方法,其中,将服务接口自动注册到服务注册列表,包括:将所述服务接口的服务类继承服务注册基础类;在所述服务注册基础类中调用注册函数;在所述注册函数中向服务注册列表传入所述服务类的名称。6.如权利要求5所述的方法,其中,还包括:将创建所述服务类的服务对象保存为动作指针;响应于所述服务接口被调用,调用所述动作指针以创建所述服务类的服务对象…
【专利技术属性】
技术研发人员:卢桢,
申请(专利权)人:统信软件技术有限公司,
类型:发明
国别省市:
全部详细技术资料下载 我是这个专利的主人