委托代理生成方法及服务调用方法与流程
本技术属于软件开发与代码生成,尤其涉及一种委托代理生成方法及服务调用方法。
背景技术:
1、随着分布式与模块化软件系统的发展,服务间的远程调用已成为常态。为屏蔽通信细节,降低调用方与服务方的耦合,常引入委托代理机制,使调用方能够以本地接口的形式访问远程服务。
2、相关技术中,委托代理通常以独立的接口描述文件作为生成依据,即先编写接口描述文件,再由工具根据该接口描述文件生成调用端和服务端的代码。
3、然而,上述方式高度依赖独立的接口描述文件,服务接口的任何变更都需同步修改该接口描述文件并重新生成调用端和服务端的代码,增加了维护成本。
技术实现思路
1、本技术实施例提供了一种委托代理生成方法及服务调用方法,当服务接口变更时无需维护独立描述文件即可同步更新调用端和服务端的代码,能够保证调用端和服务端的代码与实际接口定义的一致性,降低维护成本。
2、第一方面,本技术实施例提供了一种委托代理生成方法,包括:
3、在原生编程语言的源码工程的编译期之前,获取源码工程;
4、识别源码工程中的服务标识、服务接口和服务实现,生成扫描结果;服务标识用于标记委托代理的服务,服务接口用于声明委托代理的调用方法,服务实现包括与服务接口中调用方法相匹配的业务实现逻辑;
5、对扫描结果进行解析,生成解析模型;
6、根据解析模型,生成调用端委托代理的代码文件和服务端委托代理的代码文件。
7、在第一方面的一种可能的实现方式中,识别源码工程中的服务标识、服务接口和服务实现,生成扫描结果,包括:根据源码工程的配置信息和预设过滤规则,确定目标源代码文件;预设过滤规则用于排除源码工程中不参与委托代理生成的源代码文件;将目标源代码文件中用于标识服务的标记定义,确定为服务标识;将目标源代码文件中与服务标识相关联的接口声明,确定为服务接口;将目标源代码文件中与服务接口中调用方法相匹配的业务实现逻辑,确定为服务实现;根据服务标识、服务接口和服务实现,确定扫描结果。
8、在第一方面的一种可能的实现方式中,解析模型包括服务接口模型、调用签名模型、数据结构模型和服务实现模型;对扫描结果进行解析,生成解析模型,包括:根据扫描结果中服务标识与服务接口之间的对应关系,构建服务接口模型;对调用方法进行解析,构建调用签名模型;对调用方法涉及的数据结构进行类型分类和解析,构建数据结构模型;
9、根据扫描结果中服务实现的实现信息,构建服务实现模型。
10、在第一方面的一种可能的实现方式中,对调用方法涉及的数据结构进行类型分类和解析,构建数据结构模型,包括:获取调用方法中每一数据结构和每一数据结构的数据类型;数据结构包括参数、返回值、对象字段、集合元素和映射键值;针对每一数据类型,根据数据类型的结构特征信息,确定数据类型在类型体系中所属的类型归类;根据数据类型的语义信息,确定数据类型在类型归类中的类型细类;对数据类型进行解析,确定数据类型的内部结构组成信息;根据数据类型、类型归类、类型细类和内部结构组成信息,生成数据类型对应的类型元数据;根据每一数据结构和对应的类型元数据,生成数据结构模型。
11、在第一方面的一种可能的实现方式中,解析模型包括服务接口模型、调用签名模型、数据结构模型和服务实现模型;根据解析模型,生成调用端委托代理的代码文件和服务端委托代理的代码文件,包括:根据调用签名模型,生成每个调用方法对应的请求参数模型和响应结果模型;请求参数模型用于描述调用方法的单次调用请求中每一参数的第一描述信息和第一运行期参数存储信息,响应结果模型用于描述调用方法的单次调用响应中每一返回结果的第二描述信息和第二运行期参数存储信息;根据服务接口模型和调用签名模型,生成与服务接口对应的调用端代理方法,并在调用端代理方法中配置请求参数模型和响应结果模型,形成调用端委托代理的代码文件;根据服务接口模型、调用签名模型和服务实现模型,生成服务端代理方法,并在服务端代理方法中配置请求参数模型,形成服务端委托代理的代码文件。
12、在第一方面的一种可能的实现方式中,该委托代理生成方法还包括:在生成调用端委托代理的代码文件和服务端委托代理的代码文件时,根据数据结构模型中的结构化数据类型,构建运行期绑定模型;运行期绑定模型用于在运行期处理结构化数据类型时完成数据创建、赋值和/或写入操作;将运行期绑定模型分别写入请求参数模型和响应结果模型中。
13、在第一方面的一种可能的实现方式中,当结构化数据类型为对象类型时,运行期绑定模型包括对象绑定模型,对象绑定模型用于描述对象类型的字段元数据与运行期写入字段之间的对应关系;当结构化数据类型为集合类型时,运行期绑定模型包括集合绑定模型,集合绑定模型用于描述集合类型的元素元数据与运行期的元素创建方式和元素添加方式之间的对应关系;当结构化数据类型为映射类型时,运行期绑定模型包括映射绑定模型,映射绑定模型用于描述映射类型的值类型元数据与运行期的值创建方式和键值写入方式之间的对应关系。
14、第二方面,本技术实施例提供了一种服务调用方法,应用于调用端设备,调用端设备配置有如第一方面中任一项的委托代理生成方法生成的调用端委托代理的代码文件;该服务调用方法包括:
15、获取目标服务接口的调用请求;调用请求中包括调用参数;
16、根据调用请求,确定目标服务接口对应的服务类别信息和操作类型信息,并将服务类别信息和操作类型信息写入统一传输对象;
17、根据调用端委托代理的代码文件中配置的请求参数模型,将调用参数写入统一传输对象的请求数据字段;
18、将统一传输对象编码为请求数据;
19、向服务端设备发送请求数据,并接收服务端设备对请求数据的响应数据;
20、将响应数据解码为统一传输对象,并获取统一传输对象的响应数据字段;
21、根据调用端委托代理的代码文件中配置的响应结果模型,将响应数据字段转换为目标服务接口的返回结果。
22、第三方面,本技术实施例提供了一种服务调用方法,应用于服务端设备,服务端设备配置有如第一方面中任一项的委托代理生成方法生成的服务端委托代理的代码文件;该服务调用方法包括:
23、接收调用端设备发送的请求数据;
24、将请求数据解码为统一传输对象;
25、根据统一传输对象的服务类别信息,在服务端委托代理的代码文件中定位统一传输对象的目标服务;
26、根据统一传输对象的操作类型信息,在目标服务中定位目标调用方法;
27、根据服务端委托代理的代码文件中配置的请求参数模型,将统一传输对象的请求数据字段下的参数数据转换为参数值;
28、利用参数值调用目标调用方法,获得调用结果;
29、根据调用结果,确定统一传输对象的响应数据字段;
30、将统一传输对象编码为响应数据,并向调用端设备返回响应数据。
31、在第三方面的一种可能的实现方式中,根据服务端委托代理的代码文件中配置的请求参数模型,将统一传输对象的请求数据字段下的参数数据转换为参数值,包括:根据服务端委托代理的代码文件中配置的请求参数模型的第一描述信息,确定统一传输对象的请求数据字段下的参数数据对应的类型归类;在类型归类为基础类型归类的情况下,根据请求参数模型中的第一描述信息,确定参数数据在基础类型归类下的具体基础类型,并按照具体基础类型将参数数据转换为对应的参数值;在类型归类为结构化类型归类的情况下,根据请求参数模型中的运行期绑定模型,确定参数数据对应的具体结构化数据类型,并按照具体结构化数据类型将参数数据转换为对应的参数值。
32、第四方面,本技术实施例提供了一种委托代理生成装置,包括:
33、源码获取模块,用于在原生编程语言的源码工程的编译期之前,获取源码工程;
34、扫描模块,用于识别源码工程中的服务标识、服务接口和服务实现,生成扫描结果;服务标识用于标记委托代理的服务,服务接口用于声明委托代理的调用方法,服务实现包括与服务接口中调用方法相匹配的业务实现逻辑;
35、解析模块,用于对扫描结果进行解析,生成解析模型;
36、委托代理生成模块,用于根据解析模型,生成调用端委托代理的代码文件和服务端委托代理的代码文件。
37、第五方面,本技术实施例提供了一种服务调用装置,配置于调用端设备,调用端设备配置有如第一方面中任一项的委托代理生成方法生成的调用端委托代理的代码文件;该服务调用装置包括:
38、请求获取模块,用于获取目标服务接口的调用请求;调用请求中包括调用参数;
39、第一写入模块,用于根据调用请求,确定目标服务接口对应的服务类别信息和操作类型信息,并将服务类别信息和操作类型信息写入统一传输对象;
40、第二写入模块,用于根据调用端委托代理的代码文件中配置的请求参数模型,将调用参数写入统一传输对象的请求数据字段;
41、第一编码模块,用于将统一传输对象编码为请求数据;
42、数据通信模块,用于向服务端设备发送请求数据,并接收服务端设备对请求数据的响应数据;
43、第一解码模块,用于将响应数据解码为统一传输对象,并获取统一传输对象的响应数据字段;
44、转换模块,用于根据调用端委托代理的代码文件中配置的响应结果模型,将响应数据字段转换为目标服务接口的返回结果。
45、第六方面,本技术实施例提供了一种服务调用装置,配置于服务端设备,服务端设备配置有如第一方面中任一项的委托代理生成方法生成的服务端委托代理的代码文件;该服务调用装置包括:
46、数据接收模块,用于接收调用端设备发送的请求数据;
47、第二解码模块,用于将请求数据解码为统一传输对象;
48、服务定位模块,用于根据统一传输对象的服务类别信息,在服务端委托代理的代码文件中定位统一传输对象的目标服务;
49、方法定位模块,用于根据统一传输对象的操作类型信息,在目标服务中定位目标调用方法;
50、数值转换模块,用于根据服务端委托代理的代码文件中配置的请求参数模型,将统一传输对象的请求数据字段下的参数数据转换为参数值;
51、第二调用模块,用于利用参数值调用目标调用方法,获得调用结果;
52、字段确定模块,用于根据调用结果,确定统一传输对象的响应数据字段;
53、编码模块,用于将统一传输对象编码为响应数据,并向调用端设备返回响应数据。
54、在第六方面的一种可能的实现方式中,数值转换模块具体用于:根据服务端委托代理的代码文件中配置的请求参数模型的第一描述信息,确定统一传输对象的请求数据字段下的参数数据对应的类型归类;在类型归类为基础类型归类的情况下,根据请求参数模型中的第一描述信息,确定参数数据在基础类型归类下的具体基础类型,并按照具体基础类型将参数数据转换为对应的参数值;在类型归类为结构化类型归类的情况下,根据请求参数模型中的运行期绑定模型,确定参数数据对应的具体结构化数据类型,并按照具体结构化数据类型将参数数据转换为对应的参数值。
55、第七方面,本技术实施例提供了一种计算机设备,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述第一方面中任一项的委托代理生成方法,或者第二方面的服务调用方法,或者第三方面中任一项的服务调用方法。
56、第八方面,本技术实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现上述第一方面中任一项的委托代理生成方法,或者第二方面的服务调用方法,或者第三方面中任一项的服务调用方法。
57、第九方面,本技术实施例提供了一种计算机程序产品,当计算机程序产品在计算机设备上运行时,使得计算机设备执行上述第一方面中任一项的委托代理生成方法,或者第二方面的服务调用方法,或者第三方面中任一项的服务调用方法。
58、本技术实施例与现有技术相比存在的有益效果是:
59、本技术实施例提供一种委托代理生成方法及服务调用方法,该委托代理生成方法通过在原生编程语言的源码工程的编译期之前,获取源码工程,直接将源码工程作为生成委托代理的唯一输入来源,规避了在服务接口之外需要额外定义和维护独立的接口描述文件,从而在根源上避免了服务接口变更时需同步修改外部的接口描述文件。在此基础上,通过识别源码工程中的服务标识、服务接口和服务实现,生成扫描结果,其中,服务标识用于标记委托代理的服务,服务接口用于声明委托代理的调用方法,服务实现包括与服务接口中调用方法相匹配的业务实现逻辑,能够直接从源码工程中提取构建委托代理所必需的三个核心要素,即服务标识、接口声明和业务实现,并建立了三者之间的对应关系,使得后续生成的调用端委托代理和服务端委托代理能够与同一份源码工程中的接口定义保持内在一致。进而,通过对扫描结果进行解析,生成解析模型,将服务标识、接口声明和业务实现结构化和模型化,为调用端委托代理和服务端委托代理的代码文件生成提供了统一的且可直接调用的数据基础。最终,根据解析模型,生成调用端委托代理的代码文件和服务端委托代理的代码文件,保证了调用端委托代理和服务端委托代理的代码文件均来源于同一份源码工程的解析结果,确保了调用端委托代理和服务端委托代理的代码文件所依赖的接口定义、调用方法和业务实现之间的绑定关系始终一致。由此,服务接口变更仅需修改源码工程,重新执行生成过程即可获得同步更新的调用端委托代理和服务端委托代理的代码文件,无需额外维护独立的接口描述文件,从而降低了维护成本。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com