CN117687634A - 一种服务编译方法、装置和电子设备 - Google Patents
一种服务编译方法、装置和电子设备 Download PDFInfo
- Publication number
- CN117687634A CN117687634A CN202311684769.5A CN202311684769A CN117687634A CN 117687634 A CN117687634 A CN 117687634A CN 202311684769 A CN202311684769 A CN 202311684769A CN 117687634 A CN117687634 A CN 117687634A
- Authority
- CN
- China
- Prior art keywords
- target
- file
- compiling
- service
- algorithm model
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 86
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 205
- 238000012545 processing Methods 0.000 claims description 28
- 238000005538 encapsulation Methods 0.000 claims description 20
- 238000012216 screening Methods 0.000 claims description 9
- 238000012986 modification Methods 0.000 claims description 6
- 230000004048 modification Effects 0.000 claims description 6
- 230000008569 process Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012905 input function Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Stored Programmes (AREA)
Abstract
本申请提供了一种服务编译方法、装置和电子设备,包括:接收服务请求;若所述服务请求是获得动态库服务请求,基于所述服务请求获得目标算法模型;生成所述目标算法模型对应的编译配置文件;基于目标实现代码修改所述编译配置文件得到目标编译配置文件,所述目标实现代码是与目标算法模型的目标接口对应;编译所述目标编译配置文件得到动态库文件。
Description
技术领域
本申请涉及信息技术领域,更具体的说,是涉及一种服务编译方法、装置和电子设备。
背景技术
在汽车软件中,对于采用Simulink开发的算法模型而言,如果希望被外部调用时,一般的方式是将Simulink模型生成静态/动态库。
如果外围使用业务较为负责,则需要额外编写算法调用逻辑和外部数据处理转换逻辑。对于算法模型发生变化时,由于算法暴露的接口是Simulink模型的inport(输入函数)和outport(输出函数)形成的结构体,因此一般需要将外围处理代码和Simulink模型代码一起编译,外围代码和算法核心代码的耦合性较强。另一种方式是在Simulink中通过定义S-function来负责生成外围代码进行编译。
由于不同算法模型的输入和输出是不同的,因此需要人员依据算法的输入和输出信息,调整信号与服务之间相互转换的业务逻辑的封装。该工作在算法模型或者服务接口变动的时候会增加人员的负担。
发明内容
有鉴于此,本申请提供了一种服务编译方法、装置和电子设备,如下:
一种服务编译方法,包括:
接收服务请求;
若所述服务请求是获得动态库服务请求,基于所述服务请求获得目标算法模型;
生成所述目标算法模型对应的编译配置文件;
基于目标实现代码修改所述编译配置文件得到目标编译配置文件,所述目标实现代码是与目标算法模型的目标接口对应;
编译所述目标编译配置文件得到动态库文件。
上述的服务编译方法,可选的,所述生成所述目标算法模型对应的编译配置文件,包括:
解析所述目标算法模型的定义文件,得到所述目标算法模型中输入参数,所述输入参数包括输入参数;
按照预设结构化协议对于所述目标算法模型的输入参数进行结构化处理得到输出参数;
基于所述结构化输出参数以及所述目标算法模型,生成编译配置文件。
上述的服务编译方法,可选的,所述解析所述目标算法模型的定义文件,得到所述目标算法模型中输入参数,包括:
解析所述目标算法模型中数据类型定义文件,得到所述目标算法模型中输入参数,所述数据类型定义文件用于定义所述目标算法模型中至少两个参数的名称和数据类型。
上述的服务编译方法,可选的,所述基于目标实现代码修改所述编译配置文件得到目标编译配置文件,包括:
基于所述服务请求中携带的配置信息,生成目标接口对应的目标实现代码;
基于目标实现代码修改所述编译配置文件中目标接口对应的内容得到目标编译配置文件。
上述的服务编译方法,可选的,所述按照预设结构化协议对于所述目标算法模型的输入参数进行结构化处理得到输出参数,包括:
解析所述目标算法模型的代码文件,得到所述目标算法模型的输入参数;
依据预设服务封装规则,从所述目标算法模型的代码文件中解析获得结构化定义;
基于所述结构化定义对于所述输入参数进行结构化处理,得到输出参数。
上述的服务编译方法,可选的,还包括:
若所述服务请求是运行算法服务请求,基于所述服务请求在动态库文件库中筛选请求的目标算法模型对应的目标动态库文件;
若所述目标动态库文件存在,解析所述服务请求得到所述目标动态库文件的输入参数;
基于所述输入参数的类别,以及所述目标动态库文件对于所述输入参数执行运算;
若所述目标动态库文件不存在,中止该服务调用,生成目标动态库文件不存在的提示信息,并将所述提示信息反馈给目标客户端,所述目标客户端是发出所述服务请求的客户端。
上述的服务编译方法,可选的,所述基于所述输入参数的类别,以及所述目标动态库文件对于所述输入参数执行运算,包括:
分析所述输入参数,得到所述输入参数的类别,所述类别包括数据类别或者文件路径类别;
基于所述输入参数的类别是数据类别,对于所述输入参数进行结构化处理,得到目标输入参数;将所述目标输入参数赋值到所述目标动态库文件中对应对象,得到运算结果;
基于所述输入参数的类别是文件路径,调用所述文件路径对应的参数列表;
将所述参数列表中每个输入参数依次赋值到目标动态库文件中对应对象,得到运算结果。
上述的服务编译方法,可选的,所述对于所述输入参数进行结构化处理,得到目标输入参数,包括:
若所述输入参数是非目标结构化数据,获取预设结构化协议定义的目标结构体以及所述目标结构体的属性描述信息;
调用预设封装解析接口,基于目标结构体以及所述属性描述信息解析所述输入参数,得到第一结构化对象;
相应的,将所述目标输入参数赋值到所述目标动态库文件中对应对象,得到运算结果,包括:
访问所述目标动态库文件的属性,在所述目标动态库文件中查找与所述第一结构化对象的属性名相同的第二结构化对象;
将所述第一结构化对象的取值赋值到所述第二结构化对象中得到待运行库文件;
运行所述待运行库文件得到运算结果。
一种服务编译装置,包括:
接收模块,用于接收服务请求;
获得模块,用于若所述服务请求是获得动态库服务请求,基于所述服务请求获得目标算法模型;
生成模块,用于生成所述目标算法模型对应的编译配置文件;
修改模块,用于基于目标实现代码修改所述编译配置文件得到目标编译配置文件;
编译模块,用于编译所述目标编译配置文件得到动态库文件。
一种电子设备,包括:
存储器、处理器;
其中,存储器存储有处理程序;
所述处理器用于加载并执行所述存储器存储的所述处理程序,以实现如上述任一项所述的服务编译方法的各步骤。
综上所述,本申请提供的一种服务编译方法、装置和电子设备,包括:接收服务请求;若所述服务请求是获得动态库服务请求,基于所述服务请求获得目标算法模型;生成所述目标算法模型对应的编译配置文件;基于目标实现代码修改所述编译配置文件得到目标编译配置文件,所述目标实现代码是与目标算法模型的目标接口对应;编译所述目标编译配置文件得到动态库文件。本申请中,由于目标实现代码是与目标算法模型中目标接口对应,基于该目标实现代码自动对于编译配置文件进行修改得到目标编译配置文件,因此,在算法模型或者服务接口变动时,可以根据变动的情况生成的目标实现代码对于编译配置文件自动进行修改,无需人工进行调整信号与服务之间相互转换的业务逻辑,降低工作人员的负担。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1是本申请提供的一种服务编译方法实施例1的流程图;
图2是本申请提供的一种服务编译方法实施例1中云平台系统示意图;
图3是本申请提供的一种服务编译方法实施例2的流程图;
图4是本申请提供的一种服务编译方法实施例3的流程图;
图5是本申请提供的一种服务编译方法实施例4的流程图;
图6是本申请提供的一种服务编译方法实施例5的流程图;
图7是本申请提供的一种服务编译方法实施例6的流程图;
图8是本申请提供的一种服务编译方法实施例6中云平台系统示意图;
图9是本申请提供的一种服务编译方法实施例7的流程图;
图10是本申请提供的一种服务编译方法实施例8的流程图;
图11是本申请提供的一种服务编译装置实施例的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
如图1所示的,为本申请提供的一种服务编译方法实施例1的流程图,该方法应用于一电子设备,该电子设备作为云平台系统的服务端设备,该方法包括以下步骤:
步骤S101:接收服务请求;
需要说明的是,本申请中的服务编译方法具体应用于云平台系统的服务端设备。
其中,该服务请求具体是客户端生成的,该客户端将服务请求上传给云平台的服务器,以使得对于该服务器上的算法模型进行编译得到动态库文件。
如图2所示的是云平台系统示意图,包括云平台服务器201、服务端202、模型库203和编译服务器204。其中,云平台服务器201将客户端提供的请求发送给服务端设备,服务端202负责将请求对应的算法模型进行编译形成动态库文件,模型库203用于向服务端提供算法模型,编译服务器204用于配合服务端进行编译。
步骤S102:若所述服务请求是获得动态库服务请求,基于所述服务请求获得目标算法模型;
其中,对于接收到的服务请求进行分析,确定该服务请求的类型,如果该服务请求是获得动态库服务请求(make.SO)服务请求,执行本实施例中的步骤。
需要说明的是,后续实施例中,会针对该服务请求是运行算法(run)服务请求的响应过程进行说明,本实施例中不做详述。
其中,该服务请求中包含有url(Uniform Resource Locator,统一资源定位符),基于该url在模型库中获得该服务请求的目标算法模型。
其中,该目标算法模型是Simulink模型。
具体的,通过url提供的Simulink文件路径获得Simulink模型的文件,一般的,该文件是压缩格式文件。
具体实施中,若获得该Simulink模型的文件,进行解压缩,得到其中的全部文件;若未获得该文件,返回错误码,该错误码的形式可以根据实际情况进行设置,本实施例中不做限制。
步骤S103:生成所述目标算法模型对应的编译配置文件;
其中,针对该目标算法模型编译生成对应的编译配置文件。
需要说明的是,算法生成的代码一般是C/C++代码,而云平台多采用Java进行开发,所以,本申请中采用thrift代码编译器对于目标算法模型进行编译IDL(InteractiveData Language,交互式数据语言)文件。
需要说明的是,该IDL文件是根据make.SO和run的定义的文件,其采用的是Apachethrift的规则,该Apache thrift支持C/C++、Java、python等语言。
其中,本申请中,采用thrift代码编译器,对于该目标算法模型编译IDL文件,生成服务封装代码,该服务封装代码中包含有该编译配置文件。
需要说明的是,本申请中采用Apache Thrift作为SOA(Service-OrientedArchitecture,面向服务的体系结构)的实现框架,通过定义IDL文件,约定算法实体提供的服务。
具体的,该服务封装代码可以是C代码,后续run服务采用的C代码,本申请中为了接口的一致性和更好的适配性,选择的C代码,实际使用时可以根据实际情况进行调整。
其中,编译配置文件具体是该目标算法模型在服务端的骨架代码,具体是,从IDL中可以通过thrift的框架工具获得python服务端的骨架代码。
具体的,该编译配置文件具体是makefile文件或者camkelists文件,可以根据实际应用场景设置编译配置文件的形式,本申请中不做限制。
步骤S104:基于目标实现代码修改所述编译配置文件得到目标编译配置文件二
其中,该目标实现代码具体是编译配置文件不同的配置信息生成的代码,所述目标实现代码是与目标算法模型的目标接口对应。
具体实施中,针对不同的服务请求配置,可以生成不同的实现代码,基于该实现代码修改该编译配置文件,得到与本次服务请求对应的目标编译配置文件。
步骤S105:编译所述目标编译配置文件得到动态库文件。
其中,调用该编译服务器,对于该目标编译配置文件进行编译,得到动态库文件。
其中,该编译服务器可以根据实际情况进行设置,本申请中不对于编译服务器的功能做限制。
需要说明的是,本实施例中的服务编译方法,是云平台进行动态库的构建过程,构建完毕终止业务流程。
综上,本实施例提供的一种服务编译方法,包括:接收服务请求;若所述服务请求是获得动态库服务请求,基于所述服务请求获得目标算法模型;生成所述目标算法模型对应的编译配置文件;基于目标实现代码修改所述编译配置文件得到目标编译配置文件,所述目标实现代码是与目标算法模型的目标接口对应;编译所述目标编译配置文件得到动态库文件。本实施例中,由于目标实现代码是与目标算法模型中目标接口对应,基于该目标实现代码自动对于编译配置文件进行修改得到目标编译配置文件,因此,在算法模型或者服务接口变动时,可以根据变动的情况生成的目标实现代码对于编译配置文件自动进行修改,无需人工进行调整信号与服务之间相互转换的业务逻辑,降低工作人员的负担。
如图3所示的,为本申请提供的一种服务编译方法实施例2的流程图,该方法包括以下步骤:
步骤S301:接收服务请求;
步骤S302:若所述服务请求是获得动态库服务请求,基于所述服务请求获得目标算法模型;
其中,步骤S301-302与实施例1中的相应步骤一致,本实施例中不做赘述。
步骤S303:解析所述目标算法模型的定义文件,得到所述目标算法模型中输入参数;
其中,该定义文件具体是该目标算法模型中的数据类型定义文件,其定义了该目标算法模型涉及的各参数的数据类型。
其中,解析所述目标算法模型中数据类型定义文件,得到所述目标算法模型中输入参数,所述数据类型定义文件用于定义所述目标算法模型中至少两个参数的数据类型。
具体的,解析该目标算法模型文件中数据类型定义文件,得到该数据类型定义文件中定义的各项参数的数据类型、名称等,如输入参数、输出参数以及调节参数等的名称和类型等信息。
其中,本申请中主要是涉及了目标算法模型中的输入参数、输出参数。
其中,该目标算法模型中的输入参数是非结构化的数据。
作为一个示例,Simulink算法下生成的代码文件中,关于输入和输出其会按照<ModelName>_U和<ModelName>_Y的方式定义两个结构体。由于Simulink采用typedef的方式定义,因此只需要按照规则解析即可。
其中,typdef是C/C++编程关键字。用户可以使用typedef关键字来定义自己习惯的数据类型名称,来替代系统默认的基本类型名称、数组类型名称、指针类型名称与用户自定义的结构型名称、共用型名称、枚举型名称等。一旦用户在程序中定义了自己的数据类型名称,就可以在该程序中用自己的数据类型名称来定义变量的类型、数组的类型、指针变量的类型与函数的类型等。
例如,解析数据类型定义文件<modelname>.h文件,获得<ModelName>_U和<ModelName>_Y的定义,根据代码中的记录进行解析即可获得对应类型。
步骤S304:按照预设结构化协议对于所述目标算法模型的输入参数进行结构化处理得到输出参数;
其中,该预设结构化协议具体是JSON(JavaScript Object Notation)协议,按照该协议,将目标算法模型的输入参数进行结构化处理,得到结构化的输出参数。
本申请中,采用JSON协议对于该输入参数进行结构化处理,实现对于输入参数和输出参数的结构进行隔离。
具体的,该JSON采用了key-value(键值对)将非结构化的数据进行结构化处理。
本申请中,该非结构化数据进行结构化处理的工作由服务端进行处理,相对于在客户端进行,提升了灵活性,而且由于服务契约稳定不变,使得维护效率提升。
步骤S305:基于所述结构化输出参数以及所述目标算法模型,生成编译配置文件;
其中,基于该结构化的输出参数以及该目标算法模型生成编译配置文件。
具体的,采用thrift代码编译器,对于该目标算法模型以及结构化的输出参数进行编译IDL文件,生成服务封装代码,该服务封装代码中包含有该编译配置文件。
需要说明的是,算法模型采用python进行组合服务的开发语言,算法实体服务采用的是C语言实现,本申请中,Simulink算法的signal(观测量)转化为服务接口中的上下文信息时,通过定义服务封装规则,使用python脚本动态生成相关C代码,并且进行自动构建工作,本申请中通过python脚本提供了makeSO的服务端实现。
步骤S306:基于目标实现代码修改所述编译配置文件得到目标编译配置文件;
步骤S307:编译所述目标编译配置文件得到动态库文件。
其中,步骤S306-307与实施例1中的相应步骤一致,本实施例中不做赘述。
综上,本实施例提供的一种服务编译方法,包括:解析所述目标算法模型的定义文件,得到所述目标算法模型中输入参数;按照预设结构化协议对于所述目标算法模型的输入参数进行结构化处理得到输出参数;基于所述结构化输出参数以及所述目标算法模型,生成编译配置文件。本实施例中,解析目标算法模型的定义文件,得到其中的输入参数,对于该输入参数进行结构化处理,得到结构化的输出参数,通过对于输入参数的结构化处理实现了对于输出参数和输入参数的隔离,而且,对于输出参数进行结构化处理的动作由服务端进行处理,提升了维护效率。
如图4所示的,为本申请提供的一种服务编译方法实施例3的流程图,该方法包括以下步骤:
步骤S401:接收服务请求;
步骤S402:若所述服务请求是获得动态库服务请求,基于所述服务请求获得目标算法模型;
步骤S403:解析所述目标算法模型的定义文件,得到所述目标算法模型中输入参数;
步骤S404:按照预设结构化协议对于所述目标算法模型的输入参数进行结构化处理得到输出参数;
步骤S405:基于所述结构化输出参数以及所述目标算法模型,生成编译配置文件;
其中,步骤S401-405与实施例2中的相应步骤一致,本实施例中不做赘述。
步骤S406:基于所述服务请求中携带的配置信息,生成目标接口对应的目标实现代码;
其中,该服务请求中携带由各项配置信息,该配置信息具体是针对目标算法模型中的输入参数相关的。
具体的,获得动态库服务请求用于新建或者更新服务,该配置信息是新建或者更新服务相关的配置。
例如,该配置信息包括输入参数的个数等,本申请中不对于该配置信息的具体内容做限制。
其中,该目标接口是与该配置信息相关的服务接口。
其中,针对配置信息对应的服务接口,生成与该配置信息对应的服务接口目标实现代码,如runModel.c文件。
具体实施中,该目标实现代码也可以是在其他设备生成,导入该服务端的,以降低该服务端的处理负担。
步骤S407:基于目标实现代码修改所述编译配置文件中目标接口对应的内容得到目标编译配置文件;
其中,该编译配置文件是该目标算法模型对应的框架代码,将该目标实现代码修改该编译配置文件中目标接口对应的内容,实现了将该配置信息对应的服务接口的实现代码添加到编译配置文件中,得到目标编译配置文件。
具体的,将编译配置文件中相应的定义和/或函数部分对应的引用文件名称,替换为该目标实现代码的名称。
需要说明的是,由于Simulink工具的设计是基于数据量的而非面向对象的,因此,Simulink中无法生成runModel.c文件,所以,构建算法模型时不能够直接生成该runModel.c文件,前述步骤中的算法模型的编译文件中不包含该runModel.c文件,在本实施例中,基于目标实现代码修改编译配置文件,得到目标编译配置文件,实现将服务接口的实现代码加入编译。
步骤S408:编译所述目标编译配置文件得到动态库文件。
其中,步骤S408与实施例2中的相应步骤一致,本实施例中不做赘述。
综上,本实施例提供的一种服务编译方法,包括:基于所述服务请求中携带的配置信息,生成目标接口对应的目标实现代码;基于目标实现代码修改所述编译配置文件中目标接口对应的内容得到目标编译配置文件。本实施例中,生成与本次服务请求涉及的目标接口对应的目标实现代码,并基于该目标实现代码修改编译配置文件中目标接口对应内容,得到目标编译配置文件,实现修改所述编译配置文件得到本次服务器请求对应的目标编译配置文件的目的,实现过程简单易行。
如图5所示的,为本申请提供的一种服务编译方法实施例4的流程图,该方法包括以下步骤:
步骤S501:接收服务请求;
步骤S502:若所述服务请求是获得动态库服务请求,基于所述服务请求获得目标算法模型;
步骤S503:解析所述目标算法模型的定义文件,得到所述目标算法模型中输入参数;
其中,步骤S501-503与实施例1中的相应步骤一致,本实施例中不做赘述。
步骤S504:解析所述目标算法模型的代码文件,得到所述目标算法模型的输入参数;
其中,该代码文件包括由数据类型定义文件。
具体的,对于该目标算法模型的数据类型定义文件进行解析,获得服务方法的输入参数、输出参数以及调节参数等的名称和类型。
具体的,本申请中对于该输入参数进行结构化处理。
其中,该输入参数的类型赋值操作相关,基于该类型可以确定为该输入参数的赋值方式。
步骤S505:依据预设服务封装规则,从所述目标算法模型的代码文件中解析获得结构化定义;
其中,该目标算法模型的代码文件中记录有该目标算法模型的各种定义以及方法等。
具体的,本申请中,该结构化具体是采用JSON格式结构化。
具体的,根据预设服务封装规则,能够对于目标算法模型的代码的头文件中进行解析,获得其支持的JSON格式的定义。
其中,该结构化定义具体包括对于输入参数的名字与键(key)的对应条件,以及值(key)的生成原则等,本申请中不对于结构化定义的具体内容做限制。
其中,该服务封装规则是与后续调用该动态库文件的运行算法服务对应的,其是根据该运行算法服务提供给获得动态库服务,以实现根据该服务封装规则对于目标算法模型进行处理得到动态库文件。
步骤S506:基于所述结构化定义对于所述输入参数进行结构化处理,得到输出参数;
其中,基于该得到的结构化定义,对于输入参数进行结构化处理,得到结构化的输出参数。
具体的,采用key-value将非结构化的输入参数进行结构化,得到满足该结构化定义的输出参数。
步骤S507:基于所述结构化输出参数以及所述目标算法模型,生成编译配置文件;
步骤S508:基于目标实现代码修改所述编译配置文件得到目标编译配置文件;
步骤S509:编译所述目标编译配置文件得到动态库文件。
其中,步骤S507-509与实施例2中的相应步骤一致,本实施例中不做赘述。
综上,本实施例提供的一种服务编译方法,包括:解析所述目标算法模型的代码文件,得到所述目标算法模型的输入参数;依据预设服务封装规则,从所述目标算法模型的代码文件中解析获得结构化定义;基于所述结构化定义对于所述输入参数进行结构化处理,得到输出参数。本实施例中,对于目标算法模型的代码文件进行解析,得到该输入参数,根据预设服务封装该规则从该代码文件中解析获得结构化定义,采用该结构化定义对于输入参数进行结构化处理,得到满足结构化定义的输出参数,实现了将输入参数和输出参数的隔离。
如图6所示的,为本申请提供的一种服务编译方法实施例5的流程图,该方法包括以下步骤:
步骤S601:接收服务请求;
步骤S602:若所述服务请求是获得动态库服务请求,基于所述服务请求获得目标算法模型;
步骤S603:生成所述目标算法模型对应的编译配置文件;
步骤S604:基于目标实现代码修改所述编译配置文件得到目标编译配置文件;
步骤S605:编译所述目标编译配置文件得到动态库文件;
其中,步骤S601-605与实施例1中的相应步骤一致,本实施例中不做赘述。
步骤S606:将所述动态库文件存储到预设存储路径。
其中,该预设存储路径是根据需求设定,云平台中根据该路径能够找到该动态库文件。
具体实施中,该存储路径是依据云平台的配置管理策略确定,本申请中不对于该配置管理策略做限制。
后续对于该动态库文件进行获取时,可以根据该预设存储路径进行获取,后续实施例中会针对该过程进行说明,本实施例中不做详述。
具体实施中,在执行构建动态库过程中,采用状态代码表示获得动态库服务器的调用状态为成功或者失败。当出现文件不存在或者不完整、编译失败、存储失败等故障时,生成特定的故障码,并且返回给客户端。
综上,本实施例提供的一种服务编译方法,还包括:将所述动态库文件存储到预设存储路径。本实施例中,将构建的动态库文件存储到预设存储路径,为后续调用该动态库文件提供基础。
如图7所示的,为本申请提供的一种服务编译方法实施例6的流程图,该方法包括以下步骤:
步骤S701:接收服务请求;
步骤S702:若所述服务请求是获得动态库服务请求,基于所述服务请求获得目标算法模型;
步骤S703:生成所述目标算法模型对应的编译配置文件;
步骤S704:基于目标实现代码修改所述编译配置文件得到目标编译配置文件;
步骤S705:编译所述目标编译配置文件得到动态库文件;
其中,步骤S701-705与实施例1中的相应步骤一致,本实施例中不做赘述。
步骤S706:若所述服务请求是运行算法服务请求,基于所述服务请求在动态库文件库中筛选请求的目标算法模型对应的目标动态库文件;
其中,对于接收到的服务请求进行分析,确定该服务请求的类型,如果该服务请求是运行算法(mn)服务请求,执行本实施例中的步骤S706-708。
其中,该服务请求中包含有待调用目标算法模型的相关信息,如目标算法模型的标识等。
具体实施中,经过前述的步骤S702-705,生成若干动态库文件,该若干动态库文件组成了动态库文件库。
其中,基于该服务请求在动态库文件库中筛选是否存在与请求的目标算法模型对应的目标动态库文件。
其中,若筛选到与该服务请求对应的目标动态库文件,执行步骤S707-708;若未筛选到与该服务请求对应的目标动态库文件,执行步骤S709。
需要说明的是,具体实施中,该动态库服务请求和运行算法服务请求是并列的服务请求,该获得动态库服务请求用于新建或者更新服务,而运行算法请求是用于请求已有服务,二者可以同时执行,也可以单独执行。
如图8所示的是云平台系统示意图,包括云平台服务器801、服务端802、模型库803和编译服务器804。其中,云平台服务器801将客户端提供的请求发送给服务端,服务端802负责将请求对应的算法模型进行编译形成动态库文件,模型库803用于向服务端提供算法模型,编译服务器804用于配合服务端进行编译。其中,该服务端中设置有请求服务封装8021和提供算法服务8022,该请求服务封装功能具体是根据获得动态库服务请求构建动态库文件,该提供算法服务功能具体是根据运行算法服务请求进行算法运算。
步骤S707:若所述目标动态库文件存在,解析所述服务请求得到所述目标动态库文件的输入参数;
其中,若筛选到该目标动态库文件,解析该服务请求,得到其中携带的输入参数。
其中,该运行算法服务请求是调用目标算法模型,该请求中携带有欲写入该目标算法模型中的输入参数,以实现基于该目标算法模型实现运行算法。
例如,该输入参数可以对应于参数inputArgContext,其表示″step(步)″,该参数是服务run定义中的参数,其能够指示本次运行算法的步。
步骤S708:基于所述输入参数的类别,以及所述目标动态库文件对于所述输入参数执行运算;
其中,对于该输入参数进行分析,得到其所属类别,针对不同的类别,控制该目标动态库文件对于该输入参数进行不同方式的运算。
后续实施例中会针对该目标动态库文件对于输入参数执行运行的过程进行详细说明,本实施例中不做详述。
具体实施中,在执行运行算法服务中,结果状态码表示run服务调用状态为成功或失败。如果服务调用过程中出现异常,类似于输入参数不全、输入参数类型错误、运行错误等异常信息均需要通过特定的错误代码返回给客户端。
步骤S709:若所述目标动态库文件不存在,中止该服务调用,生成目标动态库文件不存在的提示信息,并将所述提示信息反馈给目标客户端。
其中,所述目标客户端是发出所述服务请求的客户端。
其中,若目标动态库不存在,则中止本次的服务调用。
其中,还生成提示信息,该提示信息用于提示生成目标动态库文件不存在,并将所述提示信息反馈给目标客户端,以提示发出该服务器请求的目标客户端能够了解该情况。
具体的,该提示信息可以是表征目标动态库文件不存在的代码。
综上,本实施例提供的一种服务编译方法,还包括:若所述服务请求是运行算法服务请求,基于所述服务请求在动态库文件库中筛选请求的目标算法模型对应的目标动态库文件;若所述目标动态库文件存在,解析所述服务请求得到所述目标动态库文件的输入参数;基于所述输入参数的类别,以及所述目标动态库文件对于所述输入参数执行运算;若所述目标动态库文件不存在,中止该服务调用,生成目标动态库文件不存在的提示信息,并将所述提示信息反馈给目标客户端,所述目标客户端是发出所述服务请求的客户端。本实施例中,在接收到运行算法服务请求后,基于该服务请求在动态库文件库中查找相应的目标动态库文件,解析该服务请求得到输入参数,以基于该输入参数的类别结合该目标动态库文件执行运算,实现响应该运行算法服务请求的过程;基于该服务请求在动态库文件库中未查找相应的目标动态库文件,则中止本次服务调用,生成提示信息并反馈给发出服务请求的客户端,以提示该客户端。
如图9所示的,为本申请提供的一种服务编译方法实施例7的流程图,该方法包括以下步骤:
步骤S901:接收服务请求;
步骤S902:若所述服务请求是获得动态库服务请求,基于所述服务请求获得目标算法模型;
步骤S903:生成所述目标算法模型对应的编译配置文件;
步骤S904:基于目标实现代码修改所述编译配置文件得到目标编译配置文件;
步骤S905:编译所述目标编译配置文件得到动态库文件;
步骤S906:若所述服务请求是运行算法服务请求,基于所述服务请求在动态库文件库中筛选请求的目标算法对应的目标动态库文件;
步骤S907:若所述目标动态库文件存在,解析所述服务请求得到所述目标动态库文件的输入参数;
其中,步骤S901-907与实施例6中的相应步骤一致,本实施例中不做赘述。
步骤S908:分析所述输入参数,得到所述输入参数的类别;
其中,所述类别包括数据类别或者文件路径类别。
其中,该输入参数具体是运行算法服务的表征运算步骤的参数。
其中,该输入参数可以是输入参数数据,也可以是文件的URL。
其中,根据该URL地址能够得到相应的输入参数序列文件。
其中,该入参序列文件可以是时间序列上变化的输入参数。
其中,该输入参数序列文件包括两种方式,第一种是采用JSON将参数非结构化,第二种是结构化数据。
其中,该第一种一般来自于采用No SQL的数据库中获得的数据;第二种一般是来自于实车采集的记录数据。
如下表1所示是非结构化序列文件。
表1
如下表2所示是非结构化序列文件。
表2
步骤S909:基于所述输入参数的类别是数据类别,对于所述输入参数进行结构化处理,得到目标输入参数;
其中,若该输入参数是输入数据,则仅需要对于该输入数据进行单步执行。
其中,该输入参数是非目标结构化数据,则将该输入参数进行结构化处理,得到目标输入参数。
其中,本实施例中,该目标结构化是指是该符合JSON协议,该输入参数不符合JSON协议。
具体的,后续实施例中会对于该过程进行详细说明,本实施例中不做详述。
具体实施中,单步执行的原子级服务使用C语言实现。
步骤S910:将所述目标输入参数赋值到所述目标动态库文件中对应对象,得到运算结果;
其中,目标动态库文件中对于目标算法模型的各个输入参数设置入参结构体JSON对象。
相应的,将该目标输入参数赋值给该目标动态库文件中对应的JSON对象,以使得该目标动态库文件基于赋的值进行运算得到运算结果。
后续实施例中会针对该赋值过程进行详细说明,本实施例中不做详述。
步骤S911:基于所述输入参数的类别是文件路径,调用所述文件路径对应的输入参数列表;
其中,若该输入参数的类别对应的文件路径,则通过该文件路径调用对应的参数列表,该参数列表如上述的表1或表2所示。
其中,该参数列表中包含待输入算法模型的多个数据。
具体实施中,序列处理的原子级服务由python实现。
步骤S912:将所述参数列表中每个输入参数依次赋值到目标动态库文件中对应对象,得到运算结果。
其中,将该输入参数列表中的每个参数,按照执行的流程以及该参数列表的序列时间间隔依次赋值到目标动态库文件中相应的对象,以使得该目标动态库文件的算法多次运行算法,得到运算结果。
其中,每次运行算法对应一步,该多次运行算法的每一步过程与前述步骤S909-910相似,可以参考前述步骤的解释。
步骤S913:若所述目标动态库文件不存在,中止该服务调用,生成目标动态库文件不存在的提示信息,并将所述提示信息反馈给目标客户端。
其中,步骤S913与实施例6中的相应步骤一致,本实施例中不做赘述。
综上,本实施例提供的一种服务编译方法,包括:分析所述输入参数,得到所述输入参数的类别,所述类别包括数据类别或者文件路径类别;基于所述输入参数的类别是数据类别,对于所述输入参数进行结构化处理,得到目标输入参数;将所述目标输入参数赋值到所述目标动态库文件中对应对象,得到运算结果;基于所述输入参数的类别是文件路径,调用所述文件路径对应的输入参数列表;将所述参数列表中每个输入参数依次赋值到目标动态库文件中对应对象,得到运算结果。本实施例中,针对不同的输入参数类别,以不同的方式进行处理运算,得到运算结果。
如图10所示的,为本申请提供的一种服务编译方法实施例8的流程图,该方法包括以下步骤:
步骤S1001:接收服务请求;
步骤S1002:若所述服务请求是获得动态库服务请求,基于所述服务请求获得目标算法模型;
步骤S1003:生成所述目标算法模型对应的编译配置文件;
步骤S1004:基于目标实现代码修改所述编译配置文件得到目标编译配置文件;
步骤S1005:编译所述目标编译配置文件得到动态库文件;
步骤S1006:若所述服务请求是运行算法服务请求,基于所述服务请求在动态库文件库中筛选请求的目标算法对应的目标动态库文件;
步骤S1007:若所述目标动态库文件存在,解析所述服务请求得到所述目标动态库文件的输入参数;
步骤S1008:分析所述输入参数,得到所述输入参数的类别,所述类别包括数据类别或者文件路径类别二
其中,步骤S1001-1008与实施例7中的相应步骤一致,本实施例中不做赘述。
步骤S1009:基于所述输入参数的类别是数据类别,若所述输入参数是非目标结构化数据,获取预设结构化协议定义的目标结构体以及所述目标结构体的属性描述信息;
其中,该输入参数的类别是数据类别,而且该输入参数是不符合JSON协议,需要将该输入参数进行结构化处理,以实现赋值到目标动态库文件,实现调用算法的目的。
首先,获取预设结构化定义的目标结构体以及该目标结构体的属性描述信息。
其中,该预设结构化定义协议的目标结构体是在构建动态库文件时,已经定义完成,并保留的;该目标结构体的属性描述信息也是在构建动态文件库时已经设定完成,在响应运行算法服务时,直接获取该目标结构体和属性描述信息。
步骤S1010:调用预设封装解析接口,基于目标结构体以及所述属性描述信息解析所述输入参数,得到第一结构化对象;
其中,该预设封装解析接口具体是JSON接口。
具体的,调用该JSON接口,解析该输入的字符串,得到第一结构化对象。
其中,该结构化对象是JSON对象。
其中,该目标结构体和属性描述信息包含有结构化对象的相关信息。
其中,该输入参数是不符合JSON协议的,基于该目标结构体以及属性描述信息对于该输入参数进行转换,得到符合JSON协议的JSON字符串,调用JSON接口解析该JSON字符串,得到JSON对象。
步骤S1011:访问所述目标动态库文件的属性,在所述目标动态库文件中查找与所述第一结构化对象的属性名相同的第二结构化对象;
其中,该目标动态库文件中,针对输入参数、输出参数等各参数预设属性。
具体的,对于该目标动态库文件的属性循环访问,以实现在其中查找到与该第一结构化对象的属性名相同的JSON子对象,该JSON子对象是第二结构化对象。
例如,该目标动态库文件是Simulink算法的库文件,相应的,查找和Simulink输入和输出类型(<ModelName>_U和<ModelName>_Y)中的成员变量名称相同的JSON对象。
步骤S1012:将所述第一结构化对象的取值赋值到所述第二结构化对象中得到待运行库文件;
其中,该根据输入参数得到的第一结构化对象中包含有输入参数的取值,该取值具体是用于算法运算的输入。
具体的,将该第一结构化对象的取值赋值给第二结构化对象,实现了将输入参数的取值赋值给目标动态库文件,得到了包含该输入参数的取值的待运行库文件。
其中,运行算法服务的上下文信息对应于算法模型的输入参数和输出参数,其通过上述的赋值,实现将运行算法服务的上下文信息与算法signal(观测量)之间的映射,为后续进行算法运算提供基础。
步骤S1013:运行所述待运行库文件得到运算结果;
其中,该待运行库文件是结合了本次的运行算法服务请求的输入参数,对于该待运行库文件进行运行,得到本次的运算结果。
需要说明的是,若输入参数的类别是文件路径,则对于该输入参数列表中的每个参数按照运行序列,依次赋值到目标动态库文件,得到待运行库文件并运行,得到的运算结果可以作为下一个参数的运算依据,循环进行运算,得到最终的运算结果。
步骤S1014:基于所述输入参数的类别是文件路径,调用所述文件路径对应的输入参数列表;
步骤S1015:将所述参数列表中每个输入参数依次赋值到目标动态库文件中对应对象,得到运算结果。
步骤S1016:若所述目标动态库文件不存在,中止该服务调用,生成目标动态库文件不存在的提示信息,并将所述提示信息反馈给目标客户端。
其中,步骤S1014-1016与实施例7中的相应步骤一致,本实施例中不做赘述。
综上,本实施例提供的一种服务编译方法,包括:基于所述输入参数是非目标结构化数据,获取预设结构化协议定义的目标结构体以及所述目标结构体的属性描述信息;调用预设封装解析接口,基于目标结构体以及所述属性描述信息解析所述输入参数,得到第一结构化对象;访问所述目标动态库文件的属性,在所述目标动态库文件中查找与所述第一结构化对象的属性名相同的第二结构化对象;将所述第一结构化对象的取值赋值到所述第二结构化对象中得到待运行库文件;运行所述待运行库文件得到运算结果。本实施例中,基于输入参数是非目标结构化数据,调用预设封装解析接口结合获得预设结构化协议定义的目标结构体和目标结构体的属性描述信息解析输入参数,得到第一结构化对象,在目标动态库文件中查找与该第一结构化对象的属性名相同的第二结构化对象,以将第一结构化对象的取值赋值给第二结构化对象得到待运行库文件,运行该待运行库文件得到运算结果,实现了基于构建的动态库文件进行响应运行算法服务请求。
与上述本申请提供的一种服务编译方法实施例相对应的,本申请还提供了应用该服务编译方法的装置实施例。
如图11所示的为本申请提供的一种服务编译装置实施例的结构示意图,该装置包括以下结构:接收模块1101、获得模块1102、生成模块1103、修改模块1104和编译模块1105;
其中,该接收模块1101,用于接收服务请求;
其中,该获得模块1102,用于若所述服务请求是获得动态库服务请求,基于所述服务请求获得目标算法模型;
其中,该生成模块1103,用于生成所述目标算法模型对应的编译配置文件;
其中,该修改模块1104,用于基于目标实现代码修改所述编译配置文件得到目标编译配置文件;
其中,该编译模块1105,用于编译所述目标编译配置文件得到动态库文件。
可选的,生成模块,包括:
解析单元,用于解析所述目标算法模型的定义文件,得到所述目标算法模型中输入参数,所述输入参数包括输入参数;
第一处理单元,用于按照预设结构化协议对于所述目标算法模型的输入参数进行结构化处理得到输出参数;
生成单元,用于基于所述结构化输出参数以及所述目标算法模型,生成编译配置文件。
可选的,解析单元,具体用于:
解析所述目标算法模型中数据类型定义文件,得到所述目标算法模型中输入参数,所述数据类型定义文件用于定义所述目标算法模型中至少两个参数的名称和数据类型。
可选的,修改模块,具体用于:
基于所述服务请求中携带的配置信息,生成目标接口对应的目标实现代码;
基于目标实现代码修改所述编译配置文件中目标接口对应的内容得到目标编译配置文件。
可选的,处理单元具体用于:
解析所述目标算法模型的代码文件,得到所述目标算法模型的输入参数;
依据预设服务封装规则,从所述目标算法模型的代码文件中解析获得结构化定义;
基于所述结构化定义对于所述输入参数进行结构化处理,得到输出参数。
可选的,第一处理单元,具体用于:
解析所述目标算法模型的代码文件,得到所述目标算法模型的输入参数;
依据预设服务封装规则,从所述目标算法模型的代码文件中解析获得结构化定义;
基于所述结构化定义对于所述输入参数进行结构化处理,得到输出参数。
可选的,还包括:
筛选模块,用于若所述服务请求是运行算法服务请求,基于所述服务请求在动态库文件库中筛选请求的目标算法模型对应的目标动态库文件;
解析模块,用于若所述目标动态库文件存在,解析所述服务请求得到所述目标动态库文件的输入参数;
运算模块,用于基于所述输入参数的类别,以及所述目标动态库文件对于所述输入参数执行运算;
若所述目标动态库文件不存在,中止该服务调用,生成目标动态库文件不存在的提示信息,并将所述提示信息反馈给目标客户端,所述目标客户端是发出所述服务请求的客户端。
可选的,所述运算模块,包括:
分析单元,用于分析所述输入参数,得到所述输入参数的类别,所述类别包括数据类别或者文件路径类别;
第二处理单元,用于基于所述输入参数的类别是数据类别,对于所述输入参数进行结构化处理,得到目标输入参数;将所述目标输入参数赋值到所述目标动态库文件中对应对象,得到运算结果;
调用单元,用于基于所述输入参数的类别是文件路径,调用所述文件路径对应的参数列表;将所述参数列表中每个输入参数依次赋值到目标动态库文件中对应对象,得到运算结果。
可选的,所述第二处理单元,具体用于,包括:
基于所述输入参数是非目标结构化数据,获取预设结构化协议定义的目标结构体以及所述目标结构体的属性描述信息;
调用预设封装解析接口,基于目标结构体以及所述属性描述信息解析所述输入参数,得到第一结构化对象;
访问所述目标动态库文件的属性,在所述目标动态库文件中查找与所述第一结构化对象的属性名相同的第二结构化对象;
将所述第一结构化对象的取值赋值到所述第二结构化对象中得到待运行库文件;
运行所述待运行库文件得到运算结果。
需要说明的是,本实施例中提供的一种服务编译装置的各个组成结构的功能解释,请参考前述方法实施例中的解释,本实施例中不做赘述。
综上,本实施例提供的一种服务编译方法,包括:接收模块,用于接收服务请求;获得模块,用于若所述服务请求是获得动态库服务请求,基于所述服务请求获得目标算法模型;生成模块,用于生成所述目标算法模型对应的编译配置文件;修改模块,用于基于目标实现代码修改所述编译配置文件得到目标编译配置文件;编译模块,用于编译所述目标编译配置文件得到动态库文件。本实施例中,由于目标实现代码是与目标算法模型中目标接口对应,基于该目标实现代码自动对于编译配置文件进行修改得到目标编译配置文件,因此,在算法模型或者服务接口变动时,可以根据变动的情况生成的目标实现代码对于编译配置文件自动进行修改,无需人工进行调整信号与服务之间相互转换的业务逻辑,降低工作人员的负担。
与上述本申请提供的一种服务编译方法实施例相对应的,本申请还提供了与该服务编译方法相应的电子设备以及可读存储介质。
其中,该电子设备,包括:存储器、处理器;
其中,存储器存储有处理程序;
所述处理器用于加载并执行所述存储器存储的所述处理程序,以实现如上述任一项所述的服务编译方法的各步骤。
具体该电子设备的实现服务编译方法,参考前述服务编译方法实施例即可。
其中,该可读存储介质,其上存储有计算机程序,所述计算机程序被处理器调用并执行,实现如上述任一项所述的服务编译方法的各步骤。
具体该可读存储介质存储的计算机程序执行实现服务编译方法,参考前述服务编译方法实施例即可。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例提供的装置而言,由于其与实施例提供的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
对所提供的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所提供的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种服务编译方法,其特征在于,包括:
接收服务请求;
若所述服务请求是获得动态库服务请求,基于所述服务请求获得目标算法模型;
生成所述目标算法模型对应的编译配置文件;
基于目标实现代码修改所述编译配置文件得到目标编译配置文件,所述目标实现代码是与目标算法模型的目标接口对应;
编译所述目标编译配置文件得到动态库文件。
2.根据权利要求1所述的服务编译方法,其特征在于,所述生成所述目标算法模型对应的编译配置文件,包括:
解析所述目标算法模型的定义文件,得到所述目标算法模型中输入参数,所述输入参数包括输入参数;
按照预设结构化协议对于所述目标算法模型的输入参数进行结构化处理得到输出参数;
基于所述结构化输出参数以及所述目标算法模型,生成编译配置文件。
3.根据权利要求2所述的服务编译方法,其特征在于,所述解析所述目标算法模型的定义文件,得到所述目标算法模型中输入参数,包括:
解析所述目标算法模型中数据类型定义文件,得到所述目标算法模型中输入参数,所述数据类型定义文件用于定义所述目标算法模型中至少两个参数的名称和数据类型。
4.根据权利要求2所述的服务编译方法,其特征在于,所述基于目标实现代码修改所述编译配置文件得到目标编译配置文件,包括:
基于所述服务请求中携带的配置信息,生成目标接口对应的目标实现代码;
基于目标实现代码修改所述编译配置文件中目标接口对应的内容得到目标编译配置文件。
5.根据权利要求2所述的服务编译方法,其特征在于,所述按照预设结构化协议对于所述目标算法模型的输入参数进行结构化处理得到输出参数,包括:
解析所述目标算法模型的代码文件,得到所述目标算法模型的输入参数;
依据预设服务封装规则,从所述目标算法模型的代码文件中解析获得结构化定义;
基于所述结构化定义对于所述输入参数进行结构化处理,得到输出参数。
6.根据权利要求1所述的服务编译方法,其特征在于,还包括:
若所述服务请求是运行算法服务请求,基于所述服务请求在动态库文件库中筛选请求的目标算法模型对应的目标动态库文件;
若所述目标动态库文件存在,解析所述服务请求得到所述目标动态库文件的输入参数;
基于所述输入参数的类别,以及所述目标动态库文件对于所述输入参数执行运算;
若所述目标动态库文件不存在,中止该服务调用,生成目标动态库文件不存在的提示信息,并将所述提示信息反馈给目标客户端,所述目标客户端是发出所述服务请求的客户端。
7.根据权利要求6所述的服务编译方法,其特征在于,所述基于所述输入参数的类别,以及所述目标动态库文件对于所述输入参数执行运算,包括:
分析所述输入参数,得到所述输入参数的类别,所述类别包括数据类别或者文件路径类别;
基于所述输入参数的类别是数据类别,对于所述输入参数进行结构化处理,得到目标输入参数;将所述目标输入参数赋值到所述目标动态库文件中对应对象,得到运算结果;
基于所述输入参数的类别是文件路径,调用所述文件路径对应的参数列表;
将所述参数列表中每个输入参数依次赋值到目标动态库文件中对应对象,得到运算结果。
8.根据权利要求7所述的服务编译方法,其特征在于,所述对于所述输入参数进行结构化处理,得到目标输入参数,包括:
若所述输入参数是非目标结构化数据,获取预设结构化协议定义的目标结构体以及所述目标结构体的属性描述信息;
调用预设封装解析接口,基于目标结构体以及所述属性描述信息解析所述输入参数,得到第一结构化对象;
相应的,将所述目标输入参数赋值到所述目标动态库文件中对应对象,得到运算结果,包括:
访问所述目标动态库文件的属性,在所述目标动态库文件中查找与所述第一结构化对象的属性名相同的第二结构化对象;
将所述第一结构化对象的取值赋值到所述第二结构化对象中得到待运行库文件;
运行所述待运行库文件得到运算结果。
9.一种服务编译装置,其特征在于,包括:
接收模块,用于接收服务请求;
获得模块,用于若所述服务请求是获得动态库服务请求,基于所述服务请求获得目标算法模型;
生成模块,用于生成所述目标算法模型对应的编译配置文件;
修改模块,用于基于目标实现代码修改所述编译配置文件得到目标编译配置文件;
编译模块,用于编译所述目标编译配置文件得到动态库文件。
10.一种电子设备,其特征在于,包括:
存储器、处理器;
其中,存储器存储有处理程序;
所述处理器用于加载并执行所述存储器存储的所述处理程序,以实现如权利要求1-8任一项所述的服务编译方法的各步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311684769.5A CN117687634A (zh) | 2023-12-08 | 2023-12-08 | 一种服务编译方法、装置和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311684769.5A CN117687634A (zh) | 2023-12-08 | 2023-12-08 | 一种服务编译方法、装置和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117687634A true CN117687634A (zh) | 2024-03-12 |
Family
ID=90131230
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311684769.5A Pending CN117687634A (zh) | 2023-12-08 | 2023-12-08 | 一种服务编译方法、装置和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117687634A (zh) |
-
2023
- 2023-12-08 CN CN202311684769.5A patent/CN117687634A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11741293B2 (en) | Systems and methods of a script generation engine | |
CN108628661B (zh) | 云制造服务的自动建置方法、云制造系统 | |
CN108415832B (zh) | 接口自动化测试方法、装置、设备及存储介质 | |
US10216554B2 (en) | API notebook tool | |
US9804837B2 (en) | System and method for creating, managing, and reusing schema type definitions in services oriented architecture services, grouped in the form of libraries | |
US9483260B1 (en) | Documentation generation for web APIs based on byte code analysis | |
CN102395950B (zh) | 与数据存储系统的通信 | |
CN110609906B (zh) | 知识图谱构建方法及装置、存储介质及电子终端 | |
US10666744B2 (en) | Managing discovery and selection of service interface specifications | |
CN110187902B (zh) | 基于spring boot的项目改造方法、装置、设备及存储介质 | |
WO2023221408A1 (zh) | 深度学习框架的算子处理方法、装置、设备和存储介质 | |
US8645913B2 (en) | Web-service based generation of business objects | |
CN109271403A (zh) | 一种数据查询的操作方法、装置、介质及电子设备 | |
CN113946321B (zh) | 计算逻辑的处理方法、电子设备和可读存储介质 | |
CN111814449B (zh) | 表单解析方法、装置、设备及存储介质 | |
Uyanik et al. | A template-based code generator for web applications | |
CN113238740A (zh) | 代码生成方法、代码生成装置、存储介质及电子设备 | |
CN115525534A (zh) | 基于swagger的接口测试的测试用例生成方法、生成平台 | |
CN116795351A (zh) | 一种软件工具包的生成方法、装置及可读存储介质 | |
CN117687634A (zh) | 一种服务编译方法、装置和电子设备 | |
CN113885844A (zh) | 一种业务服务编排方法及相关装置 | |
CN113342399A (zh) | 应用项目的结构配置方法、装置及可读存储介质 | |
CN113791775B (zh) | 元数据的流程编排方法与装置、存储介质和电子设备 | |
CN117555533B (zh) | 代码生成方法、电子设备及存储介质 | |
JP5732926B2 (ja) | リモートプロシージャコール処理方法 |
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 |