本发明涉及移动应用开发,具体涉及调用接口数据传递方法、装置、计算机设备及存储介质。
背景技术:
1、在移动应用开发中,使用多种编程语言的混合开发技术被普遍应用,尤其是一些跨平台脚本语言(如lua)的引入,为应用开发提供了动态性、脚本能力和快速迭代的优势。在跨越不同语言层的调用过程中,需要在各层之间可以顺畅地交换数据,这通常涉及到通过各语言提供的数据转换功能,将调用层的数据格式转换为被调用层可以理解的格式。
2、相关技术中,现有在跨越不同语言层的调用过程中,存在以下问题:1)调用效率低:现有跨越不同语言层的调用的数据结构的双向转换会发生在每两种不同语言的调用边界,额外增加了通讯开销,而且随着跨语言层数的增加通讯开销会相应地成倍增长;2)数据精度和数据类型可能在中间语言层丢失:由于每种语言都其有自身特点,由于中间语言层的限制,数据类型在进行类型转换时,造成精度或数据类型的改变,从而影响业务逻辑;3)维护成本增加:每个编程接口(api)具有不同类型的参数和返回值,因此需要分别针对每个api开发代码以支持其数据类型的转换。
技术实现思路
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、第七方面,本发明提供了一种计算机程序产品,包括计算机指令,计算机指令用于使计算机执行上述第一方面或其对应的任一实施方式的调用接口数据传递方法,或者执行第二方面或其对应的任一实施方式的调用接口数据传递方法,或者执行第三方面的调用接口数据传递方法。
1.一种调用接口数据传递方法,其特征在于,应用于业务请求层,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述业务调用请求数据包括调用的业务接口的名称、所述业务接口的返回值数据的类型和所述业务接口的所有输入参数,所述对所述业务调用请求数据进行序列化,转换得到第一数据,包括:
3.一种调用接口数据传递方法,其特征在于,应用于业务实现层,所述方法包括:
4.根据权利要求3所述的方法,其特征在于,所述第二数据,包括所述业务请求层输入的调用的业务接口的名称、所述业务接口的返回值数据的类型和所述业务接口的所有输入参数,所述对所述第一数据进行反序列化,得到在所述业务实现层中所述第一数据对应的第二数据,包括:
5.根据权利要求4所述的方法,其特征在于,所述调用所述业务函数,对所述第二数据进行处理,得到返回值数据包括:
6.一种调用接口数据传递方法,其特征在于,应用于语言层,所述语言层至少包括与业务请求层相邻的第一语言层和与业务实现层相邻的第二语言层,所述第一语言层与所述第二语言层直接连接,或,所述第一语言层与所述第二语言层通过若干中间语言层连接,所述方法包括:
7.一种调用接口数据传递系统,其特征在于,所述系统包括:业务请求层、业务实现层和语言层,所述语言层至少包括与所述业务请求层相邻的第一语言层和与所述业务实现层相邻的第二语言层,所述第一语言层与所述第二语言层直接连接,或,所述第一语言层与所述第二语言层通过若干中间语言层连接,所述业务请求层、所述语言层和所述业务实现层之间的语言均不相同;
8.一种计算机设备,其特征在于,包括:
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机指令,所述计算机指令用于使计算机执行权利要求1至6中任一项所述的调用接口数据传递方法。
10.一种计算机程序产品,其特征在于,包括计算机指令,所述计算机指令用于使计算机执行权利要求1至6中任一项所述的调用接口数据传递方法。