CN111142860B - 用于实现接口调用的方法及装置 - Google Patents

用于实现接口调用的方法及装置 Download PDF

Info

Publication number
CN111142860B
CN111142860B CN201911408074.8A CN201911408074A CN111142860B CN 111142860 B CN111142860 B CN 111142860B CN 201911408074 A CN201911408074 A CN 201911408074A CN 111142860 B CN111142860 B CN 111142860B
Authority
CN
China
Prior art keywords
class
interface
target
service
annotation
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
Application number
CN201911408074.8A
Other languages
English (en)
Other versions
CN111142860A (zh
Inventor
曾远
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangzhou Kugou Computer Technology Co Ltd
Original Assignee
Guangzhou Kugou Computer Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guangzhou Kugou Computer Technology Co Ltd filed Critical Guangzhou Kugou Computer Technology Co Ltd
Priority to CN201911408074.8A priority Critical patent/CN111142860B/zh
Publication of CN111142860A publication Critical patent/CN111142860A/zh
Application granted granted Critical
Publication of CN111142860B publication Critical patent/CN111142860B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/37Compiler construction; Parser generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请公开了一种用于实现接口调用的方法及装置,属于计算机技术领域。服务提供方获取Thrift接口对应的目标注解类以及目标接口类,目标注解类中包括用于在服务提供方标识目标接口类的第一注解类、用于定义Thrift接口参数的第二注解类以及用于在服务调用方标识目标接口类的第三注解类。服务提供方向服务调用方发送目标注解类以及目标接口类,供服务调用方对采用第三注解类标识的目标接口类进行编译,使服务调用方能够调用Thrift接口提供的服务。本申请简化了服务提供方实现对外提供服务的步骤以及服务调用方调用服务接口的步骤。

Description

用于实现接口调用的方法及装置
技术领域
本申请涉及计算机技术领域,特别涉及一种用于实现接口调用的方法及装置。
背景技术
随着计算机技术的发展,通过各种编程语言实现的软件服务种类越来越多。目前,不同的服务之间,需要通过接口调用实现数据的传输互通。
Thrift是一种用于跨语言开发的软件框架。Thrift采用接口描述语言(interfacedescription language,IDL)编写接口描述文件,即IDL文件。之后通过使用Thrift提供的编译器,基于IDL文件生成不同目标语言对应的调用功能实现代码,实现跨语言接口调用。
目前,使用IDL文件进行服务接口的定义和调用时,服务提供方需要编写IDL文件,通过Thrift编译器生成Thrift协议实现所需的代码,并将该代码引入服务提供方对应的软件程序项目中,实现对外提供服务。服务调用方需要使用服务提供方提供的IDL文件,通过Thrift编译器生成Thrift协议实现所需的代码,并将该代码引入服务调用方对应的软件程序项目中,实现服务接口调用。服务提供方实现对外提供服务及服务调用方调用服务接口的步骤均较为繁琐。
发明内容
本申请实施例提供了一种用于实现接口调用的方法及装置。可以解决相关技术中服务提供方实现对外提供服务及服务调用方调用服务接口的步骤均较为繁琐的问题。所述技术方案如下:
第一方面,提供了一种用于实现接口调用的方法,用于服务提供方,所述服务提供方具有Thrift接口,所述Thrift接口用于提供服务,所述方法包括:
获取所述Thrift接口对应的目标注解类以及目标接口类,所述目标注解类中包括用于在所述服务提供方标识所述目标接口类的第一注解类、用于定义Thrift接口参数的第二注解类以及用于在服务调用方标识所述目标接口类的第三注解类;
向所述服务调用方发送所述目标注解类以及所述目标接口类,供所述服务调用方对采用所述第三注解类标识的所述目标接口类进行编译,使所述服务调用方能够调用所述Thrift接口提供的服务。
可选地,所述目标注解类还包括用于标识所述Thrift接口在所述服务提供方对应的第一实现类的第四注解类,所述方法还包括:
获取所述Thrift接口在所述服务提供方对应的第一实现类,所述第一实现类采用所述第四注解类标识;
获取目标插件,所述目标插件用于在所述服务提供方编译所述Thrift接口;
基于所述目标插件,根据所述目标接口类以及所述第一实现类,生成所述Thrift接口在所述服务提供方对应的第一功能类,所述第一功能类用于实现所述Thrift接口提供服务。
可选地,所述基于所述目标插件,根据所述目标接口类以及所述第一实现类,生成所述Thrift接口在服务提供方对应的第一功能类,包括:
通过所述目标插件,根据用于标识所述目标接口类的第一注解类和/或用于标识所述第一实现类的第四注解类,对所述Thrift接口进行编译,得到所述Thrift接口对应的第一功能类。
可选地,所述目标插件还用于在所述服务调用方编译所述Thrift接口,所述方法还包括:
向所述服务调用方发送所述目标插件,供所述服务调用方通过所述目标插件对所述Thrift接口进行编译。
可选地,所述向所述服务调用方发送所述目标注解类以及所述目标接口类,包括:
当所述服务调用方的编译语言与所述服务提供方的编译语言相同时,向所述服务调用方发送所述目标注解类以及所述目标接口类。
可选地,所述方法还包括:
当所述服务调用方的编译语言与所述服务提供方的编译语言不同时,根据所述目标注解类生成接口描述语言文件;
向所述服务调用方发送所述接口描述语言文件。
第二方面,提供了一种用于实现接口调用的方法,用于服务调用方,所述方法包括:
接收服务提供方发送的Thrift接口对应的目标注解类以及目标接口类,所述目标注解类中包括用于在所述服务提供方标识所述目标接口类的第一注解类、用于定义Thrift接口参数的第二注解类以及用于在服务调用方标识所述目标接口类的第三注解类,所述Thrift接口为所述服务提供方上的接口;
采用所述第三注解类标识所述目标接口类;
根据所述目标注解类以及所述目标接口类,对所述Thrift接口进行编译,使所述服务调用方能够调用所述Thrift接口提供的服务。
可选地,所述第三注解类中包括所述服务提供方的访问地址以及所述Thrift接口的端口号,所述根据所述目标注解类以及所述目标接口类,对所述Thrift接口进行编译,包括:
根据所述目标注解类以及所述目标接口类,生成所述Thrift接口在所述服务调用方对应的第二实现类以及第二功能类,所述第二功能类用于实现调用所述Thrift接口提供的服务。
可选地,所述方法还包括:
接收所述服务提供方发送的目标插件,所述目标插件用于在所述服务调用方编译所述Thrift接口;
所述根据所述目标注解类以及所述目标接口类,对所述Thrift接口进行编译,包括:
通过所述目标插件,根据用于标识所述目标接口类的第三注解类,对所述Thrift接口进行编译。
第三方面,提供了一种用于实现接口调用的装置,用于服务提供方,所述服务提供方具有Thrift接口,所述Thrift接口用于提供服务,所述装置包括:
第一获取模块,用于获取所述Thrift接口对应的目标注解类以及目标接口类,所述目标注解类中包括用于在所述服务提供方标识所述目标接口类的第一注解类、用于定义Thrift接口参数的第二注解类以及用于在服务调用方标识所述目标接口类的第三注解类;
发送模块,用于向所述服务调用方发送所述目标注解类以及所述目标接口类,供所述服务调用方对采用所述第三注解类标识的所述目标接口类进行编译,使所述服务调用方能够调用所述Thrift接口提供的服务。
可选地,所述目标注解类还包括用于标识所述Thrift接口在所述服务提供方对应的第一实现类的第四注解类,所述装置还包括:
第二获取模块,用于获取所述Thrift接口在所述服务提供方对应的第一实现类,所述第一实现类采用所述第四注解类标识;
第三获取模块,用于获取目标插件,所述目标插件用于在所述服务提供方编译所述Thrift接口;
第一生成模块,用于基于所述目标插件,根据所述目标接口类以及所述第一实现类,生成所述Thrift接口在所述服务提供方对应的第一功能类,所述第一功能类用于实现所述Thrift接口提供服务。
可选地,所述第一生成模块,用于:
通过所述目标插件,根据用于标识所述目标接口类的第一注解类和/或用于标识所述第一实现类的第四注解类,对所述Thrift接口进行编译,得到所述Thrift接口对应的第一功能类。
可选地,所述目标插件还用于在所述服务调用方编译所述Thrift接口,所述发送模块,还用于:
向所述服务调用方发送所述目标插件,供所述服务调用方通过所述目标插件对所述Thrift接口进行编译。
可选地,所述发送模块,用于:
当所述服务调用方的编译语言与所述服务提供方的编译语言相同时,向所述服务调用方发送所述目标注解类以及所述目标接口类。
可选地,所述装置还包括:
第二生成模块,用于当所述服务调用方的编译语言与所述服务提供方的编译语言不同时,根据所述目标注解类生成接口描述语言文件;
所述发送模块,用于向所述服务调用方发送所述接口描述语言文件。
第四方面,提供了一种用于实现接口调用的装置,用于服务调用方,所述装置包括:
接收模块,用于接收服务提供方发送的Thrift接口对应的目标注解类以及目标接口类,所述目标注解类中包括用于在所述服务提供方标识所述目标接口类的第一注解类、用于定义Thrift接口参数的第二注解类以及用于在服务调用方标识所述目标接口类的第三注解类,所述Thrift接口为所述服务提供方上的接口;
标识模块,用于采用所述第三注解类标识所述目标接口类;
编译模块,用于根据所述目标注解类以及所述目标接口类,对所述Thrift接口进行编译,使所述服务调用方能够调用所述Thrift接口提供的服务。
可选地,所述第三注解类中包括所述服务提供方的访问地址以及所述Thrift接口的端口号,所述编译模块,用于:
根据所述目标注解类以及所述目标接口类,生成所述Thrift接口在所述服务调用方对应的第二实现类以及第二功能类,所述第二功能类用于实现调用所述Thrift接口提供的服务。
可选地,所述接收模块,还用于接收所述服务提供方发送的目标插件,所述目标插件用于在所述服务调用方编译所述Thrift接口;
所述编译模块,用于通过所述目标插件,根据用于标识所述目标接口类的第三注解类,对所述Thrift接口进行编译。
第五方面,提供了一种用于实现接口调用的装置,用于服务提供方,所述装置包括:Thrift接口、处理器和存储器;
所述Thrift接口,用于提供服务;
所述存储器,用于存储计算机程序,所述计算机程序包括程序指令;
所述处理器,用于调用所述计算机程序,实现如第一方面任一所述的用于实现接口调用的方法。
第六方面,提供了一种用于实现接口调用的装置,用于服务调用方,所述装置包括:处理器和存储器;
所述存储器,用于存储计算机程序,所述计算机程序包括程序指令;
所述处理器,用于调用所述计算机程序,实现如第二方面任一所述的用于实现接口调用的方法。
第七方面,提供了一种用于实现接口调用的***,所述***包括:服务提供方和服务调用方,所述服务提供方包括如第三方面任一所述的用于实现接口调用的装置或如第五方面所述的用于实现接口调用的装置;所述服务调用方包括如第四方面任一所述的用于实现接口调用的装置或如第六方面所述的用于实现接口调用的装置。
第八方面,提供了一种计算机存储介质,所述计算机存储介质上存储有指令,当所述指令被计算机设备的处理器执行时,实现如第一方面或第二方面任一所述的用于实现接口调用的方法。
本申请实施例提供的技术方案带来的有益效果包括:
服务提供方将Thrift接口对应的目标注解类以及目标接口类发送至服务调用方,服务调用方根据接收到的目标注解类以及目标接口类,对采用第三注解类标识的目标接口类进行编译。使服务调用方能够调用Thrift接口提供的服务,从而实现了接口调用。本申请实施例中,无需在服务提供方编写IDL文件,通过Thrift编译器生成Thrift协议实现所需的代码,并将该代码引入服务提供方对应的软件程序项目中,而仅需定义目标接口类和目标注解类,即可实现对外提供服务,因此简化了服务提供方实现对外提供服务的步骤。另外,服务调用方无需使用IDL文件,通过Thrift编译器生成Thrift协议实现所需的代码,并将该代码引入服务调用方对应的软件程序项目中,实现服务接口调用,而仅需采用服务提供方提供的目标接口类和目标注解类,即可实现对采用第三注解类标识的目标接口类的编译,因此简化了服务调用方调用服务接口的步骤。
另外,服务提供方在对外提供服务时,只需获取Thrift接口对应的目标注解类以及目标接口类,并将其一起打包成一个Jar包,提高了服务提供方软件程序项目的集成程度,便于服务提供方的维护。另外,服务调用方在调用服务提供方的提供的服务时,只需获取服务提供方提供的接口文件,并对Thrift接口进行编译,提高了服务调用方软件程序项目的集成程度,便于服务调用方的维护。
附图说明
图1是本申请实施例提供的一种用于实现接口调用的***的结构示意图;
图2是本申请实施例提供的一种用于实现接口调用的方法的流程示意图;
图3是本申请实施例提供的另一种用于实现接口调用方法的流程示意图;
图4是本申请实施例提供的又一种用于实现接口调用方法的流程示意图;
图5是本申请实施例提供的一种用于实现接口调用的装置的结构示意图;
图6是本申请实施例提供的另一种用于实现接口调用的装置的结构示意图;
图7是本申请实施例提供的又一种用于实现接口调用的装置的结构示意图;
图8是本申请另一实施例提供的一种用于实现接口调用的装置的结构示意图;
图9是本申请实施例提供的一种用于实现接口调用的装置的框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
图1是本申请实施例提供的一种用于实现接口调用的***的结构示意图。如图1所示,该***中包括服务提供方101和服务调用方102。其中,服务提供方101具有Thrift接口,该Thrift接口用于提供服务。服务提供方101与服务调用方102之间通过无线网络或有线网络建立有通信连接。
可选地,服务提供方101可以是一台服务器,或者由若干台服务器组成的服务器集群,或者是一个云计算服务中心等。服务调用方102可以是一台服务器,或者由若干台服务器组成的服务器集群,或者是一个云计算服务中心等。当然,服务提供方101和服务调用方102还可以是计算机等终端设备,本申请实施例对此不做限定。
服务提供方用于通过无线网络或有线网络远程提供应用功能的服务。服务调用方可远程调用服务提供方提供的应用功能的服务。
图2是本申请实施例提供的一种用于实现接口调用的方法的流程示意图。该方法可以用于如图1所示的***中的服务提供方101。如图2所示,该方法包括:
步骤201、获取Thrift接口对应的目标注解类以及目标接口类,目标注解类中包括用于在服务提供方标识目标接口类的第一注解类、用于定义Thrift接口参数的第二注解类以及用于在服务调用方标识目标接口类的第三注解类。
步骤202、向服务调用方发送目标注解类以及目标接口类,供服务调用方对采用第三注解类标识的目标接口类进行编译,使服务调用方能够调用Thrift接口提供的服务。
综上所述,本申请实施例提供的用于实现接口调用的方法,服务提供方在获取Thrift接口对应的目标注解类以及目标接口类后,将目标注解类以及目标接口类发送至服务调用方,服务调用方根据接收到的目标注解类以及目标接口类,对采用第三注解类标识的目标接口类进行编译,使服务调用方能够调用Thrift接口提供的服务,从而实现了接口调用。本申请实施例中,无需在服务提供方编写IDL文件,通过Thrift编译器生成Thrift协议实现所需的代码,并将该代码引入服务提供方对应的软件程序项目中,而仅需定义目标接口类和目标注解类,即可实现对外提供服务,因此简化了服务提供方实现对外提供服务的步骤。另外,服务调用方无需使用IDL文件,通过Thrift编译器生成Thrift协议实现所需的代码,并将该代码引入服务调用方对应的软件程序项目中,实现服务接口调用,而仅需采用服务提供方提供的目标接口类和目标注解类,即可实现对采用第三注解类标识的目标接口类的编译,因此简化了服务调用方调用服务接口的步骤。
图3是本申请实施例提供的另一种用于实现接口调用方法的流程示意图。该方法可以用于如图1所示的***中的服务调用方102。如图3所示,该方法包括:
步骤301、接收服务提供方发送的Thrift接口对应的目标注解类以及目标接口类,目标注解类中包括用于在服务提供方标识目标接口类的第一注解类、用于定义Thrift接口参数的第二注解类以及用于在服务调用方标识目标接口类的第三注解类,Thrift接口为服务提供方上的接口。
步骤302、采用第三注解类标识目标接口类。
步骤303、根据目标注解类以及目标接口类,对Thrift接口进行编译,使服务调用方能够调用Thrift接口提供的服务。
综上所述,本申请实施例提供的用于实现接口调用的方法,服务提供方将Thrift接口对应的目标注解类以及目标接口类发送至服务调用方,服务调用方根据接收到的目标注解类以及目标接口类,对采用第三注解类标识的目标接口类进行编译。使服务调用方能够调用Thrift接口提供的服务,从而实现了接口调用。本申请实施例中,无需在服务提供方编写IDL文件,通过Thrift编译器生成Thrift协议实现所需的代码,并将该代码引入服务提供方对应的软件程序项目中,而仅需定义目标接口类和目标注解类,即可实现对外提供服务,因此简化了服务提供方实现对外提供服务的步骤。另外,服务调用方无需使用IDL文件,通过Thrift编译器生成Thrift协议实现所需的代码,并将该代码引入服务调用方对应的软件程序项目中,实现服务接口调用,而仅需采用服务提供方提供的目标接口类和目标注解类,即可实现对采用第三注解类标识的目标接口类的编译,因此简化了服务调用方调用服务接口的步骤。
图4是本申请实施例提供的又一种用于实现接口调用方法的流程示意图。该方法可以用于如图1所示的***。如图4所示,该方法包括:
步骤401、服务提供方获取Thrift接口对应的目标注解类以及目标接口类。
该目标注解类中包括用于在服务提供方标识目标接口类的第一注解类、用于定义Thrift接口参数的第二注解类以及用于在服务调用方标识目标接口类的第三注解类。
本申请实施例中的第一注解类可被称为Thrift注解类,服务提供方使用Thrift注解类标识目标接口类。第二注解类可被称为ThriftData注解类。第三注解类可被称为ThriftClient注解类,服务调用方使用ThriftClient注解类标识目标接口类。
示例地,Thrift接口对应的目标注解类以及目标接口类可以分别用以下代码定义:
定义Thrift注解类的代码为:
public@interface Thrift{
}
定义ThriftData注解类的代码为:
Figure BDA0002349215240000091
定义ThriftClient注解类的代码为:
Figure BDA0002349215240000092
可选地,在ThriftClient注解类中的服务提供方的访问地址可以是服务提供方的设备互联网协议(internet protocol,IP)地址或域名。
示例地,Thrift接口的名称为DemoService接口。定义Thrift接口对应的目标接口类的代码为:
Figure BDA0002349215240000101
步骤402、服务提供方获取Thrift接口对应的第四注解类以及第一实现类。
Thrift接口对应的目标注解类,还包括用于标识Thrift接口在服务提供方对应的第一实现类的第四注解类。示例地,Thrift接口对应的第四注解类可被称为ThriftServer注解类,使用ThriftServer注解类标识的第一实现类用于实现对外提供服务。Thrift接口对应的第四注解类可以用以下代码定义:
Figure BDA0002349215240000102
服务提供方获取Thrift接口在服务提供方对应的第一实现类,该第一实现类采用第四注解类标识。示例地,Thrift接口在服务提供方对应的第一实现类的名称为DemoServiceImpl。则Thrift接口在服务提供方对应的第一实现的代码为:
Figure BDA0002349215240000103
步骤403、服务提供方获取目标插件。
该目标插件用于在服务提供方编译Thrift接口。可选地,目标插件可以是自定义的Gradle插件或Maven插件。
可选地,目标插件还可以用于在服务调用方编译Thrift接口。
可选地,目标插件还可以用于根据Thrift接口对应的目标注解类生成IDL文件。
步骤404、服务提供方基于目标插件,根据Thrift接口对应的目标接口类以及Thrift接口对应的第一实现类,生成Thrift接口在服务提供方对应的第一功能类。
其中,Thrift接口在服务提供方对应的第一功能类用于实现Thrift接口提供服务。可选地,步骤404的实现过程包括:服务提供方通过目标插件,根据用于标识目标接口类的第一注解类和/或用于标识Thrift接口对应的第一实现类的第四注解类,对Thrift接口进行编译,得到Thrift接口在服务提供方对应的第一功能类。
示例地,编译过程可由全自动化脚本实现。在全自动化脚本的编译过程中,全自动化脚本会调用目标插件,以检测使用Thrift注解类标识的Thrift接口和使用ThriftServer注解类标识的第一实现类,此时会通过字节码增强和调用Thrift编译器结合的方式来生成Thrift接口在服务提供方对应的第一功能类。
步骤405、服务提供方向服务调用方发送接口文件。
可选地,接口文件至少包括目标注解类中的第一注解类、第二注解类以及第三注解类。
可选地,服务提供方向服务调用方发送Thrift接口对应的目标注解类和Thrift接口对应的目标接口类,供服务调用方对Thrift接口进行编译。示例地,服务提供方可以将Thrift接口对应的目标注解类及目标接口类一起打包成一个Jar包向服务调用方发送。
可选地,当目标插件可以用于服务调用方编译Thrift接口时,服务提供方还可以向服务调用方发送该目标插件。此时接口文件包括Thrift接口对应的目标注解类、目标接口类以及该目标插件。
在本申请的一个可选实施例中,当服务调用方的编译语言与服务提供方的编译语言相同时,服务提供方向服务调用方发送Thrift接口对应的目标注解类和目标接口类。
在本申请的另一个可选实施例中,当服务提供方的编程语言与服务调用方的编程语言不同时,服务提供方可以根据Thrift接口对应的目标注解类生成IDL文件,并向服务调用方发送该IDL文件。可选地,当目标插件可以用于根据目标注解类生成IDL文件时,服务提供方可以采用目标插件根据Thrift接口对应的目标注解类生成IDL文件。
或者,当服务提供方的编程语言与服务调用方的编程语言不同时,服务提供方还可以向服务调用方发送Thrift接口对应的目标注解类和目标插件,供服务调用方采用目标插件根据Thrift接口对应的目标注解类生成IDL文件。
步骤406、服务调用方根据接口文件对Thrift接口进行编译。
在本申请的一个可选实施例中,当服务提供方的编程语言与服务调用方的编程语言不同时,服务调用方通过Thrift接口对应的目标注解类及目标插件生成IDL文件,在编译时引入该IDL文件实现Thrift服务。或者,服务调用方可以直接在编译时引入服务提供方发送的IDL文件实现Thrift服务。上述实现过程可参考相关技术,本申请实施例在此不再赘述。
在本申请的另一个可选实施例中,当服务提供方的编程语言与服务调用方的编程语言相同时,服务调用方先采用第三注解类标识接收到的目标接口类,第三注解类中包括服务提供方的访问地址以及Thrift接口的端口号。然后根据Thrift接口对应的目标注解类以及目标接口类对Thrift接口进行编译,使服务调用方能够调用Thrift接口提供的服务。
可选地,服务调用方对Thrift接口进行编译的过程包括:
服务调用方根据接收到的服务提供方发送的Thrift接口对应的目标注解类以及目标接口类,生成Thrift接口在服务调用方对应的第二实现类以及第二功能类,该第二功能类用于实现调用Thrift接口提供的服务。
可选地,在全自动化脚本的编译过程中,全自动化脚本会调用目标插件,以检测使用Thrift注解类标识的目标接口类以及使用ThriftClient注解类标识的目标接口类,此时会通过动态代理机制以及调用Thrift编译器结合的方式生成Thrift接口在服务调用方对应的第二实现类以及第二功能类。
步骤407、服务调用方调用Thrift接口提供的服务。
示例地,服务调用方可使用以下代码,实现调用Thrift接口提供的服务:
Figure BDA0002349215240000121
Figure BDA0002349215240000131
本申请实施例中相关内容及示例主要基于使用Java语言作为服务提供方及服务调用方的开发语言,任何可以实现本申请方法的开发语言都应被包含在本申请的保护范围之内,本申请在此不再赘述。
需要说明的是,本申请实施例提供的用于实现接口调用的方法步骤的先后顺序可以进行适当调整,步骤也可以根据情况进行相应增减,例如,在步骤404之前,服务提供方可以先将接口文件发送至服务调用方,即服务提供方先执行步骤405后再执行步骤404。任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化的方法,都应涵盖在本申请的保护范围之内,因此不再赘述。
综上所述,本申请实施例提供的用于实现接口调用的方法,服务提供方将Thrift接口对应的目标注解类以及目标接口类发送至服务调用方,服务调用方根据接收到的目标注解类以及目标接口类,对采用第三注解类标识的目标接口类进行编译。使服务调用方能够调用Thrift接口提供的服务,从而实现了接口调用。本申请实施例中,无需在服务提供方编写IDL文件,通过Thrift编译器生成Thrift协议实现所需的代码,并将该代码引入服务提供方对应的软件程序项目中,而仅需定义目标接口类和目标注解类,即可实现对外提供服务,因此简化了服务提供方实现对外提供服务的步骤。另外,服务调用方无需使用IDL文件,通过Thrift编译器生成Thrift协议实现所需的代码,并将该代码引入服务调用方对应的软件程序项目中,实现服务接口调用,而仅需采用服务提供方提供的目标接口类和目标注解类,即可实现对采用第三注解类标识的目标接口类的编译,因此简化了服务调用方调用服务接口的步骤。
另外,服务提供方在对外提供服务时,只需获取Thrift接口对应的目标注解类以及目标接口类,并将其一起打包成一个Jar包,提高了服务提供方软件程序项目的集成程度,便于服务提供方的维护。另外,服务调用方在调用服务提供方的提供的服务时,只需获取服务提供方提供的接口文件,并对Thrift接口进行编译,提高了服务调用方软件程序项目的集成程度,便于服务调用方的维护。
图5是本申请实施例提供的一种用于实现接口调用的装置的结构示意图。该装置用于服务提供方,服务提供方具有Thrift接口,Thrift接口用于提供服务。
如图5所示,装置50包括:
第一获取模块501,用于获取Thrift接口对应的目标注解类以及目标接口类,目标注解类中包括用于在服务提供方标识目标接口类的第一注解类、用于定义Thrift接口参数的第二注解类以及用于在服务调用方标识目标接口类的第三注解类。
发送模块502,用于向服务调用方发送目标注解类以及目标接口类,供服务调用方对采用第三注解类标识的目标接口类进行编译,使服务调用方能够调用Thrift接口提供的服务。
综上所述,本申请实施例提供的用于实现接口调用的装置,服务提供方在通过第一获取模块获取Thrift接口对应的目标注解类以及目标接口类后,通过发送模块将目标注解类以及目标接口类发送至服务调用方,服务调用方根据接收到的目标注解类以及目标接口类,对采用第三注解类标识的目标接口类进行编译,使服务调用方能够调用Thrift接口提供的服务,从而实现了接口调用。本申请实施例中,无需在服务提供方编写IDL文件,通过Thrift编译器生成Thrift协议实现所需的代码,并将该代码引入服务提供方对应的软件程序项目中,而仅需定义目标接口类和目标注解类,即可实现对外提供服务,因此简化了服务提供方实现对外提供服务的步骤。另外,服务调用方无需使用IDL文件,通过Thrift编译器生成Thrift协议实现所需的代码,并将该代码引入服务调用方对应的软件程序项目中,实现服务接口调用,而仅需采用服务提供方提供的目标接口类和目标注解类,即可实现对采用第三注解类标识的目标接口类的编译,因此简化了服务调用方调用服务接口的步骤。
可选地,目标注解类还包括用于标识Thrift接口在服务提供方对应的第一实现类的第四注解类。如图6所示,装置50还包括:
第二获取模块503,用于获取Thrift接口在服务提供方对应的第一实现类,第一实现类采用第四注解类标识;
第三获取模块504,用于获取目标插件,目标插件用于在服务提供方编译Thrift接口;
第一生成模块505,用于基于目标插件,根据目标接口类以及第一实现类,生成Thrift接口在服务提供方对应的第一功能类,第一功能类用于实现Thrift接口提供服务。
可选地,第一生成模块505,用于:通过目标插件,根据用于标识目标接口类的第一注解类和/或用于标识第一实现类的第四注解类,对Thrift接口进行编译,得到Thrift接口对应的第一功能类。
可选地,目标插件还用于在服务调用方编译Thrift接口。发送模块502,还用于:向服务调用方发送目标插件,供服务调用方通过目标插件对Thrift接口进行编译。
可选地,发送模块502,用于:当服务调用方的编译语言与服务提供方的编译语言相同时,向服务调用方发送目标注解类以及目标接口类。
可选地,如图7所示,装置50还包括:
第二生成模块506,用于当服务调用方的编译语言与服务提供方的编译语言不同时,根据目标注解类生成接口描述语言文件;
发送模块502,用于向服务调用方发送接口描述语言文件。
综上所述,本申请实施例提供的用于实现接口调用的装置,服务提供方在通过第一获取模块获取Thrift接口对应的目标注解类以及目标接口类后,通过发送模块将目标注解类以及目标接口类发送至服务调用方,服务调用方根据接收到的目标注解类以及目标接口类,对采用第三注解类标识的目标接口类进行编译,使服务调用方能够调用Thrift接口提供的服务,从而实现了接口调用。本申请实施例中,无需在服务提供方编写IDL文件,通过Thrift编译器生成Thrift协议实现所需的代码,并将该代码引入服务提供方对应的软件程序项目中,而仅需定义目标接口类和目标注解类,即可实现对外提供服务,因此简化了服务提供方实现对外提供服务的步骤。另外,服务调用方无需使用IDL文件,通过Thrift编译器生成Thrift协议实现所需的代码,并将该代码引入服务调用方对应的软件程序项目中,实现服务接口调用,而仅需采用服务提供方提供的目标接口类和目标注解类,即可实现对采用第三注解类标识的目标接口类的编译,因此简化了服务调用方调用服务接口的步骤。
另外,服务提供方在对外提供服务时,只需获取Thrift接口对应的目标注解类以及目标接口类,并将其一起打包成一个Jar包,提高了服务提供方软件程序项目的集成程度,便于服务提供方的维护。
图8是本申请另一实施例提供的一种用于实现接口调用的装置的结构示意图。该装置用于服务调用方。如图8所示,装置80包括:
接收模块801,用于接收服务提供方发送的Thrift接口对应的目标注解类以及目标接口类,目标注解类中包括用于在服务提供方标识目标接口类的第一注解类、用于定义Thrift接口参数的第二注解类以及用于在服务调用方标识目标接口类的第三注解类,Thrift接口为服务提供方上的接口。
标识模块802,用于采用第三注解类标识目标接口类。
编译模块803,用于根据目标注解类以及目标接口类,对Thrift接口进行编译,使服务调用方能够调用Thrift接口提供的服务。
综上所述,本申请实施例提供的用于实现接口调用的装置,服务提供方将Thrift接口对应的目标注解类以及目标接口类发送至服务调用方,服务调用方根据通过接收模块接收到的目标注解类以及目标接口类,通过编译模块对采用第三注解类标识的目标接口类进行编译。使服务调用方能够调用Thrift接口提供的服务,从而实现了接口调用。本申请实施例中,无需在服务提供方编写IDL文件,通过Thrift编译器生成Thrift协议实现所需的代码,并将该代码引入服务提供方对应的软件程序项目中,而仅需定义目标接口类和目标注解类,即可实现对外提供服务,因此简化了服务提供方实现对外提供服务的步骤。另外,服务调用方无需使用IDL文件,通过Thrift编译器生成Thrift协议实现所需的代码,并将该代码引入服务调用方对应的软件程序项目中,实现服务接口调用,而仅需采用服务提供方提供的目标接口类和目标注解类,即可实现对采用第三注解类标识的目标接口类的编译,因此简化了服务调用方调用服务接口的步骤。
可选地,第三注解类中包括服务提供方的访问地址以及Thrift接口的端口号。编译模块803,用于:根据目标注解类以及目标接口类,生成Thrift接口在服务调用方对应的第二实现类以及第二功能类,第二功能类用于实现调用Thrift接口提供的服务。
可选地,接收模块801,还用于接收服务提供方发送的目标插件,目标插件用于在服务调用方编译Thrift接口;编译模块803,用于通过目标插件,根据用于标识目标接口类的第三注解类,对Thrift接口进行编译。
综上所述,本申请实施例提供的用于实现接口调用的装置,服务提供方将Thrift接口对应的目标注解类以及目标接口类发送至服务调用方,服务调用方根据通过接收模块接收到的目标注解类以及目标接口类,通过编译模块对采用第三注解类标识的目标接口类进行编译。使服务调用方能够调用Thrift接口提供的服务,从而实现了接口调用。本申请实施例中,无需在服务提供方编写IDL文件,通过Thrift编译器生成Thrift协议实现所需的代码,并将该代码引入服务提供方对应的软件程序项目中,而仅需定义目标接口类和目标注解类,即可实现对外提供服务,因此简化了服务提供方实现对外提供服务的步骤。另外,服务调用方无需使用IDL文件,通过Thrift编译器生成Thrift协议实现所需的代码,并将该代码引入服务调用方对应的软件程序项目中,实现服务接口调用,而仅需采用服务提供方提供的目标接口类和目标注解类,即可实现对采用第三注解类标识的目标接口类的编译,因此简化了服务调用方调用服务接口的步骤。
另外,服务调用方在调用服务提供方的提供的服务时,只需获取服务提供方提供的接口文件,并对Thrift接口进行编译,提高了服务调用方软件程序项目的集成程度,便于服务调用方的维护。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本申请实施例还提供了一种用于实现接口调用的装置。用于服务提供方,该装置包括:Thrift接口、处理器和存储器;
所述Thrift接口,用于提供服务;
所述存储器,用于存储计算机程序,所述计算机程序包括程序指令;
所述处理器,用于调用所述计算机程序,实现如图2或图4所示的用于实现接口调用的方法中服务提供方执行的步骤。
本申请实施例还提供了一种用于实现接口调用的装置。用于服务调用方,所述装置包括:处理器和存储器;
所述存储器,用于存储计算机程序,所述计算机程序包括程序指令;
所述处理器,用于调用所述计算机程序,实现如图3或图4所示的用于实现接口调用的方法中服务调用方执行的步骤。
示例地,图9是本申请实施例提供的一种用于实现接口调用的装置的框图。该装置可以是服务提供方或服务调用方。如图9所示,装置90包括:处理器901和存储器902。
存储器902,用于存储计算机程序,所述计算机程序包括程序指令;
处理器901,用于调用所述计算机程序,实现上述方法实施例中服务提供方或服务调用方执行的步骤。
可选地,该装置90还包括通信总线903和通信接口904。
其中,处理器901包括一个或者一个以上处理核心,处理器901通过运行计算机程序,执行各种功能应用以及数据处理。
存储器902可用于存储计算机程序。可选地,存储器可存储操作***和至少一个功能所需的应用程序单元。操作***可以是实时操作***(Real Time eXecutive,RTX)、LINUX、UNIX、WINDOWS或OS X之类的操作***。
通信接口904可以为多个,通信接口904用于与其它设备进行通信。在本申请实施例中,服务提供方的通信接口包括Thrift接口。
存储器902与通信接口904分别通过通信总线903与处理器901连接。
本申请实施例还提供了一种用于实现接口调用的***,该***包括:服务提供方和服务调用方,服务提供方包括如图5至图7任一所示的用于实现接口调用的装置或如图9所示的用于实现接口调用的装置;服务调用方包括如图8所示的用于实现接口调用的装置或如图9所示的用于实现接口调用的装置。
本申请实施例还提供了一种计算机存储介质,所述计算机存储介质上存储有指令,当所述指令被计算机设备的处理器执行时,实现如上述方法实施例中的用于实现接口调用的方法。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的构思和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (13)

1.一种用于实现接口调用的方法,其特征在于,用于服务提供方,所述服务提供方具有Thrift接口,所述Thrift接口用于提供服务,所述方法包括:
获取所述Thrift接口对应的目标注解类以及目标接口类,所述目标注解类中包括用于在所述服务提供方标识所述目标接口类的第一注解类、用于定义Thrift接口参数的第二注解类以及用于在服务调用方标识所述目标接口类的第三注解类;
向所述服务调用方发送所述目标注解类以及所述目标接口类,供所述服务调用方对采用所述第三注解类标识的所述目标接口类进行编译,使所述服务调用方能够调用所述Thrift接口提供的服务。
2.根据权利要求1所述的方法,其特征在于,所述目标注解类还包括用于标识所述Thrift接口在所述服务提供方对应的第一实现类的第四注解类,所述方法还包括:
获取所述Thrift接口在所述服务提供方对应的第一实现类,所述第一实现类采用所述第四注解类标识;
获取目标插件,所述目标插件用于在所述服务提供方编译所述Thrift接口;
基于所述目标插件,根据所述目标接口类以及所述第一实现类,生成所述Thrift接口在所述服务提供方对应的第一功能类,所述第一功能类用于实现所述Thrift接口提供服务。
3.根据权利要求2所述的方法,其特征在于,所述基于所述目标插件,根据所述目标接口类以及所述第一实现类,生成所述Thrift接口在服务提供方对应的第一功能类,包括:
通过所述目标插件,根据用于标识所述目标接口类的第一注解类和/或用于标识所述第一实现类的第四注解类,对所述Thrift接口进行编译,得到所述Thrift接口对应的第一功能类。
4.根据权利要求2或3所述的方法,其特征在于,所述目标插件还用于在所述服务调用方编译所述Thrift接口,所述方法还包括:
向所述服务调用方发送所述目标插件,供所述服务调用方通过所述目标插件对所述Thrift接口进行编译。
5.根据权利要求1至4任一所述的方法,其特征在于,所述向所述服务调用方发送所述目标注解类以及所述目标接口类,包括:
当所述服务调用方的编译语言与所述服务提供方的编译语言相同时,向所述服务调用方发送所述目标注解类以及所述目标接口类。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
当所述服务调用方的编译语言与所述服务提供方的编译语言不同时,根据所述目标注解类生成接口描述语言文件;
向所述服务调用方发送所述接口描述语言文件。
7.一种用于实现接口调用的方法,其特征在于,用于服务调用方,所述方法包括:
接收服务提供方发送的Thrift接口对应的目标注解类以及目标接口类,所述目标注解类中包括用于在所述服务提供方标识所述目标接口类的第一注解类、用于定义Thrift接口参数的第二注解类以及用于在服务调用方标识所述目标接口类的第三注解类,所述Thrift接口为所述服务提供方上的接口;
采用所述第三注解类标识所述目标接口类;
根据所述目标注解类以及所述目标接口类,对所述Thrift接口进行编译,使所述服务调用方能够调用所述Thrift接口提供的服务。
8.根据权利要求7所述的方法,其特征在于,所述第三注解类中包括所述服务提供方的访问地址以及所述Thrift接口的端口号,所述根据所述目标注解类以及所述目标接口类,对所述Thrift接口进行编译,包括:
根据所述目标注解类以及所述目标接口类,生成所述Thrift接口在所述服务调用方对应的第二实现类以及第二功能类,所述第二功能类用于实现调用所述Thrift接口提供的服务。
9.根据权利要求7或8所述的方法,其特征在于,所述方法还包括:
接收所述服务提供方发送的目标插件,所述目标插件用于在所述服务调用方编译所述Thrift接口;
所述根据所述目标注解类以及所述目标接口类,对所述Thrift接口进行编译,包括:
通过所述目标插件,根据用于标识所述目标接口类的第三注解类,对所述Thrift接口进行编译。
10.一种用于实现接口调用的装置,其特征在于,用于服务提供方,所述服务提供方具有Thrift接口,所述Thrift接口用于提供服务,所述装置包括:
第一获取模块,用于获取所述Thrift接口对应的目标注解类以及目标接口类,所述目标注解类中包括用于在所述服务提供方标识所述目标接口类的第一注解类、用于定义Thrift接口参数的第二注解类以及用于在服务调用方标识所述目标接口类的第三注解类;
发送模块,用于向所述服务调用方发送所述目标注解类以及所述目标接口类,供所述服务调用方对采用所述第三注解类标识的所述目标接口类进行编译,使所述服务调用方能够调用所述Thrift接口提供的服务。
11.根据权利要求10所述的装置,其特征在于,所述目标注解类还包括用于标识所述Thrift接口在所述服务提供方对应的第一实现类的第四注解类,所述装置还包括:
第二获取模块,用于获取所述Thrift接口在所述服务提供方对应的第一实现类,所述第一实现类采用所述第四注解类标识;
第三获取模块,用于获取目标插件,所述目标插件用于在所述服务提供方编译所述Thrift接口;
第一生成模块,用于基于所述目标插件,根据所述目标接口类以及所述第一实现类,生成所述Thrift接口在所述服务提供方对应的第一功能类,所述第一功能类用于实现所述Thrift接口提供服务。
12.一种用于实现接口调用的装置,其特征在于,用于服务调用方,所述装置包括:
接收模块,用于接收服务提供方发送的Thrift接口对应的目标注解类以及目标接口类,所述目标注解类中包括用于在所述服务提供方标识所述目标接口类的第一注解类、用于定义Thrift接口参数的第二注解类以及用于在服务调用方标识所述目标接口类的第三注解类,所述Thrift接口为所述服务提供方上的接口;
标识模块,用于采用所述第三注解类标识所述目标接口类;
编译模块,用于根据所述目标注解类以及所述目标接口类,对所述Thrift接口进行编译,使所述服务调用方能够调用所述Thrift接口提供的服务。
13.根据权利要求12所述的装置,其特征在于,所述第三注解类中包括所述服务提供方的访问地址以及所述Thrift接口的端口号,所述编译模块,用于:
根据所述目标注解类以及所述目标接口类,生成所述Thrift接口在所述服务调用方对应的第二实现类以及第二功能类,所述第二功能类用于实现调用所述Thrift接口提供的服务。
CN201911408074.8A 2019-12-31 2019-12-31 用于实现接口调用的方法及装置 Active CN111142860B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911408074.8A CN111142860B (zh) 2019-12-31 2019-12-31 用于实现接口调用的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911408074.8A CN111142860B (zh) 2019-12-31 2019-12-31 用于实现接口调用的方法及装置

Publications (2)

Publication Number Publication Date
CN111142860A CN111142860A (zh) 2020-05-12
CN111142860B true CN111142860B (zh) 2023-05-23

Family

ID=70522434

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911408074.8A Active CN111142860B (zh) 2019-12-31 2019-12-31 用于实现接口调用的方法及装置

Country Status (1)

Country Link
CN (1) CN111142860B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104009994A (zh) * 2014-05-30 2014-08-27 北京京东尚科信息技术有限公司 实现服务端与客户端通讯的方法和装置
CN107301098A (zh) * 2017-06-15 2017-10-27 搜易贷(北京)金融信息服务有限公司 一种基于Thrift协议的远程过程调用装置、方法及***
CN109710428A (zh) * 2018-12-27 2019-05-03 杭州数梦工场科技有限公司 一种实现类的动态调用方法及装置
CN109729149A (zh) * 2018-12-03 2019-05-07 国云科技股份有限公司 一种基于注解的微服务框架实现方法
CN110300082A (zh) * 2018-03-21 2019-10-01 腾讯科技(深圳)有限公司 一种接口生成方法、装置及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9280665B2 (en) * 2013-09-13 2016-03-08 Airwatch Llc Fast and accurate identification of message-based API calls in application binaries

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104009994A (zh) * 2014-05-30 2014-08-27 北京京东尚科信息技术有限公司 实现服务端与客户端通讯的方法和装置
CN107301098A (zh) * 2017-06-15 2017-10-27 搜易贷(北京)金融信息服务有限公司 一种基于Thrift协议的远程过程调用装置、方法及***
CN110300082A (zh) * 2018-03-21 2019-10-01 腾讯科技(深圳)有限公司 一种接口生成方法、装置及存储介质
CN109729149A (zh) * 2018-12-03 2019-05-07 国云科技股份有限公司 一种基于注解的微服务框架实现方法
CN109710428A (zh) * 2018-12-27 2019-05-03 杭州数梦工场科技有限公司 一种实现类的动态调用方法及装置

Also Published As

Publication number Publication date
CN111142860A (zh) 2020-05-12

Similar Documents

Publication Publication Date Title
CN111176626B (zh) 跨编程语言的代码调用方法及装置、介质、设备
CN108255545B (zh) 组件间的功能调用方法、装置及组件化架构***
CN108881111B (zh) 一种实现多租户***的方法及装置
CN110187902B (zh) 基于spring boot的项目改造方法、装置、设备及存储介质
CN107635027B (zh) 一种域名解析方法、介质、装置和计算设备
CN112114979A (zh) 远程过程调用方法和装置
CN106201862A (zh) web服务压力测试方法及装置
CN111506366B (zh) 插件调用方法、装置、电子设备与存储介质
AU2015369925A1 (en) Computer readable storage media for dynamic service deployment and methods and systems for utilizing same
CN112688915A (zh) 跨协议通信方法、装置及服务器
CN109039730B (zh) 服务器集群及服务器集群配置信息管理方法
CN111026439A (zh) 应用程序的兼容方法、装置、设备及计算机存储介质
CN110457013B (zh) 程序组件配置装置及方法
CN109388388B (zh) 功能模块间的信息交互方法、装置、设备及存储介质
CN111416816A (zh) 联调接口的访问方法、装置、计算机设备和存储介质
CN106550026B (zh) 一种网络通信装置及方法
CN107105004B (zh) 跨平台的服务调用方法及装置
CN111142860B (zh) 用于实现接口调用的方法及装置
WO2021093671A1 (zh) 任务处理方法、***、装置、设备及计算机可读存储介质
WO2023125755A1 (zh) 基于大规模集群的服务请求处理方法、装置、设备及介质
CN110022332B (zh) 一种超文本传输安全协议代理方法、装置、设备及介质
WO2023083071A1 (zh) 视图交互方法、装置、电子设备及计算机可读介质
US9537931B2 (en) Dynamic object oriented remote instantiation
CN115061678A (zh) 一种基于浏览器代理服务的代码编译方法及客户端
CN105260179A (zh) 一种实现flex与servlet交互的方法

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
GR01 Patent grant
GR01 Patent grant