CN103197950A - 插件虚拟机实现方法 - Google Patents
插件虚拟机实现方法 Download PDFInfo
- Publication number
- CN103197950A CN103197950A CN2013101369254A CN201310136925A CN103197950A CN 103197950 A CN103197950 A CN 103197950A CN 2013101369254 A CN2013101369254 A CN 2013101369254A CN 201310136925 A CN201310136925 A CN 201310136925A CN 103197950 A CN103197950 A CN 103197950A
- Authority
- CN
- China
- Prior art keywords
- plug
- unit
- virtual machine
- actuator
- message
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 23
- 238000005538 encapsulation Methods 0.000 claims description 15
- 230000008676 import Effects 0.000 claims description 6
- 230000015572 biosynthetic process Effects 0.000 claims description 4
- 230000018109 developmental process Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000007634 remodeling Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000033772 system development Effects 0.000 description 1
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种插件虚拟机实现方法,包括以下步骤:(1)加载单元加载并读取配置文件信息,根据配置文件创建子系统;(2)插件管理器加载配置文件中涉及到的插件;(3)路由规则器确定插件执行器需要执行的插件编码,并将该插件编码传递给插件执行器;(4)插件执行器接收路由规则器传入的插件编码,并执行插件。本发明的插件虚拟机实现方法,通过在模块-控件、组件之间再抽象一层“插件”,将插件间的逻辑关系表达成配置文件的形式,供插件虚拟机使用,驱动插件虚拟机在合适的场景、环境中调用插件,将原本用程序代码实现的逻辑转变成描述性的文本语言。因此无需对控件间的逻辑编写大量的代码,有效减小开发工作量,降低软件开发成本。
Description
技术领域
本发明属于信息系统技术领域,具体地说,是涉及一种插件虚拟机实现方法。
背景技术
目前信息系统的软件开发,程序复用层面集中在“控件”层面,尤其基于Net WinForm 的信息系统开发,控件间缺少逻辑关联,控件更多的集中于自身功能逻辑的实现上,面向程序逻辑、功能内聚,系统缺少对控件间的逻辑管理,以及控件间缺少逻辑关联。目前,企业信息系统一般以功能模块构成,模块内根据业务逻辑、用户的操作逻辑组织控件实现客户需求,因此要实现企业信息系统的功能模块,还需要在控件的基础上,对控件间的逻辑编写大量的代码,致使开发工作量的增大,导致软件开发成本增加。
基于此,如何发明一种插件虚拟机,无需对控件间的逻辑编写大量的代码,有效减小开发工作量,降低软件开发成本。
发明内容
本发明为了解决现有信息系统开发缺少对控件间的逻辑管理、导致需要另外编写大量代码以实现控件间相互调用的问题,通过在控件和功能模块间再次抽象一层“插件”层,通过配置文件定义插件间的逻辑关系,对插件进行统一定义和管理,提供一种插件虚拟机用于解释执行该配置文件,减少插件间的逻辑代码的编写量。
为了解决上述技术问题,本发明采用以下技术方案予以实现:
一种插件虚拟机实现方法,包括以下步骤:
(1)、加载单元加载并读取配置文件信息,根据配置文件创建子系统,加载单元调用插件管理器执行步骤(2),所述的子系统包括:参数封装单元、共享数据堆、消息管理器、插件管理器、插件执行器、路由规则器;
(2)、插件管理器加载配置文件中涉及到的插件;
(3)、路由规则器根据插件执行器调用插件后返回的结果或者根据加载单元提供的插件调用入口点确定插件执行器需要执行的插件编码,并将该插件编码传递给插件执行器;
(4)、插件执行器接收路由规则器传入的插件编码,并从参数封装单元获得和本插件相关的参数;插件执行器通过调用插件的约定方法并在调用时传入从参数封装单元获得的参数来执行插件。
进一步的,还包括步骤(5)、插件间通过消息管理器接收/发送消息。
进一步的,步骤(2)中插件管理器查找到所有的配置文件中涉及到的插件后,确认可用的插件然后加载,插件管理器加载完毕后,等待插件执行器调用。
进一步的,步骤(2)中插件管理器加载配置文件中涉及到的插件时,由所述的加载单元通过net环境调用操作系统,在操作系统下查找插件。
进一步的,步骤(2)中加载配置文件中所涉及到的插件后,将插件加载至插件管理器中。
进一步的,步骤(4)中插件执行过程中产生的数据,存储至共享数据堆中,以供其他插件调用。
进一步的,步骤(5)中,所述的消息管理器包括消息队列和消息派发器,所述的消息队列接收消息,并将其队列,所述的消息派发器按照队列顺序将消息派发给该消息所指定的插件。
进一步的,步骤(5)中若插件管理器中没有加载所述的所指定的插件,则由插件管理器重新加载,以供插件执行器执行。
进一步的,步骤(3)中插件执行器执行完毕当前的插件后,还将当前插件的执行结果也即插件返回的数据转发至路由规则器中,所述的路由规则器根据插件执行器返回的数据确定下一个需要执行的的插件的编码,并将该插件编码发送给插件执行器,由插件执行器执行该编码对应的插件。
与现有技术相比,本发明的优点和积极效果是:本发明的插件虚拟机实现方法,通过在功能模块与控件、组件之间再抽象一层“插件”,使用XML作为插件配置文件的描述语言,表达插件间的逻辑,也即将插件间的逻辑关系表达成配置文件的形式,供插件虚拟机使用,驱动插件虚拟机在合适的场景、环境中调用插件,将原本用程序代码实现的逻辑转变成描述性的文本语言;同时,同一插件可以被多个模块配置文件使用,达到插件复用的目的,因此无需对控件间的逻辑编写大量的代码,有效减小开发工作量,降低软件开发成本。
结合附图阅读本发明实施方式的详细描述后,本发明的其他特点和优点将变得更加清楚。
附图说明
图1是本发明所提出的一种插件虚拟机实现方法的一种实施例方框图。
具体实施方式
下面结合附图对本发明的具体实施方式作进一步详细地说明。
实施例一,本实施例提供了一种插件虚拟机实现方法,其中,参见图1所示,插件虚拟机包括:
加载单元,用于加载并读取配置文件信息;
参数封装单元,用于对传入参数的封装以及存储;
共享数据堆,用于存储插件间的共享数据;
消息管理器,用于提供插件间的消息发送功能;
插件管理器,用于查找,加载,缓存插件;
插件执行器,用于执行插件;
路由规则器,用于确定下一个需要执行的插件的编码,并将插件编码发送给插件执行器,由插件执行器运行编码对应的插件;
本实施例中的插件虚拟机运行时,包括以下步骤:
S1、加载单元加载并读取配置文件信息,根据配置文件创建子系统,加载单元调用插件管理器执行步骤S2,所述的子系统包括:参数封装单元、共享数据堆、消息管理器、插件管理器、插件执行器、路由规则器、线程管理器;
S2、插件管理器加载配置文件中涉及到的插件;
S3、路由规则器根据插件执行器调用插件后返回的结果或者根据加载单元提供的插件调用入口点确定插件执行器需要执行的插件编码,并将该插件编码传递给插件执行器;
S4、插件执行器接收路由规则器传入的插件编码,并从参数封装单元获得和本插件相关的参数;插件执行器通过调用插件的约定方法并在调用时传入从参数封装单元获得的参数来执行插件。
步骤S2中插件管理器查找到所有的配置文件中涉及到的插件后,确认可用的插件然后加载,插件管理器加载完毕后,等待插件执行器调用。步骤S2中插件管理器加载配置文件中涉及到的插件时,由加载单元通过net环境调用操作系统,在操作系统下查找插件。插件虚拟机运行时包含在名为 pluginvmcore.dll 的动态链接库中,为插件提供面向操作系统和Net环境的基础服务。具体包括:
1)文件操作及路径查找服务;
2)唯一主机码创建(包含CPU-网卡);也即密码验证服务,通过读取主机唯一的CPU序列号以及网卡的序列号,按照相应的公式计算出验证码,与软件中存储的密码相匹配,保障了软件安装合法性,可以有效防止盗版。
3)加密解密;
4)面向Window操作系统API的托管封装;
5)解释模块配置文件,根据模块配置文件创建各种子系统。
步骤S2中加载配置文件中所涉及到的插件后,将插件加载至插件管理器中,由插件管理器统一管理加载的插件,并且将参数存储至参数封装单元中。参数封装单元提供对运行插件虚拟机传入的参数的封装,具体为一个面向对象的哈希表。
进一步的,步骤S4中插件执行过程中产生的数据,存储至共享数据堆中,以供其他插件调用。不同的插件可以将需要共享的数据放入共享数据堆中,插件虚拟机退出后共享数据堆可以自动回收。插件虚拟机维护共享数据堆中的数据的引用计数,当数据引用计数为0的时候,共享数据将被自动回收。
本实施例中还包括步骤S5,插件间还可以通过插件虚拟机发送/接收消息。消息管理器包括消息队列和消息派发器,消息队列接收消息,并将其队列,消息派发器按照队列顺序将消息派发给该消息所指定的插件。消息中携带有需要执行插件的信息,消息管理器向插件管理器中的需要执行的插件派发该消息,由插件管理器将该插件的编码传给插件执行器,最终插件执行器根据该插件的编码执行该插件。消息管理器的功能还有:消息队列,负责存储插件发送过来的消息,并按照先后顺序排成队列的形式。其中,需要说明的是,插件需要实现AcceptRunMsg(RunMessage msg)接口接收插件管理器发送的消息。
步骤S5中若插件管理器中没有加载所述的需要执行的插件,则由插件管理器重新加载,然后由插件执行器执行。具体过程与初始加载插件时一致:由加载单元通过net环境调用操作系统,在操作系统下查找插件。加载后的插件存储至插件管理器中,然后由插件执行器可以调用。
步骤S4种插件执行器执行插件时,同时从参数封装单元调用该插件的参数。插件执行器负责从插件管理器中取出插件,调用插件的特定方法ExcutePlugin(PluginParam param)执行插件;插件执行器还负责处理插件异常信息,如果遇到需要退出插件虚拟机的异常则直接调用插件虚拟机提供的退出函数ExitVm(Excption ecode)退出插件虚拟机。
步骤S4中插件执行器执行完毕当前插件后,还将当前插件运行完毕后返回的数据转发至路由规则器中,所述的路由规则器根据插件执行器返回的数据确定下一个需要执行的插件的编码,并将插件编码发送给插件执行器,由插件执行器运行编码对应的插件。
与现有技术相比,本发明的优点和积极效果是:本发明的插件虚拟机实现方法,通过在功能模块与控件、组件之间再抽象一层“插件”,使用XML作为插件配置文件的描述语言,表达插件间的逻辑,也即将插件间的逻辑关系表达成配置文件的形式,供插件虚拟机使用,驱动插件虚拟机在合适的场景、环境中调用插件,将原本用程序代码实现的逻辑转变成描述性的文本语言;同时,同一插件可以被多个模块配置文件使用,达到插件复用的目的。
当然,上述说明并非是对本发明的限制,本发明也并不仅限于上述举例,本技术领域的普通技术人员在本发明的实质范围内所做出的变化、改型、添加或替换,也应属于本发明的保护范围。
Claims (9)
1.一种插件虚拟机实现方法,其特征在于,包括以下步骤:
(1)、加载单元加载并读取配置文件信息,根据配置文件创建子系统,创建的子系统包括:参数封装单元、共享数据堆、消息管理器、插件管理器、插件执行器;加载单元随后调用插件管理器执行步骤(2);
(2)、插件管理器加载配置文件中涉及到的插件;
(3)、路由规则器根据插件执行器调用插件后返回的结果或者根据加载单元提供的插件调用入口点确定插件执行器需要执行的插件编码,并将该插件编码传递给插件执行器;
(4)、插件执行器接收路由规则器传入的插件编码,并从参数封装单元获得和本插件相关的参数;插件执行器通过调用插件的约定方法并在调用时传入从参数封装单元获得的参数来执行插件。
2.根据权利要求1所述的插件虚拟机实现方法,其特征在于,还包括步骤(5),插件间通过消息管理器发送/接收消息。
3.根据权利要求2所述的插件虚拟机实现方法,其特征在于,步骤(2)中插件管理器查找到所有的配置文件中涉及到的插件后,确认可用的插件然后加载,插件管理器加载完毕后,等待插件执行器调用。
4.根据权利要求3所述的插件虚拟机实现方法,其特征在于,步骤(2)中插件管理器加载配置文件中涉及到的插件时,由所述的加载单元通过net环境调用操作系统,在操作系统下查找插件。
5.根据权利要求4所述的插件虚拟机实现方法,其特征在于,步骤(2)中插件管理器加载配置文件中所涉及到的插件后,将插件加载至插件管理器中。
6.根据权利要求5所述的插件虚拟机实现方法,其特征在于,步骤(4)中插件执行过程中产生的数据,存储至共享数据堆中,以供其他插件调用。
7.根据权利要求6所述的插件虚拟机实现方法,其特征在于,步骤(5)中,所述的消息管理器包括消息队列和消息派发器,所述的消息队列接收消息,并将其队列,所述的消息派发器按照队列顺序将消息派发给该消息所指定的插件。
8.根据权利要求7所述的插件虚拟机实现方法,其特征在于,步骤(5)中若插件管理器中没有加载所述的所指定的插件,则由插件管理器重新加载,以供插件执行器执行。
9.根据权利要求8所述的插件虚拟机实现方法,其特征在于,步骤(3)中插件执行器执行完毕当前的插件后,还将当前插件的执行结果也即插件返回的数据转发至路由规则器中,所述的路由规则器根据插件执行器返回的数据确定下一个需要执行的的插件的编码,并将该插件编码发送给插件执行器,由插件执行器执行该编码对应的插件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310136925.4A CN103197950B (zh) | 2013-04-19 | 2013-04-19 | 插件虚拟机实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310136925.4A CN103197950B (zh) | 2013-04-19 | 2013-04-19 | 插件虚拟机实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103197950A true CN103197950A (zh) | 2013-07-10 |
CN103197950B CN103197950B (zh) | 2016-08-03 |
Family
ID=48720544
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310136925.4A Expired - Fee Related CN103197950B (zh) | 2013-04-19 | 2013-04-19 | 插件虚拟机实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103197950B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106096032A (zh) * | 2016-06-28 | 2016-11-09 | 天津海量信息技术股份有限公司 | 一种数据挖掘系统 |
CN106557307A (zh) * | 2015-09-29 | 2017-04-05 | 腾讯科技(深圳)有限公司 | 业务数据的处理方法及处理系统 |
CN109725952A (zh) * | 2019-01-07 | 2019-05-07 | 深圳市网心科技有限公司 | 一种应用程序插件化的方法、系统以及相关装置 |
CN110704124A (zh) * | 2019-09-19 | 2020-01-17 | 国云科技股份有限公司 | 一种流数据结构化处理系统及方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101216761A (zh) * | 2007-12-28 | 2008-07-09 | 北京邮电大学 | 用于ngn业务开发的电信应用软件框架 |
CN101582039A (zh) * | 2009-06-18 | 2009-11-18 | 深圳市汇海科技开发有限公司 | 一种节省内存开销的插件加载方法 |
-
2013
- 2013-04-19 CN CN201310136925.4A patent/CN103197950B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101216761A (zh) * | 2007-12-28 | 2008-07-09 | 北京邮电大学 | 用于ngn业务开发的电信应用软件框架 |
CN101582039A (zh) * | 2009-06-18 | 2009-11-18 | 深圳市汇海科技开发有限公司 | 一种节省内存开销的插件加载方法 |
Non-Patent Citations (2)
Title |
---|
张晓红等: "基于模版技术的可配置页面控件实现", 《科技资讯》 * |
郁超等: "一种基于XML的动态插件机制", 《电力信息化》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106557307A (zh) * | 2015-09-29 | 2017-04-05 | 腾讯科技(深圳)有限公司 | 业务数据的处理方法及处理系统 |
CN106557307B (zh) * | 2015-09-29 | 2021-06-11 | 腾讯科技(深圳)有限公司 | 业务数据的处理方法及处理系统 |
CN106096032A (zh) * | 2016-06-28 | 2016-11-09 | 天津海量信息技术股份有限公司 | 一种数据挖掘系统 |
CN109725952A (zh) * | 2019-01-07 | 2019-05-07 | 深圳市网心科技有限公司 | 一种应用程序插件化的方法、系统以及相关装置 |
CN110704124A (zh) * | 2019-09-19 | 2020-01-17 | 国云科技股份有限公司 | 一种流数据结构化处理系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103197950B (zh) | 2016-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102469033B (zh) | 一种消息订阅系统以及消息发送方法 | |
CN110008665B (zh) | 一种区块链的权限控制方法及装置 | |
US9361224B2 (en) | Non-intrusive storage of garbage collector-specific management data | |
CN113079200A (zh) | 一种数据处理的方法、装置及系统 | |
CN104077420A (zh) | 一种数据导入HBase数据库的方法和装置 | |
CN106060176A (zh) | 一种基于混合云的云计算应用架构及云计算服务方法 | |
CN112486915B (zh) | 数据存储方法及装置 | |
CN104754062A (zh) | 基于互联网的信息推广方法、服务器及用户终端 | |
CN109032590B (zh) | 一种可视化开发环境的配置方法、装置、终端及存储介质 | |
CN108345462B (zh) | 组件升级的方法和装置 | |
CN106446159A (zh) | 一种存储文件的方法、第一虚拟机及名称节点 | |
CN103414762B (zh) | 云备份方法和装置 | |
CN110830548A (zh) | 物联网卡运营平台、数据更新方法、装置及存储介质 | |
CN103197950A (zh) | 插件虚拟机实现方法 | |
CN103118100A (zh) | 一种提高虚拟机应用的可用性的保障方法及系统 | |
CN112230857B (zh) | 一种混合云系统、混合云盘申请方法和数据存储方法 | |
CN109005198A (zh) | 一种控制器防攻击安全策略生成方法及系统 | |
CN110187986A (zh) | 一种命令管理方法、系统、装置及计算机可读存储介质 | |
CN105320676A (zh) | 一种客户数据查询服务方法及装置 | |
CN113961226B (zh) | 一种软件开发工具包修复方法、终端、服务器及设备 | |
CN113722114A (zh) | 一种数据服务的处理方法、装置、计算设备及存储介质 | |
CN113886015A (zh) | 一种基于k8s的应用消息发布方法 | |
CN109684846A (zh) | 一种文件提取方法及装置 | |
CN105468304A (zh) | 一种Native存储卡及其管理方法 | |
CN114675940A (zh) | 应用实例构建方法、装置和设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160803 |
|
CF01 | Termination of patent right due to non-payment of annual fee |