CN105975261B - 一种面向统一接口调用的运行时系统及运行方法 - Google Patents
一种面向统一接口调用的运行时系统及运行方法 Download PDFInfo
- Publication number
- CN105975261B CN105975261B CN201610280393.5A CN201610280393A CN105975261B CN 105975261 B CN105975261 B CN 105975261B CN 201610280393 A CN201610280393 A CN 201610280393A CN 105975261 B CN105975261 B CN 105975261B
- Authority
- CN
- China
- Prior art keywords
- function
- instance
- runtime system
- module
- interface
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 63
- 230000006870 function Effects 0.000 claims abstract description 904
- 230000008569 process Effects 0.000 claims description 32
- 238000012544 monitoring process Methods 0.000 claims description 29
- 238000004891 communication Methods 0.000 claims description 24
- 238000011156 evaluation Methods 0.000 claims description 14
- 238000005516 engineering process Methods 0.000 claims description 13
- 230000002085 persistent effect Effects 0.000 claims description 13
- 238000005538 encapsulation Methods 0.000 claims description 8
- 230000007246 mechanism Effects 0.000 claims description 4
- 238000012546 transfer Methods 0.000 claims description 4
- 238000012545 processing Methods 0.000 claims description 3
- 239000003795 chemical substances by application Substances 0.000 description 76
- 238000004364 calculation method Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008092 positive effect Effects 0.000 description 1
- 239000000344 soap Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种面向统一接口调用的运行时系统及运行方法,属于计算机领域。运行时系统包括:“运行时系统代理”装置、“运行时系统”装置、“函数接口服务器”装置、“通道”装置和“网络”装置。运行时系统的运行方法包括:注册“第三方函数组件库”的函数;“应用程序”加载“运行时系统代理”;“应用程序”所要调用的函数由“运行时系统代理”转交给“运行时系统”;“运行时系统”根据函数接口信息找到对应“第三方函数组件库”、执行该函数实例并将执行结果回送给“运行时系统代理”;“运行时系统代理”将该结果返给“应用程序”。本发明通过构建统一接口调用的运行时系统实现不同编程语言的组件库间复用、透明计算和减少应用开销。
Description
技术领域
本发明属于计算机领域,主要关注不同编程语言的组件库之间有效复用以及透明计算。
背景技术
目前虽然有各种分布式组件技术来支持应用程序的计算分散运行,但是仍然有如下问题:其一、各种Java类库、C/C++二进制类库等不同编程语言实现的高质量类库无法共享复用,应用程序必须选择某一种编程技术,这大大限制了应用程序的开发效率,同时也增大了应用程序运行时资源的消耗,例如应用程序越来越胖从而消耗大量内存;其二、针对各种异构的分布式组件的访问效率低下,虽然面向服务体系架构SOA技术在此方面取得了很大进展,但是仍然需要应用程序静态或者动态访问各种组件,没有解决访问效率;其三、很难支持在不修改应用程序的前提下实现透明计算。
发明内容
本发明目的是为了实现不同编程语言的组件库之间有效复用,实现透明计算,减少应用系统开销。提供一种面向统一接口调用的运行时系统及运行方法。
本发明技术方案
1.一种面向统一接口调用的运行时系统,所述系统包括“运行时系统代理”装置、“运行时系统”装置、“函数接口服务器”装置、“通道”装置和“网络”装置;“运行时系统代理”装置,主要是负责监控、接收和返回“应用程序”执行过程中请求调用“函数”的执行代理;“运行时系统”装置,主要是负责“第三方函数组件库”的“函数”注册、管理和检索,以及请求调用函数实例的具体执行;“函数接口服务器”装置,主要是负责整个网络中各个“运行时系统”中提供函“第三方函数组件库”的“函数”注册、管理和检索服务;“运行时系统代理”装置和“运行时系统”装置通过“通道”装置互联;“运行时系统”装置和“函数接口服务器”装置通过“网络”装置互联;“运行时系统代理”装置和“函数接口服务器”装置不直接互联;
其中,
“运行时系统代理”装置包括:函数执行监控模块、函数执行请求代理模块、函数执行请求封装模块、“函数统一接口”请求发送模块、“函数统一接口”结果接收模块、函数执行结果拆装模块;函数执行监控模块负责动态监控“应用程序”执行过程中请求调用“函数”的执行,并负责将该函数调用实例交给函数执行请求代理模块来代理执行以及将该函数调用实例的执行结果返回给“应用程序”;函数执行请求封装模块负责将该函数调用实例转化为“函数统一接口”实例;函数执行结果拆装模块负责将“函数统一接口”实例执行结果转化为函数调用实例执行结果;“函数统一接口”请求发送模块负责将“函数统一接口”实例发送到“通道”中;“函数统一接口”结果接收模块负责从“通道”中获得“函数统一接口”实例执行结果,并交给函数执行请求代理模块;函数执行请求代理模块负责接收来自“应用程序”或者函数执行监控模块的函数调用实例,函数执行请求代理模块通过函数执行请求封装模块将函数调用实例转化为“函数统一接口”实例,并通过“函数统一接口”请求发送模块将该“函数统一接口”实例进一步发送到“通道”中,并通过函数执行结果拆装模块将该“函数统一接口”实例执行结果转化为该函数调用实例执行结果,以及将该函数调用实例执行结果返回给对应的调用者;
“运行时系统”装置包括:业务模块组、网络通信模块和持久存储模块;业务模块组包括函数信息注册模块、函数信息管理模块、函数信息检索模块、函数信息库、函数实例库、“函数统一接口”实例收发模块、函数实例调度模块和函数实例执行模块;函数信息注册模块与函数信息库连接,负责“第三方函数组件库”的“函数”接口信息的登记注册;函数信息管理模块与函数信息库连接,负责对已注册的“函数”接口信息的信息维护,包括修改、删除、合并、关联、发布和撤销“函数”接口信息;函数信息检索模块与函数信息库和函数实例执行模块连接,负责从函数信息库中对“函数”接口信息的检索查询、以及为函数实例执行模块提供“函数”接口信息的检索查询服务;函数信息库负责提供“函数”接口信息基础数据访问;函数实例库分别与“函数统一接口”实例收发模块、函数实例调度模块和函数实例执行模块连接,负责提供函数实例信息基础数据访问;“函数统一接口”实例收发模块负责接收“运行时系统代理”发来的“函数统一接口”实例执行请求、以及返回“函数统一接口”实例执行结果给对应的“运行时系统代理”;函数实例执行模块负责具体加载“函数统一接口”实例所对应“第三方函数组件库”并执行对应的函数调用实例;函数实例调度模块分别与“函数统一接口”实例收发模块和函数实例执行模块连接,负责对待执行“函数统一接口”实例的执行优先级及先后顺序进行管理、以及协调“函数统一接口”实例收发模块和函数实例执行模块的运行;业务模块组中的各个模块通过网络通信模块实现与其它装置的网络通信;函数信息库和函数实例库的数据持久保存在持久存储模块中;
“函数接口服务器”装置包括:业务模块组、网络通信模块和持久存储模块;业务模块组包括函数信息注册模块、函数信息管理模块、函数信息检索模块和函数信息库;函数信息注册模块、函数信息管理模块和函数信息检索模块分别与函数信息库连接;函数信息注册模块负责“第三方函数组件库”的“函数”接口信息的登记注册;函数信息管理模块负责对已注册的“函数”接口信息的信息维护,包括修改、删除、合并、关联、发布和撤销“函数”接口信息;函数信息检索模块负责“函数”接口信息的检索查询;函数信息库负责提供“函数”接口信息基础数据访问;业务模块组中的各个模块通过网络通信模块实现与其它装置的网络通信;函数信息库的数据持久保存在持久存储模块中。
所述系统中,“应用程序”执行过程中请求调用“函数”的函数代码具体执行是由“运行时系统”装置来完成,“应用程序”本身并不真正执行请求调用“函数”的函数代码;“应用程序”将将请求调用“函数”的“函数调用实例”交给“运行时系统代理”装置,“运行时系统代理”装置进一步通过“通道”装置将请求调用“函数”的“函数调用实例”传递给“运行时系统”装置;当“运行时系统代理”装置和“运行时系统”装置在同一个计算机结点时“通道”装置可采用进程间通信技术实现,当“运行时系统代理”装置和“运行时系统”装置不在同一个计算机结点时“通道”装置可采用网络消息队列技术实现;“运行时系统”装置中的“函数实例执行”模块来负责具体执行“应用程序”所请求调用的“函数”,“函数实例执行”模块既可以在“运行时系统”装置内直接运行来完成、也可以由“运行时系统”装置调用“第三方函数组件库”的外部服务程序来完成、还可以由“运行时系统”装置委托网上的其它“运行时系统”装置来完成;“函数接口服务器”装置不负责具体执行“应用程序”所请求调用的“函数”代码。
所述系统中,只有在“运行时系统”装置中直接注册的“函数”才能在该“运行时系统”装置中直接运行来完成、或者由“运行时系统”装置调用“第三方函数组件库”的外部服务程序来完成;“运行时系统”装置具体采用上述两种方式的哪一种则取决于“应用程序”所请求调用“函数”所属的组件库类型;“运行时系统”装置所支持的“第三方函数组件库”的组件库类型包括Corba、EJB、COM+、Web Service、OLE、Java库代码、DLL库代码和SO库代码。
所述系统中,“运行时系统代理”装置既可以在“应用程序”进程空间内来运行,也可以作为独立的进程来运行;“运行时系统代理”装置在“应用程序”进程空间内来运行时,“应用程序”需要将“运行时系统代理”装置的代码编译链接到该“应用程序”中;“运行时系统代理”装置监控“应用程序”所请求调用“函数”有两种方法:第一种方法为“应用程序”所请求调用“函数”的实现代码改写为将该调用“函数”及其参数传递给“运行时系统代理”装置的函数执行请求代理模块;第二种方法为“运行时系统代理”装置中函数执行监控模块采用函数钩子技术来对“应用程序”所请求调用“函数”增加监控钩子函数代码。
所述系统中,“运行时系统”装置中“函数”的注册信息需要包括函数唯一索引号、函数类别号、函数名、参数个数、{参数名、参数类型}序列表、函数所属组件库类型、函数所属组件库名称、函数所属组件库访问路径、函数所属组件库开发商唯一索引号、运行平均时间、运行可靠性评估值;“函数接口服务器”装置上“函数”的注册信息需要包括函数唯一索引号、函数类别号、函数名、参数个数、{参数名、参数类型}序列表、函数所属组件库类型、函数所属组件库名称、函数所属组件库访问路径、函数所属组件库开发商唯一索引号、所属“运行时系统”装置唯一索引号、所属“运行时系统”装置访问路径、运行平均时间和运行可靠性评估值。
所述系统中,“运行时系统代理”装置和“运行时系统”装置之间采用“函数统一接口”格式进行函数请求调用和执行结果信息的表达;“运行时系统”装置和“函数接口服务器”装置之间采用“函数统一接口”格式进行函数接口信息的查询;不同“运行时系统”装置之间采用采用“函数统一接口”格式进行函数请求调用和执行结果信息的表达;“函数统一接口”格式采用可扩展标记语言对函数的声明、调用以及执行结果信息进行描述;“函数统一接口”实例既可以为文件,也可以为字节流。
所述系统中,“应用程序”执行过程中请求调用“函数”的“函数调用实例”信息需要包括函数所属组件库名称、函数名、参数个数、{参数名、参数值}序列表;“函数统一接口”实例信息需要包括函数实例唯一索引号、函数所属组件库类型、函数所属组件库名称、函数名、参数个数、{参数名、参数值}序列表、函数最大执行时间;“函数统一接口”实例的执行结果需要包括函数实例唯一索引号、函数唯一索引号、函数类别号、函数名、所属“运行时系统”唯一索引号、结果参数个数、{结果参数名、结果参数值}序列表、运行实际时间。
所述系统中,“运行时系统”装置中,“函数实例库”可针对待执行“函数统一接口”实例分为多个优先级队列,并由“函数实例调度”模块来设置“函数统一接口”实例执行的优先级以及优先级队列;“函数实例调度”模块通过操作系统提供的各种进程间或者线程间通信机制来与“函数统一接口”实例收发模块、“函数实例执行”模块进行协作运行。
2.一种面向统一接口调用的运行时系统的运行方法,所述方法包括具体步骤如下:
第1步、“第三方函数组件库”的“函数”可随时注册到“运行时系统”;
第2步、“运行时系统”中已注册“函数”信息随时更新到“函数接口服务器”;
第3步、“应用程序”启动,并加载“运行时系统代理”;“运行时系统代理”连接当前指定的“运行时系统”,当前指定的“运行时系统”简称为当前“运行时系统”;
第4步、“应用程序”继续运行,直至“应用程序”执行退出函数或者“应用程序”执行到请求调用“运行时系统代理”所负责的“函数”;若“应用程序”继续运行过程中请求调用“运行时系统代理”所负责的“函数”,则执行第5步;若“应用程序”执行退出函数,则执行第15步;
第5步、“应用程序”运行过程中请求调用“运行时系统代理”所负责的“函数”时,“运行时系统代理”将该“函数”的“函数调用实例”转化为对应的“函数统一接口”实例,并将该“函数统一接口”实例转交给当前“运行时系统”等待处理结果;
第6步、当前“运行时系统”接收到待执行的“函数统一接口”实例后,检索本地“函数信息库”查找该“函数统一接口”实例所对应的“第三发函数组件库”信息,若检索到该“函数统一接口”实例所对应的“第三发函数组件库”信息则执行第10步,否则执行第7步;
第7步、当前“运行时系统”向“函数接口服务器”提出请求检索第5步中“函数统一接口”实例所对应的函数注册信息,若“函数接口服务器”返回结果未检索到该“函数统一接口”实例所对应的函数注册信息则执行第11步,否则执行第8步;
第8步、当前“运行时系统”将请求第7步中检索到的该函数所注册的异地“运行时系统”来完成该“函数统一接口”实例的执行,若异地“运行时系统”未正常提供服务则执行第11步,否则执行第9步;
第9步、当前“运行时系统”获得异地“运行时系统”返回的“函数统一接口”实例执行结果作为第6步中“函数统一接口”实例执行结果,并执行第12步;
第10步、当前“运行时系统”通过“函数实例执行模块”调用“函数统一接口”实例所对应的函数组件库来执行该“函数统一接口”实例,并将该“函数统一接口”实例执行结果作为第6步中“函数统一接口”实例执行结果;并进一步执行第12步;
第11步、当前“运行时系统”将第6步中“函数统一接口”实例执行结果设置为“执行异常”;
第12步、当前“运行时系统”将第6步中“函数统一接口”实例执行结果返回给“运行时系统代理”;
第13步、“运行时系统代理”将第12步中“函数统一接口”实例执行结果转化为“函数调用实例”执行结果,并将该“函数调用实例”执行结果返回给“应用程序”;
第14步、“应用程序”继续执行第4步;
第15步、“应用程序”执行结束。
所述方法中,当“运行时系统”在“函数信息库”检索到“函数统一接口”实例对应有不止一个的函数信息时,“运行时系统”既可以随机选取一个函数组件库来运行,也可以根据该组“函数”信息中的辅助信息来决定选择哪一个函数组件库来运行,“函数”信息中的辅助信息包括运行平均时间、运行可靠性评估值以及函数所属组件库开发商唯一索引号中的全部或者部分;
所述方法中,当“函数接口服务器”在“函数信息库”检索到“函数统一接口”实例对应有不止一个的函数信息时,“函数接口服务器”既可以随机选取一个函数组件库来运行,也可以根据该组“函数”信息中的辅助信息来决定选择哪一个函数组件库来运行,“函数”信息中的辅助信息包括运行平均时间、运行可靠性评估值、函数所属组件库开发商唯一索引号以及所属“运行时系统”唯一索引号中的全部或者部分。
本发明所涉及的具体内容及所述术语的含义是:
(1)函数:指实现某种功能的可执行代码片段,且该代码片段有输入输出参数。本发明中将函数function、过程procedure、服务service、脚本shell均视为可互通概念,它们都是实现某种功能的可执行代码片段;函数包括函数接口信息和函数实现代码;
(2)组件库:指软件开发商提供的实现特定功能的一组函数集合,组件库包括Corba、EJB、COM+、Web Service、Java库代码、DLL库代码、SO库代码、DCOM、OLE等等,这些组件库有的需要在应用程序的进程空间内执行,有的需要在独立的进程空间内执行,有的需要在网络上的其它计算机结点上执行,这些统称为组件库;一个组件库可以包括一个或者多个函数;本发明中“第三方函数组件库”和组件库均视为可互通概念;
(3)函数接口信息:指函数的定义声明,一般包括函数名、参数个数、{参数名、参数类型}序列表、函数所属组件库类型、函数所属组件库名称、函数所属组件库访问路径、函数唯一索引号;函数接口信息也称为函数的接口说明;
(4)函数调用实例:指函数的一次具体执行,函数实例既包括函数的接口说明、也包括各个参数的实际参数值;函数调用实例也简称为函数实例;
(5)函数统一接口:指一种面向函数声明、调用以及执行结果信息进行描述的可扩展标记语言,例如JSON、XML等格式;
(6)“函数统一接口”实例指采用“函数统一接口”描述的函数实例;
(7)运行时系统:指负责各种函数组件库的“函数”注册、管理和检索,以及请求调用函数实例或者“函数统一接口”实例的具体执行的计算机执行单元;运行时系统可以是多线程实现,也可以是多进程实现。
本发明的优点和积极效果:
本发明能够实现不同编程语言的组件库间共享复用,实现透明计算,减少应用系统开销。
本发明能够支持应用程序无需改变的情况下或者无需针对各类组件访问机制的情况下有效地访问各类组件库;特别是对与本应用程序不同编程语言的组件库的访问、共享与复用;本发明能够支持应用程序无需改变的情况下,应用程序透明地调用网络上的相同含义的函数执行,从而实现透明计算;本发明能够大大减少应用程序自身对系统资源的消耗,更多的被调用函数都是委托给“运行时系统”来完成,而“运行时系统”可实现高效率、多次复用,无需改变应用程序本身。
附图说明
图1是本发明中系统架构示意图。
图2是本发明中“运行时系统代理”内部架构示意图。
图3是本发明中“运行时系统”内部架构示意图。
图4是本发明中“函数接口服务器”内部架构示意图。
图5是本发明中示例函数-斐波那契Fibonacci函数的函数声明及函数实现。
具体实施方式
本发明提供了一种面向统一接口调用的运行时系统及运行方法。为能进一步了解本发明的技术内容、特点及功效,兹列举以下应用实例,并配合附图详细说明如下。
实施例1、一种面向统一接口调用的运行时系统:
本发明给出一种面向统一接口调用的运行时系统,具体包括如下:
“运行时系统代理”装置140、“运行时系统”装置160、“函数接口服务器”装置200、“通道”装置150和“网络”装置300;“运行时系统代理”装置140,主要是负责监控、接收和返回“应用程序”执行过程中请求调用“函数”的执行代理;“运行时系统”装置160,主要是负责“第三方函数组件库”的“函数”注册、管理和检索,以及请求调用函数实例的具体执行;“函数接口服务器”装置200,主要是负责整个网络中各个“运行时系统”中提供函“第三方函数组件库”的“函数”注册、管理和检索服务;“运行时系统代理”装置140和“运行时系统”装置160通过“通道”装置150互联;“运行时系统”装置160和“函数接口服务器”装置200通过网络300互联;“运行时系统代理”装置140和“函数接口服务器”装置200不直接互联;
其中,
“运行时系统代理”装置140包括:函数执行监控模块14011、函数执行请求代理模块14010、函数执行请求封装模块14012、“函数统一接口”请求发送模块14013、“函数统一接口”结果接收模块14014、函数执行结果拆装模块14015;函数执行监控模块14011负责动态监控“应用程序”120执行过程中请求调用“函数”的执行,并负责将该函数调用实例交给函数执行请求代理模块14010来代理执行以及将该函数调用实例的执行结果返回给“应用程序”120;函数执行请求封装模块14012负责将该函数调用实例转化为“函数统一接口”实例;函数执行结果拆装模块14015负责将“函数统一接口”实例执行结果转化为函数调用实例执行结果;“函数统一接口”请求发送模块14013负责将“函数统一接口”实例发送到“通道”150中;“函数统一接口”结果接收模块14014负责从“通道”150中获得“函数统一接口”实例执行结果,并交给函数执行请求代理模块14010;函数执行请求代理模块14010负责接收来自“应用程序”120或者函数执行监控模块14011的函数调用实例,函数执行请求代理模块14010通过函数执行请求封装模块14012将函数调用实例转化为“函数统一接口”实例,并通过“函数统一接口”请求发送模块14013将该“函数统一接口”实例进一步发送到“通道”150中,并通过函数执行结果拆装模块14015将该“函数统一接口”实例执行结果转化为该函数调用实例执行结果,以及将该函数调用实例执行结果返回给对应的调用者,对应的调用者或者是“应用程序”120、或者函数执行监控模块14011;“运行时系统代理”装置140简称RTS代理;
“运行时系统”装置160包括:业务模块组、网络通信模块16020和持久存储模块16021;业务模块组包括函数信息注册模块16013、函数信息管理模块16014、函数信息检索模块16015、函数信息库16011、函数实例库16012、“函数统一接口”实例收发模块16016、函数实例调度模块16017和函数实例执行模块16018;函数信息注册模块16013与函数信息库16011连接,负责“第三方函数组件库”的“函数”接口信息的登记注册;函数信息管理模块16014与函数信息库16011连接,负责对已注册的“函数”接口信息的信息维护,包括修改、删除、合并、关联、发布和撤销“函数”接口信息;函数信息检索模块16015与函数信息库16011和函数实例执行模块16018连接,负责从函数信息库16011中对“函数”接口信息的检索查询、以及为函数实例执行模块16018提供“函数”接口信息的检索查询服务;函数信息库16011负责提供“函数”接口信息基础数据访问;函数实例库16012分别与“函数统一接口”实例收发模块16016、函数实例调度模块16017和函数实例执行模块16018连接,负责提供“函数调用实例”即函数实例信息基础数据访问;“函数统一接口”实例收发模块16016负责接收“运行时系统代理”140发来的“函数统一接口”实例执行请求、以及返回“函数统一接口”实例执行结果给对应的“运行时系统代理”140;函数实例执行模块16018负责具体加载“函数统一接口”实例所对应“第三方函数组件库”并执行对应的函数调用实例;函数实例调度模块16017分别与“函数统一接口”实例收发模块16016和函数实例执行模块16018连接,负责对待执行“函数统一接口”实例的执行优先级及先后顺序进行管理、以及协调“函数统一接口”实例收发模块16016和函数实例执行模块16018的运行;业务模块组中的各个模块通过网络通信模块16020实现与其它装置的网络通信;函数信息库16011和函数实例库16012的数据持久保存在持久存储模块16021中;“运行时系统”装置160简称RTS;
“函数接口服务器”装置200包括:业务模块组、网络通信模块20020和持久存储模块20021;业务模块组包括函数信息注册模块20013、函数信息管理模块20014、函数信息检索模块20015和函数信息库20011;函数信息注册模块20013、函数信息管理模块20014和函数信息检索模块20015分别与函数信息库20011连接;函数信息注册模块20013负责“第三方函数组件库”的“函数”接口信息的登记注册;函数信息管理模块20014负责对已注册的“函数”接口信息的信息维护,包括修改、删除、合并、关联、发布和撤销“函数”接口信息;函数信息检索模块20015负责“函数”接口信息的检索查询;函数信息库20011负责提供“函数”接口信息基础数据访问;业务模块组中的各个模块通过网络通信模块20020实现与其它装置的网络通信;函数信息库20011的数据持久保存在持久存储模块20021中;“函数接口服务器”装置200简称FIS。
所述系统中,“应用程序”120执行过程中请求调用“函数”的函数代码具体执行是由“运行时系统”装置160来完成,“应用程序”本身并不真正执行请求调用“函数”的函数代码;“应用程序”将将请求调用“函数”的“函数调用实例”交给“运行时系统代理”装置140,“运行时系统代理”装置140进一步通过“通道”装置150将请求调用“函数”的“函数调用实例”传递给“运行时系统”装置160;当“运行时系统代理”装置140和“运行时系统”装置160在同一个计算机结点时“通道”装置150可采用进程间通信技术实现,当“运行时系统代理”装置140和“运行时系统”装置160不在同一个计算机结点时“通道”装置150可采用网络消息队列技术或者网络存储技术实现;
“运行时系统”装置160中的“函数实例执行”模块16018来负责具体执行“应用程序”120所请求调用的“函数”,“函数实例执行”模块16018既可以在“运行时系统”装置160内直接运行来完成、也可以由“运行时系统”装置160调用“第三方函数组件库”170的外部服务程序来完成、还可以由“运行时系统”装置160委托网上的其它“运行时系统”装置160来完成;
例如,“函数实例执行”模块16018既可以在“运行时系统”装置160内直接运行来完成的情况:
“函数实例执行”模块可以在当前进程或者创建新进程或者新线程中直接执行DLL库函数、Java库来完成组件库指定函数的具体执行。
例如,“函数实例执行”模块16018也可以由“运行时系统”装置160调用“第三方函数组件库”170的外部服务程序来完成的情况:
对于EJB组件库、Corba组件库、COM+组件库等,这些组件的运行事实上是在“运行时系统”之外的组件服务器空间中运行、甚至是网络中其它计算节点上组件服务器空间中运行,此时“运行时系统”装置160中的“函数实例执行”模块16018可以作为上述组件的客户端直接远程调用组件服务器来完成组件库指定函数的具体执行;针对不同组件库的调用实现技术已经非常成熟,不赘述。
例如,“函数实例执行”模块16018也可以由“运行时系统”装置160委托网上的其它“运行时系统”装置160来完成的情况:
若某个组件库是在另外一个“运行时系统”装置160上注册函数信息、且没有在本地的“运行时系统”装置160上注册函数信息时,则可以有本地的“运行时系统”装置160进一步委托网上的另外一个“运行时系统”装置160来完成组件库指定函数的具体执行;而另外一个“运行时系统”装置160会根据具体组件库类型选择前述两种方式中的一种来完成组件库指定函数的具体执行,并将函数调用实例的执行结果返回给本地的“运行时系统”装置160。
“函数接口服务器”装置200不负责具体执行“应用程序”120所请求调用的“函数”代码。
所述系统中,只有在“运行时系统”装置160中直接注册的“函数”才能在该“运行时系统”装置160中直接运行来完成、或者由“运行时系统”装置调用“第三方函数组件库”的外部服务程序来完成;“运行时系统”装置160具体采用上述两种方式的哪一种则取决于“应用程序”所请求调用“函数”所属的组件库类型;
“运行时系统”装置160所支持的“第三方函数组件库”170的组件库类型包括Corba、EJB、COM+、Web Service、OLE、Java库代码、DLL库代码、SO库代码、JMS库代码、JCA库代码、SOAP库代码;“第三方函数组件库”170的组件库类型不限于上述给出的组件库类型,也可以支持未来新型的组件库类型。
所述系统中,“运行时系统代理”装置140既可以在“应用程序”进程空间内来运行,也可以作为独立的进程来运行;“运行时系统代理”装置140在“应用程序”进程空间内来运行时,“应用程序”120需要将“运行时系统代理”装置140的代码编译链接到该“应用程序”中;
例如,“应用程序”120需要将“运行时系统代理”装置140的代码编译链接到该“应用程序”的情况:如图1所示,“应用程序”120包括了本地函数库模块130和“运行时系统代理”装置140,“应用程序”120所请求调用“函数”事实上是由本地函数库模块130直接调用“运行时系统代理”装置140中的函数执行请求代理模块14010来传递给“运行时系统代理”装置140的。
“运行时系统代理”装置140监控“应用程序”120所请求调用“函数”有两种方法:第一种方法为“应用程序”120所请求调用“函数”的实现代码改写为将该调用“函数”及其参数传递给“运行时系统代理”装置140的函数执行请求代理模块;第二种方法为“运行时系统代理”装置140中函数执行监控模块14011采用函数钩子技术来对“应用程序”所请求调用“函数”增加监控钩子函数代码。
例如,“运行时系统代理”装置140中函数执行监控模块14011采用函数钩子技术的情况:如图2所示,“运行时系统代理”装置140中函数执行监控模块14011直接监控了“应用程序”120的执行过程并对所请求调用“函数”进行动态监控捕捉,然后由函数执行监控模块14011将调用“运行时系统代理”装置140中的函数执行请求代理模块14010实现将“应用程序”120所请求调用“函数”传递给“运行时系统代理”装置140的。
所述系统中,“运行时系统”装置160中“函数”的注册信息需要包括函数唯一索引号、函数类别号、函数名、参数个数、{参数名、参数类型}序列表、函数所属组件库类型、函数所属组件库名称、函数所属组件库访问路径、函数所属组件库开发商唯一索引号、运行平均时间、运行可靠性评估值;
函数唯一索引号是唯一标识函数实现的号码;函数类别号是指函数属于哪一类功能的分类号;两个函数拥有相同的函数类别号意味着这两个函数实现相同功能;这样“运行时系统”装置160可以按照某类指标来择优选择某个函数实现来运行,从而鼓励软件开发商提高各自组件库实现的质量;函数的参数也包括函数的返回值参数。
例如:如图4所示,斐波那契Fibonacci函数在“运行时系统”装置160中“函数”的注册信息的实例:
{函数唯一索引号:123001;函数类别号:123;函数名:Fibonacci;参数个数2;{{参数名:n,参数类型:unsigned int},{参数名:返回值,参数类型:long long}};函数所属组件库类型:DLL;函数所属组件库名称:mathlib.dll;函数所属组件库访问路径c:\windows\mathlib.dll;函数所属组件库开发商唯一索引号:mathsoft118;运行平均时间:2s;运行可靠性评估值:0.9}
“函数接口服务器”装置200上“函数”的注册信息需要包括函数唯一索引号、函数类别号、函数名、参数个数、{参数名、参数类型}序列表、函数所属组件库类型、函数所属组件库名称、函数所属组件库访问路径、函数所属组件库开发商唯一索引号、所属“运行时系统”装置唯一索引号、所属“运行时系统”装置访问路径、运行平均时间和运行可靠性评估值。
例如:如图4所示,斐波那契Fibonacci函数在“函数接口服务器”装置200中“函数”的注册信息的实例:
{函数唯一索引号:123001;函数类别号:123;函数名:Fibonacci;参数个数2;{{参数名:n,参数类型:unsigned int},{参数名:返回值,参数类型:long long}};函数所属组件库类型:DLL;函数所属组件库名称:mathlib.dll;函数所属组件库访问路径c:\windows\mathlib.dll;函数所属组件库开发商唯一索引号:mathsoft118;所属“运行时系统”装置唯一索引号:923011;所属“运行时系统”装置访问路径:http://202.161.8.10/rts/;运行平均时间:2s;运行可靠性评估值:0.9}
所述系统中,“运行时系统代理”装置140和“运行时系统”装置160之间采用“函数统一接口”格式进行函数请求调用和执行结果信息的表达;“运行时系统”装置160和“函数接口服务器”装置200之间采用“函数统一接口”格式进行函数接口信息的查询;不同“运行时系统”装置160之间采用采用“函数统一接口”格式进行函数请求调用和执行结果信息的表达;“函数统一接口”格式采用可扩展标记语言对函数的声明、调用以及执行结果信息进行描述;“函数统一接口”实例既可以为文件,也可以为字节流。
“函数统一接口”格式可以采用XML,也可以采用JSON,也可以采用其它标记语言来表述。
所述系统中,“应用程序”执行过程中请求调用“函数”的“函数调用实例”信息需要包括函数所属组件库名称、函数名、参数个数、{参数名、参数值}序列表;“函数统一接口”实例信息需要包括函数实例唯一索引号、函数所属组件库类型、函数所属组件库名称、函数名、参数个数、{参数名、参数值}序列表、函数最大执行时间;“函数统一接口”实例的执行结果需要包括函数实例唯一索引号、函数唯一索引号、函数类别号、函数名、所属“运行时系统”唯一索引号、结果参数个数、{结果参数名、结果参数值}序列表、运行实际时间。
参数值可以为空。
例如:斐波那契Fibonacci函数的某次具体函数调用实例1:
{函数所属组件库名称:mathlib.dll;函数名:Fibonacci;参数个数:2;{{参数名:n,参数值:9},{参数名:返回值,参数值:}}
例如:前述函数调用实例1转化为“函数统一接口”实例2,其中“函数统一接口”实例2采用XML来表述:
<?xml version="1.0"encoding="UTF-8"?><request>
<functioninterface>
<funcrequest>
<funcinfo>
<函数实例唯一索引号>8000101</函数实例唯一索引号>
<函数所属组件库类型>DLL</函数所属组件库类型>
<函数所属组件库名称>mathlib.dll</函数所属组件库名称>
<函数名>Fibonacci</函数名>
<参数个数>2</参数个数>
<函数最大执行时间>5s</函数最大执行时间>
</funcinfo>
<arguments>
<param>
<参数名>n</参数名>
<参数值>9</参数值>
</param>
<param>
<参数名>返回值</参数名>
<参数值></参数值>
</param>
</arguments>
</funcrequest>
</functioninterface>
所述系统中,“运行时系统”装置中,“函数实例库”可针对待执行“函数统一接口”实例分为多个优先级队列,并由“函数实例调度”模块来设置“函数统一接口”实例执行的优先级以及优先级队列;“函数实例调度”模块通过操作系统提供的各种进程间或者线程间通信机制来与“函数统一接口”实例收发模块、“函数实例执行”模块进行协作运行。
例如:“函数统一接口”实例的多个优先级队列可以分为3个优先级队列:紧急队列、正常队列、无时限队列。
实施例2、一种面向统一接口调用的运行时系统的运行方法:
本发明所提供的一种面向统一接口调用的运行时系统的运行方法,具体如下步骤:
第1步、“第三方函数组件库”的“函数”可随时注册到“运行时系统”;
例如:将组件库mathlib.dll中的Fibonacci函数注册到某个“运行时系统”中,“运行时系统”的运行时系统唯一索引号为710101。
第2步、“运行时系统”中已注册“函数”信息随时更新到“函数接口服务器”;
例如:各个“运行时系统”RTS将注册到自己的“函数”信息随时更新到“函数接口服务器”,例如将组件库mathlib.dll中的Fibonacci函数信息更新到“函数接口服务器”,这样“函数接口服务器”FIS将拥有全网络的已注册函数信息,这样当某个计算机结点上的某个“应用程序”请求调用一个已注册函数的函数实例时就会最终在“函数接口服务器”FIS检索到、并且由该注册函数的注册信息所在的“运行时系统”来完成该函数实例的具体执行任务。
第3步、“应用程序”启动,并加载“运行时系统代理”;“运行时系统代理”连接当前指定的“运行时系统”,当前指定的“运行时系统”简称为当前“运行时系统”;
第4步、“应用程序”继续运行,直至“应用程序”执行退出函数或者“应用程序”执行到请求调用“运行时系统代理”所负责的“函数”;若“应用程序”继续运行过程中请求调用“运行时系统代理”所负责的“函数”,则执行第5步;若“应用程序”执行退出函数,则执行第15步;
第5步、“应用程序”运行过程中请求调用“运行时系统代理”所负责的“函数”时,“运行时系统代理”将该“函数”的“函数调用实例”转化为对应的“函数统一接口”实例,并将该“函数统一接口”实例转交给当前“运行时系统”等待处理结果;
例如:前述函数调用实例1转化为“函数统一接口”实例2,在此不赘述。
第6步、当前“运行时系统”接收到待执行的“函数统一接口”实例后,检索本地“函数信息库”查找该“函数统一接口”实例所对应的“第三发函数组件库”信息,若检索到该“函数统一接口”实例所对应的“第三发函数组件库”信息则执行第10步,否则执行第7步;
例如:对于斐波那契Fibonacci函数,该函数所对应的函数组件库为mathlib.dll。斐波那契Fibonacci函数可能已经在当前“运行时系统”中注册函数信息,斐波那契Fibonacci函数也可能尚未在当前“运行时系统”中注册函数信息。
第7步、当前“运行时系统”向“函数接口服务器”提出请求检索第5步中“函数统一接口”实例所对应的函数注册信息,若“函数接口服务器”返回结果未检索到该“函数统一接口”实例所对应的函数注册信息则执行第11步,否则执行第8步;
例如:当斐波那契Fibonacci函数也可能尚未在当前“运行时系统”中注册函数信息时,由当前“运行时系统”向“函数接口服务器”提出请求检索斐波那契Fibonacci函数的注册信息;若“函数接口服务器”返回结果未检索到该“函数统一接口”实例即本案例中斐波那契Fibonacci函数所对应的函数注册信息,则说明在全网络中尚未有斐波那契Fibonacci函数注册到某个“运行时系统”中,这种情况下该斐波那契Fibonacci函数的函数调用实例无法由任何一个“运行时系统”来具体执行。
第8步、当前“运行时系统”将请求第7步中检索到的该函数所注册的异地“运行时系统”来完成该“函数统一接口”实例的执行,若异地“运行时系统”未正常提供服务则执行第11步,否则执行第9步;
例如:“函数接口服务器”返回结果检索到该“函数统一接口”实例即本案例中斐波那契Fibonacci函数所对应的函数注册信息,该斐波那契Fibonacci函数的函数注册信息表明该斐波那契Fibonacci函数已注册到某个异地“运行时系统”中,则由该异地“运行时系统”负责对该斐波那契Fibonacci函数调用实例进行具体执行。
第9步、当前“运行时系统”获得异地“运行时系统”返回的“函数统一接口”实例执行结果作为第6步中“函数统一接口”实例执行结果,并执行第12步;
第10步、当前“运行时系统”通过“函数实例执行模块”调用“函数统一接口”实例所对应的函数组件库来执行该“函数统一接口”实例,并将该“函数统一接口”实例执行结果作为第6步中“函数统一接口”实例执行结果;并进一步执行第12步;
例如:对于斐波那契Fibonacci函数,斐波那契Fibonacci函数的某次“函数统一接口”实例执行结果可以如下:
<?xml version="1.0"encoding="UTF-8"?><request>
<functioninterface>
<funcresponse>
<funcinfo>
<函数实例唯一索引号>8000101</函数实例唯一索引号>
<函数唯一索引号>123001</函数唯一索引号>
<函数类别号>123</函数类别号>
<函数所属组件库类型>DLL</函数所属组件库类型>
<函数所属组件库名称>mathlib.dll</函数所属组件库名称>
<函数名>Fibonacci</函数名>
<所属运行时系统唯一索引号>710101</所属运行时系统唯一索引号>
<结果参数个数>2</结果参数个数>
<运行实际时间>1s</运行实际时间>
</funcinfo>
<arguments>
<param>
<结果参数名>n</结果参数名>
<结果参数值>9</结果参数值>
</param>
<param>
<结果参数名>返回值</结果参数名>
<结果参数值>21</结果参数值>
</param>
</arguments>
</funcresponse>
</functioninterface>
第11步、当前“运行时系统”将第6步中“函数统一接口”实例执行结果设置为“执行异常”;
第12步、当前“运行时系统”将第6步中“函数统一接口”实例执行结果返回给“运行时系统代理”;
第13步、“运行时系统代理”将第12步中“函数统一接口”实例执行结果转化为“函数调用实例”执行结果,并将该“函数调用实例”执行结果返回给“应用程序”;
第14步、“应用程序”继续执行第4步;
第15步、“应用程序”执行结束。
所述方法中,当“运行时系统”在“函数信息库”检索到“函数统一接口”实例对应有不止一个的函数信息时,“运行时系统”既可以随机选取一个函数组件库来运行,也可以根据该组“函数”信息中的辅助信息来决定选择哪一个函数组件库来运行,“函数”信息中的辅助信息包括运行平均时间、运行可靠性评估值以及函数所属组件库开发商唯一索引号中的全部或者部分;
例如:可以选择运行可靠性评估值为1的某函数实现作为此次欲执行的备选函数组件库及函数。
所述方法中,当“函数接口服务器”在“函数信息库”检索到“函数统一接口”实例对应有不止一个的函数信息时,“函数接口服务器”既可以随机选取一个函数组件库来运行,也可以根据该组“函数”信息中的辅助信息来决定选择哪一个函数组件库来运行,“函数”信息中的辅助信息包括运行平均时间、运行可靠性评估值、函数所属组件库开发商唯一索引号以及所属“运行时系统”唯一索引号中的全部或者部分。
例如:可以选择指定的函数所属组件库开发商所开发的某函数实现作为此次欲执行的备选备选函数组件库及函数。
考虑到在此公开的对本发明的描述和特例的实施例,本发明的其他实施例对于本领域的技术人员来说是显而意见的。这些说明和实施例仅作为例子来考虑,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种面向统一接口调用的运行时系统,其特征在于,所述系统包括“运行时系统代理”装置、“运行时系统”装置、“函数接口服务器”装置、“通道”装置和“网络”装置;“运行时系统代理”装置,主要是负责监控、接收和返回“应用程序”执行过程中请求调用“函数”的执行代理;“运行时系统”装置,主要是负责“第三方函数组件库”的“函数”注册、管理和检索,以及请求调用函数实例的具体执行;“函数接口服务器”装置,主要是负责整个网络中各个“运行时系统”中提供函“第三方函数组件库”的“函数”注册、管理和检索服务;“运行时系统代理”装置和“运行时系统”装置通过“通道”装置互联;“运行时系统”装置和“函数接口服务器”装置通过“网络”装置互联;“运行时系统代理”装置和“函数接口服务器”装置不直接互联;
其中,
“运行时系统代理”装置包括:函数执行监控模块、函数执行请求代理模块、函数执行请求封装模块、“函数统一接口”请求发送模块、“函数统一接口”结果接收模块、函数执行结果拆装模块;函数执行监控模块负责动态监控“应用程序”执行过程中请求调用“函数”的执行,“应用程序”执行过程中请求调用“函数”的执行所需要的调用信息被称为“函数调用实例”,函数执行监控模块还负责将该函数调用实例交给函数执行请求代理模块来代理执行以及将该函数调用实例的执行结果返回给“应用程序”;函数执行请求封装模块负责将该函数调用实例转化为“函数统一接口”实例;函数执行结果拆装模块负责将“函数统一接口”实例执行结果转化为函数调用实例执行结果;“函数统一接口”请求发送模块负责将“函数统一接口”实例发送到“通道”中;“函数统一接口”结果接收模块负责从“通道”中获得“函数统一接口”实例执行结果,并交给函数执行请求代理模块;函数执行请求代理模块负责接收来自“应用程序”或者函数执行监控模块的函数调用实例,函数执行请求代理模块通过函数执行请求封装模块将函数调用实例转化为“函数统一接口”实例,并通过“函数统一接口”请求发送模块将该“函数统一接口”实例进一步发送到“通道”中,并通过函数执行结果拆装模块将该“函数统一接口”实例执行结果转化为该函数调用实例执行结果,以及将该函数调用实例执行结果返回给对应的调用者;
“运行时系统”装置包括:业务模块组、网络通信模块和持久存储模块;业务模块组包括函数信息注册模块、函数信息管理模块、函数信息检索模块、函数信息库、函数实例库、“函数统一接口”实例收发模块、函数实例调度模块和函数实例执行模块;函数信息注册模块与函数信息库连接,负责“第三方函数组件库”的“函数”接口信息的登记注册;函数信息管理模块与函数信息库连接,负责对已注册的“函数”接口信息的信息维护,包括修改、删除、合并、关联、发布和撤销“函数”接口信息;函数信息检索模块与函数信息库和函数实例执行模块连接,负责从函数信息库中对“函数”接口信息的检索查询、以及为函数实例执行模块提供“函数”接口信息的检索查询服务;函数信息库负责提供“函数”接口信息基础数据访问;函数实例库分别与“函数统一接口”实例收发模块、函数实例调度模块和函数实例执行模块连接,负责提供函数实例信息基础数据访问;“函数统一接口”实例收发模块负责接收“运行时系统代理”发来的“函数统一接口”实例执行请求、以及返回“函数统一接口”实例执行结果给对应的“运行时系统代理”;函数实例执行模块负责具体加载“函数统一接口”实例所对应“第三方函数组件库”并执行对应的函数调用实例;函数实例调度模块分别与“函数统一接口”实例收发模块和函数实例执行模块连接,负责对待执行“函数统一接口”实例的执行优先级及先后顺序进行管理、以及协调“函数统一接口”实例收发模块和函数实例执行模块的运行;业务模块组中的各个模块通过网络通信模块实现与其它装置的网络通信;函数信息库和函数实例库的数据持久保存在持久存储模块中;
“函数接口服务器”装置包括:业务模块组、网络通信模块和持久存储模块;业务模块组包括函数信息注册模块、函数信息管理模块、函数信息检索模块和函数信息库;函数信息注册模块、函数信息管理模块和函数信息检索模块分别与函数信息库连接;函数信息注册模块负责“第三方函数组件库”的“函数”接口信息的登记注册;函数信息管理模块负责对已注册的“函数”接口信息的信息维护,包括修改、删除、合并、关联、发布和撤销“函数”接口信息;函数信息检索模块负责“函数”接口信息的检索查询;函数信息库负责提供“函数”接口信息基础数据访问;业务模块组中的各个模块通过网络通信模块实现与其它装置的网络通信;函数信息库的数据持久保存在持久存储模块中;
“应用程序”执行过程中请求调用“函数”的“函数调用实例”信息需要包括函数所属组件库名称、函数名、参数个数、{参数名、参数值}序列表;“函数统一接口”实例信息需要包括函数实例唯一索引号、函数所属组件库类型、函数所属组件库名称、函数名、参数个数、{参数名、参数值}序列表、函数最大执行时间;“函数统一接口”实例的执行结果需要包括函数实例唯一索引号、函数唯一索引号、函数类别号、函数名、所属“运行时系统”唯一索引号、结果参数个数、{结果参数名、结果参数值}序列表、运行实际时间。
2.根据权利要求1所述的系统,其特征在于,“应用程序”执行过程中请求调用“函数”的函数代码具体执行是由“运行时系统”装置来完成,“应用程序”本身并不真正执行请求调用“函数”的函数代码;“应用程序”将将请求调用“函数”的“函数调用实例”交给“运行时系统代理”装置,“运行时系统代理”装置进一步通过“通道”装置将请求调用“函数”的“函数调用实例”传递给“运行时系统”装置;当“运行时系统代理”装置和“运行时系统”装置在同一个计算机结点时“通道”装置可采用进程间通信技术实现,当“运行时系统代理”装置和“运行时系统”装置不在同一个计算机结点时“通道”装置可采用网络消息队列技术实现;“运行时系统”装置中的“函数实例执行”模块来负责具体执行“应用程序”所请求调用的“函数”,“函数实例执行”模块既可以在“运行时系统”装置内直接运行来完成、也可以由“运行时系统”装置调用“第三方函数组件库”的外部服务程序来完成、还可以由“运行时系统”装置委托网上的其它“运行时系统”装置来完成;“函数接口服务器”装置不负责具体执行“应用程序”所请求调用的“函数”代码。
3.根据权利要求1或2所述的系统,其特征在于,只有在“运行时系统”装置中直接注册的“函数”才能在该“运行时系统”装置中直接运行来完成、或者由“运行时系统”装置调用“第三方函数组件库”的外部服务程序来完成;“运行时系统”装置具体采用上述两种方式的哪一种则取决于“应用程序”所请求调用“函数”所属的组件库类型;“运行时系统”装置所支持的“第三方函数组件库”的组件库类型包括Corba、EJB、COM+、WebService、OLE、Java库代码、DLL库代码和SO库代码。
4.根据权利要求1所述的系统,其特征在于,“运行时系统代理”装置既可以在“应用程序”进程空间内来运行,也可以作为独立的进程来运行;“运行时系统代理”装置在“应用程序”进程空间内来运行时,“应用程序”需要将“运行时系统代理”装置的代码编译链接到该“应用程序”中;“运行时系统代理”装置监控“应用程序”所请求调用“函数”有两种方法:第一种方法为“应用程序”所请求调用“函数”的实现代码改写为将该调用“函数”及其参数传递给“运行时系统代理”装置的函数执行请求代理模块;第二种方法为“运行时系统代理”装置中函数执行监控模块采用函数钩子技术来对“应用程序”所请求调用“函数”增加监控钩子函数代码。
5.根据权利要求1所述的系统,其特征在于,“运行时系统”装置中“函数”的注册信息需要包括函数唯一索引号、函数类别号、函数名、参数个数、{参数名、参数类型}序列表、函数所属组件库类型、函数所属组件库名称、函数所属组件库访问路径、函数所属组件库开发商唯一索引号、运行平均时间、运行可靠性评估值;“函数接口服务器”装置上“函数”的注册信息需要包括函数唯一索引号、函数类别号、函数名、参数个数、{参数名、参数类型}序列表、函数所属组件库类型、函数所属组件库名称、函数所属组件库访问路径、函数所属组件库开发商唯一索引号、所属“运行时系统”装置唯一索引号、所属“运行时系统”装置访问路径、运行平均时间和运行可靠性评估值。
6.根据权利要求1所述的系统,其特征在于,“运行时系统代理”装置和“运行时系统”装置之间采用“函数统一接口”格式进行函数请求调用和执行结果信息的表达;“运行时系统”装置和“函数接口服务器”装置之间采用“函数统一接口”格式进行函数接口信息的查询;不同“运行时系统”装置之间采用采用“函数统一接口”格式进行函数请求调用和执行结果信息的表达;“函数统一接口”格式采用可扩展标记语言对函数的声明、调用以及执行结果信息进行描述;“函数统一接口”实例既可以为文件,也可以为字节流。
7.根据权利要求1所述的系统,其特征在于,“运行时系统”装置中,“函数实例库”可针对待执行“函数统一接口”实例分为多个优先级队列,并由“函数实例调度”模块来设置“函数统一接口”实例执行的优先级以及优先级队列;“函数实例调度”模块通过操作系统提供的各种进程间或者线程间通信机制来与“函数统一接口”实例收发模块、“函数实例执行”模块进行协作运行。
8.一种面向统一接口调用的运行时系统的运行方法,其特征在于,所述方法包括具体步骤如下:
第1步、“第三方函数组件库”的“函数”可随时注册到“运行时系统”;
第2步、“运行时系统”中已注册“函数”信息随时更新到“函数接口服务器”;
第3步、“应用程序”启动,并加载“运行时系统代理”;“运行时系统代理”连接当前指定的“运行时系统”,当前指定的“运行时系统”简称为当前“运行时系统”;
第4步、“应用程序”继续运行,直至“应用程序”执行退出函数或者“应用程序”执行到请求调用“运行时系统代理”所负责的“函数”;若“应用程序”继续运行过程中请求调用“运行时系统代理”所负责的“函数”,则执行第5步;若“应用程序”执行退出函数,则执行第15步;
第5步、“应用程序”运行过程中请求调用“运行时系统代理”所负责的“函数”时,“运行时系统代理”将该“函数”的“函数调用实例”转化为对应的“函数统一接口”实例,并将该“函数统一接口”实例转交给当前“运行时系统”等待处理结果;
第6步、当前“运行时系统”接收到待执行的“函数统一接口”实例后,检索本地“函数信息库”查找该“函数统一接口”实例所对应的“第三发函数组件库”信息,若检索到该“函数统一接口”实例所对应的“第三发函数组件库”信息则执行第10步,否则执行第7步;
第7步、当前“运行时系统”向“函数接口服务器”提出请求检索第5步中“函数统一接口”实例所对应的函数注册信息,若“函数接口服务器”返回结果未检索到该“函数统一接口”实例所对应的函数注册信息则执行第11步,否则执行第8步;
第8步、当前“运行时系统”将请求第7步中检索到的该函数所注册的异地“运行时系统”来完成该“函数统一接口”实例的执行,若异地“运行时系统”未正常提供服务则执行第11步,否则执行第9步;
第9步、当前“运行时系统”获得异地“运行时系统”返回的“函数统一接口”实例执行结果作为第6步中“函数统一接口”实例执行结果,并执行第12步;
第10步、当前“运行时系统”通过“函数实例执行模块”调用“函数统一接口”实例所对应的函数组件库来执行该“函数统一接口”实例,并将该“函数统一接口”实例执行结果作为第6步中“函数统一接口”实例执行结果;并进一步执行第12步;
第11步、当前“运行时系统”将第6步中“函数统一接口”实例执行结果设置为“执行异常”;
第12步、当前“运行时系统”将第6步中“函数统一接口”实例执行结果返回给“运行时系统代理”;
第13步、“运行时系统代理”将第12步中“函数统一接口”实例执行结果转化为“函数调用实例”执行结果,并将该“函数调用实例”执行结果返回给“应用程序”;
第14步、“应用程序”继续执行第4步;
第15步、“应用程序”执行结束。
9.根据权利要求8所述的方法,其特征在于,当“运行时系统”在“函数信息库”检索到“函数统一接口”实例对应有不止一个的函数信息时,“运行时系统”既可以随机选取一个函数组件库来运行,也可以根据该组“函数”信息中的辅助信息来决定选择哪一个函数组件库来运行,“函数”信息中的辅助信息包括运行平均时间、运行可靠性评估值以及函数所属组件库开发商唯一索引号中的全部或者部分;当“函数接口服务器”在“函数信息库”检索到“函数统一接口”实例对应有不止一个的函数信息时,“函数接口服务器”既可以随机选取一个函数组件库来运行,也可以根据该组“函数”信息中的辅助信息来决定选择哪一个函数组件库来运行,“函数”信息中的辅助信息包括运行平均时间、运行可靠性评估值、函数所属组件库开发商唯一索引号以及所属“运行时系统”唯一索引号中的全部或者部分。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610280393.5A CN105975261B (zh) | 2016-04-28 | 2016-04-28 | 一种面向统一接口调用的运行时系统及运行方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610280393.5A CN105975261B (zh) | 2016-04-28 | 2016-04-28 | 一种面向统一接口调用的运行时系统及运行方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105975261A CN105975261A (zh) | 2016-09-28 |
CN105975261B true CN105975261B (zh) | 2018-12-18 |
Family
ID=56993402
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610280393.5A Active CN105975261B (zh) | 2016-04-28 | 2016-04-28 | 一种面向统一接口调用的运行时系统及运行方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105975261B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108196852A (zh) * | 2017-12-26 | 2018-06-22 | 北京华为数字技术有限公司 | 一种软件运行方法、更新方法和相关装置 |
WO2019237363A1 (en) * | 2018-06-15 | 2019-12-19 | Nokia Technologies Oy | Dynamic management of application servers on network edge computing device |
CN110245027B (zh) * | 2018-09-21 | 2024-05-14 | 浙江大华技术股份有限公司 | 一种进程间通信的方法和设备 |
CN111368864A (zh) * | 2018-12-26 | 2020-07-03 | 阿里巴巴集团控股有限公司 | 识别方法、可用性评估方法及装置、电子设备、存储介质 |
CN110049001A (zh) * | 2019-02-27 | 2019-07-23 | 新奥特(北京)视频技术有限公司 | 一种实现WebService服务的方法、装置、存储介质和服务器 |
CN110244990A (zh) * | 2019-04-29 | 2019-09-17 | 五八有限公司 | 应用组件调用方法、装置、电子设备及存储介质 |
CN117389683B (zh) * | 2023-10-12 | 2024-08-23 | 中国人民解放军国防科技大学 | 基于接口注册的训练仿真平台组件交互方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103701761A (zh) * | 2012-09-28 | 2014-04-02 | 中国电信股份有限公司 | 开放接口调用的认证方法与系统 |
CN104008135A (zh) * | 2014-05-07 | 2014-08-27 | 南京邮电大学 | 一种多源异构数据库融合系统及其数据查询方法 |
CN104778071A (zh) * | 2015-04-02 | 2015-07-15 | 谢玮琦 | 智能规则多语言类型解释系统及其创建方法 |
CN105260191A (zh) * | 2015-11-03 | 2016-01-20 | 中国电子科技集团公司第四十一研究所 | 一种基于配置的测试程序与操作员界面数据交互方法 |
-
2016
- 2016-04-28 CN CN201610280393.5A patent/CN105975261B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103701761A (zh) * | 2012-09-28 | 2014-04-02 | 中国电信股份有限公司 | 开放接口调用的认证方法与系统 |
CN104008135A (zh) * | 2014-05-07 | 2014-08-27 | 南京邮电大学 | 一种多源异构数据库融合系统及其数据查询方法 |
CN104778071A (zh) * | 2015-04-02 | 2015-07-15 | 谢玮琦 | 智能规则多语言类型解释系统及其创建方法 |
CN105260191A (zh) * | 2015-11-03 | 2016-01-20 | 中国电子科技集团公司第四十一研究所 | 一种基于配置的测试程序与操作员界面数据交互方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105975261A (zh) | 2016-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105975261B (zh) | 一种面向统一接口调用的运行时系统及运行方法 | |
CA3000422C (en) | Workflow service using state transfer | |
CN107729139B (zh) | 一种并发获取资源的方法和装置 | |
US8539464B2 (en) | Distributed just-in-time compilation | |
KR100958303B1 (ko) | 멀티코어 시스템 환경에서 내부 코어 간 통신채널을 이용한 모듈 디바이스의 동적 적재 및 실행을 통한 부하 균등화 시스템 및 방법 | |
KR100783679B1 (ko) | 데이터 스트림에 기반하는 서비스의 개발, 배치, 제공을용이하게 하는 미들웨어 시스템 | |
CN102053860B (zh) | 基于CORBA的OSGi分布式扩展系统及方法 | |
Huang | JISGA: A Jini-based service-oriented Grid architecture | |
WO2022166480A1 (zh) | 任务调度方法、装置及系统 | |
CN114116149A (zh) | 一种任务调度方法、装置、设备及介质 | |
Taherkordi et al. | Programming sensor networks using REMORA component model | |
Bezirgiannis et al. | ABS: A high-level modeling language for cloud-aware programming | |
Schmidt et al. | Architectures and patterns for developing high-performance, real-time ORB endsystems | |
CN112328410B (zh) | 远程过程调用的实现方法、装置、设备及存储介质 | |
JP4862056B2 (ja) | 仮想計算機管理機構及び仮想計算機システムにおけるcpu時間割り当て制御方法 | |
CN109669793B (zh) | 中间件进程内对象调用方法 | |
Kang et al. | Android RMI: a user-level remote method invocation mechanism between Android devices | |
Serra et al. | An architecture for declarative real-time scheduling on Linux | |
CN114116150A (zh) | 一种任务调度方法、装置以及相关设备 | |
Vadhiyar et al. | GrADSolve—a grid-based RPC system for parallel computing with application-level scheduling | |
Yau et al. | An approach to adaptive distributed execution monitoring for workflows in service-based systems | |
CN111625340B (zh) | 一种虚拟桌面环境作业调度方法及系统 | |
Pereira et al. | Tactics for Remote Method Invocation. | |
JP3007340B1 (ja) | 機能呼び出し方法、並列分散処理システムおよびコンピュータ | |
Caton et al. | Distributed image processing over an adaptive Campus Grid |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |