CN109828796B - 一种基于微内核架构的插件调用方法及装置 - Google Patents

一种基于微内核架构的插件调用方法及装置 Download PDF

Info

Publication number
CN109828796B
CN109828796B CN201910044541.7A CN201910044541A CN109828796B CN 109828796 B CN109828796 B CN 109828796B CN 201910044541 A CN201910044541 A CN 201910044541A CN 109828796 B CN109828796 B CN 109828796B
Authority
CN
China
Prior art keywords
plug
calling
ins
parent class
module
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910044541.7A
Other languages
English (en)
Other versions
CN109828796A (zh
Inventor
郭治军
刘银森
郜鹏
肖威
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan Jingce Electronic Group Co Ltd
Wuhan Jingli Electronic Technology Co Ltd
Original Assignee
Wuhan Jingce Electronic Group Co Ltd
Wuhan Jingli Electronic Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wuhan Jingce Electronic Group Co Ltd, Wuhan Jingli Electronic Technology Co Ltd filed Critical Wuhan Jingce Electronic Group Co Ltd
Priority to CN201910044541.7A priority Critical patent/CN109828796B/zh
Publication of CN109828796A publication Critical patent/CN109828796A/zh
Application granted granted Critical
Publication of CN109828796B publication Critical patent/CN109828796B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明提供了一种基于微内核架构的插件调用方法及装置,其中的方法包括:首先将插件模块中的所有插件继承预设父类,并在预设父类中设置类型判断方法,然后分析所有插件的源代码,获得插件之间的继承关系,接着根据插件之间的继承关系,生成与每个插件对应的类型判断方法的实现代码;当进行插件调用时,通过核心系统调用与目标插件对应的类型判断方法进行安全判断,如果安全,则进行父类到子类的转换,再基于转换的结果,进行目标插件的调用。本发明实现了不依赖于RTTI的通用插件调用以及提高调用效率的技术效果。

Description

一种基于微内核架构的插件调用方法及装置
技术领域
本发明涉及计算机技术领域,具体涉及一种基于微内核架构的插件调用方法及装置。
背景技术
微内核架构有时也被称为插件架构模式(plug-in architecture pattern),微内核架构包含两部分组件:核心系统(core system)和插件模块(plug-in modules)。应用逻辑被分割为独立的插件模块和核心系统,提供了可扩展性、灵活性、功能隔离和自定义处理逻辑的特性。微内核架构的使用范围很广泛,比较著名的插件架构产品为Eclipse和Firefox。
软件开发过程中,一个插件不可避免地需要调用另外一个插件的功能,则需要要获取另外一个插件的对象。例如,如图1所示,为插件之间的继承关系示意图,IPlugin为CameraPlugin和PGPlugin的父类,PGPlugin为PowerPGPlugin和HyPgPlugin的父类。某个插件APlugin需要调用PowerPgPlugin的接口,则需要获得PowerPgPlugin的接口指针。但此时在核心系统中PowerPgPlugin对象是以IPlugin指针的方式存储的,要从IPlugin指针得到PowerPgPlugin的指针则需要进行从父类到子类的类型转换机制。
本发明申请人在实施本发明的过程中,发现现有技术中至少存在如下技术问题:
现有方法中,如果存在某个BPlugin错误的将PowerPgPlugin转换成HyPgPlugin。并且调用HyPgPlugin的方法,那么程序将会出现无法预料的后果(绝大多数情况下会崩溃)。有些编程语言会提供这种类型安全的转换接口,比如c++的dynamic_cast。但是dynamic_cast依赖于C++的RTTI(Runtime Type Information,通常称为运行时类型信息)机制,一方面不通用,因为有的情况下会要求程序必须关闭RTTI;另一方面dynamic_cast需要在运行时遍历RTTI继承树,每次进行转换都需要遍历继承树,效率比较低。
发明内容
有鉴于此,本发明实施例提供了一种基于微内核架构的插件调用方法及装置,用以解决或者至少部分解决现有技术存在的通用性较差的技术问题。
为了解决上述技术问题,本发明第一方面提供了一种基于微内核架构的插件调用方法,所述微内核架构包括插件模块和核心系统,包括:
将插件模块中的所有插件继承预设父类,并在预设父类中设置类型判断方法,所述类型判断方法用以判断一个具体的对象是否为某一个类的对象;
分析所有插件的源代码,获得插件之间的继承关系;
根据插件之间的继承关系,生成与每个插件对应的类型判断方法的实现代码;
当进行插件调用时,通过核心系统调用与目标插件对应的类型判断方法进行安全判断,如果安全,则进行父类到子类的转换;
基于转换的结果,进行目标插件的调用。
在一种实施方式中,分析所有插件的源代码,获得插件之间的继承关系,具体包括:
采用源代码分析工具,通过遍历源代码的语法树的方式,获得每个插件的继承关系。
在一种实施方式中,预先存储预设父类的对象指针,通过核心系统调用与目标插件对应的类型判断方法进行安全判断,包括:
核心系统采用预设父类的对象指针调用与目标插件对应的类型判断方法进行安全判断。
在一种实施方式中,当进行插件调用时,通过核心系统调用与目标插件对应的类型判断方法进行安全判断,包括:
比较自身类名与方法调用的传入参数是否一致,如果一致,则返回安全;
如果自身类名与方法调用的传入参数不一致,则比较父类类名与方法调用的传入参数是否一致,如果父类类名与方法调用的传入参数一致,则返回安全;
如果父类类名与方法调用的传入参数不一致,则返回不安全。
基于同样的发明构思,本发明第二方面提供了一种基于微内核架构的插件调用装置,所述微内核架构包括插件模块和核心系统,该装置包括:
预设父类设置模块,用于将插件模块中的所有插件继承预设父类,并在预设父类中设置类型判断方法,所述类型判断方法用以判断一个具体的对象是否为某一个类的对象;
源代码分析模块,用于分析所有插件的源代码,获得插件之间的继承关系;
代码自动生成模块,用于根据插件之间的继承关系,生成与每个插件对应的类型判断方法的实现代码;
安全转换模块,用于当进行插件调用时,通过核心系统调用与目标插件对应的类型判断方法进行安全判断,如果安全,则进行父类到子类的转换;
插件调用模块,用于基于转换的结果,进行目标插件的调用。
在一种实施方式中,源代码分析模块,具体用于:
采用源代码分析工具,通过遍历源代码的语法树的方式,获得每个插件的继承关系。
基于同样的发明构思,本发明第三方面提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被执行时实现第一方面所述的方法。
基于同样的发明构思,本发明第四方面提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述的方法。
本申请实施例中的上述一个或多个技术方案,至少具有如下一种或多种技术效果:
本发明公开的基于微内核架构的插件调用方法,首先将插件模块中的所有插件继承预设父类,并在预设父类中设置类型判断方法,然后分析所有插件的源代码,获得插件之间的继承关系;接着根据插件之间的继承关系,生成与每个插件对应的类型判断方法的实现代码;当进行插件调用时,通过核心系统调用与目标插件对应的类型判断方法进行安全判断,如果安全,则进行父类到子类的转换;再基于转换的结果,进行目标插件的调用。
相对于现有的方法中,需要依赖于C++的RTTI机制而言,本发明的方法将插件模块中的所有插件继承预设父类IPlugin,并设置了预设父类的类型判断方法,也就是采用了统一的插件类继承体系,便于进行类的设置,并在预设父类中定义了类型判断方法isPlugin。由于所有的插件都需要继承自预设父类IPlugin,这样核心系统可以直接使用存储的IPlugin对象指针调用isPlugin方法进行判断。即使是在插件的业务逻辑中,将任意的插件对象直接转换成IPlugin对象也是安全的,从而可以不依赖于依赖RTTI即可进行插件的调用,提高了通用性。此外,每个插件的isPlugin方法的具体实现代码可以根据源代码分析的结果自动生成,屏蔽了用户对此过程的感知,可以提高业务开发人员的体验和效率。
进一步地,本发明通过源代码分析方法,即程序可以自动的对插件对应的类的定义文件(比如C++的.h文件)进行分析,进行词法和语法分析,得到语法树后通过遍历语法树得到类之间的继承关系。并且,在编译之前通过分析源代码的语法树得到插件之间的继承关系。相比于运行时遍历的方式来说,可以实现重复次数少,运行时间少的技术效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中插件之间的继承关系示意图;
图2为本发明实施例中一种基于微内核架构的插件调用方法的流程图;
图3本发明实施例中一种基于微内核架构的插件调用装置的结构框图;
图4为本发明实施例中一种计算机可读存储介质的结构框图;
图5为本发明实施例中一种计算机设备的结构框图。
具体实施方式
本发明实施例提供了一种基于微内核架构的插件调用方法及装置,用以改善现有技术中的现有技术存在的通用性较差的技术问题。
为了达到上述技术效果,本发明的总体思路如下:
在微内核架构的基础上,设置统一的插件类型继承体系,并利用源代码分析和代码自动生成的方法,实现了一种不依赖RTTI的类型安全的调用方法,以使应用此框架开发出的应用均具备类型安全的特性。
本方法的主要改进点包括:
1、统一的插件类继承体系,从而可以方便的做类的约定,可以在IPlugin类中定义类型判断方法isPlugin。由于所有的Plugin都需要继承自IPlugin,这样核心系统可以直接使用存储的IPlugin对象指针调用isPlugin方法进行判断。即使是在插件的业务逻辑中,将任意的插件对象直接转换成IPlugin对象也是安全的。
2、源代码分析,可以自动对插件对应的类的定义文件(比如C++的.h文件)进行分析,进行词法和语法分析,得到语法树后通过遍历语法树得到类之间的继承关系。
3、每个插件类的isPlugin方法实现代码自动生成,类型判断方法的实现可以根据源代码的分析结果自动生成,使用者不感知此过程。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
本实施例提供了一种基于微内核架构的插件调用方法,所述微内核架构包括插件模块和核心系统,请参见图2,该方法包括:
步骤S1:将插件模块中的所有插件继承预设父类,并在预设父类中设置类型判断方法,所述类型判断方法用以判断一个具体的对象是否为某一个类的对象。
具体来说,所有插件均继承预设父类,即预设父类IPlugin为所有插件对应的插件类的父类。类型判断方法isPlugin具体用于判断一个具体的对象是否为某一个类的对象。
在具体的实施过程中,isPlugin的实现方式如下:
virtual bool isPlugin(const char*className)
其中,isPlugin为方法名,方法的参数className表示类名,返回值为bool类型,const char表示数据类型。由于所有的插件类都需要从预设父类IPlugin继承,则需要实现自己的isPlugin方法。
步骤S2:分析所有插件的源代码,获得插件之间的继承关系。
具体来说,通过源代码分析技术,可以获得插件之间的继承关系(即插件类之间的继承关系)。
在一种实施方式中,分析所有插件的源代码,获得插件之间的继承关系,具体包括:
采用源代码分析工具,通过遍历源代码的语法树的方式,获得每个插件的继承关系。
具体来说,源代码分析工具可以采用现有的工具,例如clang,通过遍历源代码的语法树分析每个类的继承关系。其中,可以在编译前进行源代码的语法树的遍历,也可以采用C语言的宏来构建自己的类继承树并且在运行时进行遍历。
在具体实现时,通过下述方式来实现:
1、首先可以定义一张类型为<类型名,树节点>全局表,第一次遍历语法树,得到所有类型定义的树节点;
2.如想获取某个类的继承关系,则首先找到表示该类的节点,此节点下类型为BASE_SPECIFIER的子节点即为其父类,通过父类名找到其树节点,重复过程2,直到节点中没有BASE_SPECIFIER类型的子节点。
以图1为例,可以通过HyPgPlugin的BASE_SPECIFIER(语法树中节点类型的一种,代表父类)子节点找到PGPlugin类,然后通过PGPlugin节点的BASE_SPECIFIER子节点找到IPlugin。
为了提高效率,本发明通过遍历源代码的语法树的方式,获得每个插件的继承关系的步骤在编译之前进行。
具体来说,获得插件类之间的继承关系的过程与Dynamic_cas遍历继承树的过程相同,优点在于此过程在编译之前即完成,且只进行一次,相比于Dynamic_cast运行时的每次遍历更加高效。也就是说,将运行时的继承树遍历提前到编译前进行,从而提高程序的运行时效率。这样做的目的在于编译时遍历是一次性动作而运行时是重复多次的,提高了程序的性能。
步骤S3:根据插件之间的继承关系,生成与每个插件对应的类型判断方法的实现代码。
具体来说,源代码分析的结果中包含了插件之间的继承关系,而对应的类型判断方法是判断一个具体的对象是否为某一个类的对象,那么可以根据源代码分析结果中的继承关系,自动生成类型类型判断方法的具体实现代码,而使用者不感知此过程,提高了用户的体验和开发的效率。
步骤S4:当进行插件调用时,通过核心系统调用与目标插件对应的类型判断方法进行安全判断,如果安全,则进行父类到子类的转换。
具体来说,核心系统可以直接调用IPlugin的isPlugin进行安全判断,具体地,在插件中进行类型转换时,首先将插件对象转换为IPlugin对象(子类转父类时安全的),调用IPlugin的isPlugin方法判断此次转换是否安全,如安全,则转换。否则进行异常处理。
在一种实施方式中,预先存储预设父类的对象指针,通过核心系统调用与目标插件对应的类型判断方法进行安全判断,包括:
核心系统采用预设父类的对象指针调用与目标插件对应的类型判断方法进行安全判断。
具体来说,由于所有的插件均继承自预设父类IPlugin,从而核心系统可以直接使用存储的IPlugin对象指针调用isPlugin方法进行安全判断。即使是在插件的业务逻辑中,将任意的插件对象直接转换成IPlugin对象也是安全的,既保证了不需要依赖RTTI即可进行插件的通用调用,也保证了调用的安全性。
在一种实施方式中,当进行插件调用时,通过核心系统调用与目标插件对应的类型判断方法进行安全判断,包括:
比较自身类名与方法调用的传入参数是否一致,如果一致,则返回安全;
如果自身类名与方法调用的传入参数不一致,则比较父类类名与方法调用的传入参数是否一致,如果父类类名与方法调用的传入参数一致,则返回安全;
如果父类类名与方法调用的传入参数不一致,则返回不安全。
具体地,通过类名与传入参数的比较,可以保证类型转换的安全性。
步骤S5,基于转换的结果,进行目标插件的调用。
具体来说,通过前述步骤,可以判断类型转换是否安全,则可以进行后续的插件功能的调用。
总体来说,本发明关键点包括以下3点:
1、在插件类继承的最顶层IPlugin类中定义类型判断方法isPlugin,这样所有插件类的对象不论以什么形式存储都可以安全地调用此方法进行类型安全的判断,以保证调用的通用性和安全性。
2、源代码分析,在编译之前通过分析源代码的语法树得到插件类的继承关系。对比运行时遍历具有重复次数少,运行时间少的优点。
3、代码自动生成,自动实现类型转换安全的判断,屏蔽用户对此过程的感知。提高业务开发人员的体验。
本发明是在微内核架构具有的统一的插件类型继承模型的基础上,利用源代码分析和代码自动生成的方法提供一个不依赖RTTI的类型安全的调用方法。它将运行时的继承树遍历提前到编译前进行,会加大程序的编译时间而提高程序的运行时效率这样做的意义在于编译时遍历是一次性动作而运行时是重复多次的,提高了程序的性能。
基于同一发明构思,本申请还提供了一种与基于微内核架构的插件调用方法对应的装置,详见实施例二。
实施例二
本实施例提供了一种基于微内核架构的插件调用装置,所述微内核架构包括插件模块和核心系统,请参见图3,该装置包括:
预设父类设置模块301,用于将插件模块中的所有插件继承预设父类,并在预设父类中设置类型判断方法,所述类型判断方法用以判断一个具体的对象是否为某一个类的对象;
源代码分析模块302,用于分析所有插件的源代码,获得插件之间的继承关系;
代码自动生成模块303,用于根据插件之间的继承关系,生成与每个插件对应的类型判断方法的实现代码;
安全转换模块304,用于当进行插件调用时,通过核心系统调用与目标插件对应的类型判断方法进行安全判断,如果安全,则进行父类到子类的转换;
插件调用模块305,用于基于转换的结果,进行目标插件的调用。
在一种实施方式中,源代码分析模块302,具体用于:
采用源代码分析工具,通过遍历源代码的语法树的方式,获得每个插件的继承关系。
在一种实施方式中,安全转换模块304具体用于:
核心系统采用预设父类的对象指针调用与目标插件对应的类型判断方法进行安全判断。
在一种实施方式中,安全转换模块304具体用于:
比较自身类名与方法调用的传入参数是否一致,如果一致,则返回安全;
如果自身类名与方法调用的传入参数不一致,则比较父类类名与方法调用的传入参数是否一致,如果父类类名与方法调用的传入参数一致,则返回安全;
如果父类类名与方法调用的传入参数不一致,则返回不安全。
由于本发明实施例二所介绍的装置,为实施本发明实施例一中基于微内核架构的插件调用方法所采用的装置,故而基于本发明实施例一所介绍的方法,本领域所属人员能够了解该装置的具体结构及变形,故而在此不再赘述。凡是本发明实施例一的方法所采用的装置都属于本发明所欲保护的范围。
基于同一发明构思,本申请还提供了与实施例一中基于微内核架构的插件调用方法对应的计算机可读存储介质,详见实施例三。
实施例三
本实施例提供了一种计算机可读存储介质300,其上存储有计算机程序311,该程序被执行时实现如实施例一中所述的方法。
由于本发明实施例三所介绍的计算机可读存储介质为实施本发明实施例一中基于微内核架构的插件调用方法所采用的计算机设备,故而基于本发明实施例一所介绍的方法,本领域所属人员能够了解该计算机可读存储介质的具体结构及变形,故而在此不再赘述。凡是本发明实施例一中方法所采用的计算机可读存储介质都属于本发明所欲保护的范围。
基于同一发明构思,本申请还提供了与实施例一中基于微内核架构的插件调用方法对应的计算机设备,详见实施例四。
实施例四
本实施例提供了一种计算机设备,请参见图4,包括存储401、处理器402及存储在存储器上并可在处理器上运行的计算机程序403,处理器402执行上述程序时实现实施例一中的方法。
由于本发明实施例四所介绍的计算机设备为实施本发明实施例一中基于微内核架构的插件调用方法所采用的计算机设备,故而基于本发明实施例一所介绍的方法,本领域所属人员能够了解该计算机设备的具体结构及变形,故而在此不再赘述。凡是本发明实施例一中方法所采用的计算机设备都属于本发明所欲保护的范围。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (7)

1.一种基于微内核架构的插件调用方法,所述微内核架构包括插件模块和核心系统,其特征在于,包括:
将插件模块中的所有插件继承预设父类,并在预设父类中设置类型判断方法,所述类型判断方法用以判断一个具体的对象是否为某一个类的对象;
分析所有插件的源代码,获得插件之间的继承关系;
根据插件之间的继承关系,生成与每个插件对应的类型判断方法的实现代码;
当进行插件调用时,通过核心系统调用与目标插件对应的类型判断方法进行安全判断,如果安全,则进行父类到子类的转换;
基于转换的结果,进行目标插件的调用;
其中,通过核心系统调用与目标插件对应的类型判断方法进行安全判断,包括:
比较自身类名与方法调用的传入参数是否一致,如果一致,则返回安全;
如果自身类名与方法调用的传入参数不一致,则比较父类类名与方法调用的传入参数是否一致,如果父类类名与方法调用的传入参数一致,则返回安全;
如果父类类名与方法调用的传入参数不一致,则返回不安全。
2.如权利要求1所述的方法,其特征在于,分析所有插件的源代码,获得插件之间的继承关系,具体包括:
采用源代码分析工具,通过遍历源代码的语法树的方式,获得每个插件的继承关系。
3.如权利要求1所述的方法,其特征在于,预先存储预设父类的对象指针,通过核心系统调用与目标插件对应的类型判断方法进行安全判断,包括:
核心系统采用预设父类的对象指针调用与目标插件对应的类型判断方法进行安全判断。
4.一种基于微内核架构的插件调用装置,所述微内核架构包括插件模块和核心系统,其特征在于,包括:
预设父类设置模块,用于将插件模块中的所有插件继承预设父类,并在预设父类中设置类型判断方法,所述类型判断方法用以判断一个具体的对象是否为某一个类的对象;
源代码分析模块,用于分析所有插件的源代码,获得插件之间的继承关系;
代码自动生成模块,用于根据插件之间的继承关系,生成与每个插件对应的类型判断方法的实现代码;
安全转换模块,用于当进行插件调用时,通过核心系统调用与目标插件对应的类型判断方法进行安全判断,如果安全,则进行父类到子类的转换;
插件调用模块,用于基于转换的结果,进行目标插件的调用;
其中,通过核心系统调用与目标插件对应的类型判断方法进行安全判断,包括:
比较自身类名与方法调用的传入参数是否一致,如果一致,则返回安全;
如果自身类名与方法调用的传入参数不一致,则比较父类类名与方法调用的传入参数是否一致,如果父类类名与方法调用的传入参数一致,则返回安全;
如果父类类名与方法调用的传入参数不一致,则返回不安全。
5.如权利要求4所述的装置,其特征在于,源代码分析模块,具体用于:
采用源代码分析工具,通过遍历源代码的语法树的方式,获得每个插件的继承关系。
6.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被执行时实现如权利要求1至3中任一项权利要求所述的方法。
7.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至3中任一项权利要求所述的方法。
CN201910044541.7A 2019-01-17 2019-01-17 一种基于微内核架构的插件调用方法及装置 Active CN109828796B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910044541.7A CN109828796B (zh) 2019-01-17 2019-01-17 一种基于微内核架构的插件调用方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910044541.7A CN109828796B (zh) 2019-01-17 2019-01-17 一种基于微内核架构的插件调用方法及装置

Publications (2)

Publication Number Publication Date
CN109828796A CN109828796A (zh) 2019-05-31
CN109828796B true CN109828796B (zh) 2022-04-15

Family

ID=66860525

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910044541.7A Active CN109828796B (zh) 2019-01-17 2019-01-17 一种基于微内核架构的插件调用方法及装置

Country Status (1)

Country Link
CN (1) CN109828796B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112416300A (zh) * 2019-08-20 2021-02-26 阿里巴巴集团控股有限公司 应用程序安装包生成方法、装置与电子设备
CN110851513B (zh) * 2019-10-16 2021-06-08 中盈优创资讯科技有限公司 基于Spark计算引擎的多源异构数据读取方法及装置
CN110704035A (zh) * 2019-10-17 2020-01-17 北京首贝科技发展有限公司 一种组插件式软件架构系统及其实现方法
CN115502980A (zh) * 2022-10-25 2022-12-23 遨博(北京)智能科技股份有限公司 一种机械臂控制方法、装置、设备和介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102707947A (zh) * 2012-04-25 2012-10-03 北京大学 一种高效的动态类型转换的实现方法
CN104391716A (zh) * 2014-11-14 2015-03-04 百度在线网络技术(北京)有限公司 基于插件的应用程序实现方法及装置
CN105677311A (zh) * 2014-11-21 2016-06-15 卓望数码技术(深圳)有限公司 一种函数调用关系的识别方法及装置
CN106933636A (zh) * 2017-03-16 2017-07-07 北京奇虎科技有限公司 启动插件服务的方法、装置和终端设备
CN108388423A (zh) * 2018-02-26 2018-08-10 中车青岛四方机车车辆股份有限公司 一种ios数据对象转换方法及装置
CN109189502A (zh) * 2018-09-17 2019-01-11 网易(杭州)网络有限公司 一种基于即时通讯公众平台的消息处理方法和相关设备
CN109189663A (zh) * 2018-07-12 2019-01-11 武汉精测电子集团股份有限公司 一种插件调试方法、测试方法及微内核架构系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014159943A2 (en) * 2013-03-14 2014-10-02 Bitvore Corp. Dynamically loaded plugin architecture

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102707947A (zh) * 2012-04-25 2012-10-03 北京大学 一种高效的动态类型转换的实现方法
CN104391716A (zh) * 2014-11-14 2015-03-04 百度在线网络技术(北京)有限公司 基于插件的应用程序实现方法及装置
CN105677311A (zh) * 2014-11-21 2016-06-15 卓望数码技术(深圳)有限公司 一种函数调用关系的识别方法及装置
CN106933636A (zh) * 2017-03-16 2017-07-07 北京奇虎科技有限公司 启动插件服务的方法、装置和终端设备
CN108388423A (zh) * 2018-02-26 2018-08-10 中车青岛四方机车车辆股份有限公司 一种ios数据对象转换方法及装置
CN109189663A (zh) * 2018-07-12 2019-01-11 武汉精测电子集团股份有限公司 一种插件调试方法、测试方法及微内核架构系统
CN109189502A (zh) * 2018-09-17 2019-01-11 网易(杭州)网络有限公司 一种基于即时通讯公众平台的消息处理方法和相关设备

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"Type Conversion Sequence Recommendation Based on Semantic Web Technology";Haibo Yu 等;《 2018 IEEE SmartWorld, Ubiquitous Intelligence & Computing, Advanced & Trusted Computing, Scalable Computing & Communications, Cloud & Big Data Computing, Internet of People and Smart City Innovation (SmartWorld/SCALCOM/UIC/ATC/CBDCom/IOP/SCI)》;20181206;第240-245页 *
"基于插件机制的数据转换平台研究和实现";沈后威 等;《工业控制计算机》;20151125;第28卷(第11期);第1-3页 *

Also Published As

Publication number Publication date
CN109828796A (zh) 2019-05-31

Similar Documents

Publication Publication Date Title
CN109828796B (zh) 一种基于微内核架构的插件调用方法及装置
CN110149800B (zh) 一种用于处理与源程序的源代码相关联的抽象语法树的装置
Lee et al. TIE: Principled reverse engineering of types in binary programs
US9886249B2 (en) Universal transcompiling framework
US9785456B2 (en) Metadata-driven dynamic specialization
Moors et al. Scala-virtualized
US20070277163A1 (en) Method and tool for automatic verification of software protocols
US20090222827A1 (en) Continuation based declarative definition and composition
JP2012520518A (ja) マルチコア通信トポロジを生成する装置および関連する方法
CN106547520B (zh) 一种代码路径分析方法及装置
US11281441B2 (en) Method and apparatus for compiling source code object, and computer
US20180203676A1 (en) Removing library objects from a static library
US8935686B2 (en) Error-code and exception-based function dispatch tables
CN112346730B (zh) 一种中间表示的生成方法、计算机设备及存储介质
CN111506314A (zh) 项目开发的方法、装置、服务器及介质
CN110673852A (zh) 一种基于编译器前端实现控制流平坦的方法、系统及设备
US10275238B2 (en) Hybrid program analysis
Bergmayr et al. fREX: fUML-based reverse engineering of executable behavior for software dynamic analysis
JP2014211864A (ja) 未完成ソフトウェアの分析
Kamburjan From post-conditions to post-region invariants: deductive verification of hybrid objects
CN112905271A (zh) 一种应用程序接口api的调用方法、装置及电子设备
CN109271237B (zh) 仿真控制方法和装置
Kersten et al. ResAna: a resource analysis toolset for (real‐time) JAVA
US10521204B2 (en) Existential type packing for structurally-restricted existential types
CN111857816A (zh) 寄存器分配方法、装置、电子设备及计算机存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant