CN110245030B - 一种数据服务提供方法、装置、介质和电子设备 - Google Patents

一种数据服务提供方法、装置、介质和电子设备 Download PDF

Info

Publication number
CN110245030B
CN110245030B CN201910454345.7A CN201910454345A CN110245030B CN 110245030 B CN110245030 B CN 110245030B CN 201910454345 A CN201910454345 A CN 201910454345A CN 110245030 B CN110245030 B CN 110245030B
Authority
CN
China
Prior art keywords
information
service
class
interface
interface information
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
CN201910454345.7A
Other languages
English (en)
Other versions
CN110245030A (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.)
Douyin Vision Co Ltd
Douyin Vision Beijing Co Ltd
Original Assignee
Beijing ByteDance Network 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 Beijing ByteDance Network Technology Co Ltd filed Critical Beijing ByteDance Network Technology Co Ltd
Priority to CN201910454345.7A priority Critical patent/CN110245030B/zh
Publication of CN110245030A publication Critical patent/CN110245030A/zh
Application granted granted Critical
Publication of CN110245030B publication Critical patent/CN110245030B/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/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services

Landscapes

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

Abstract

本公开提供了一种数据服务提供方法、装置、介质和电子设备,该请求方法包括:在提供服务的类中增加注释标签,所述注释标签用于说明所述类提供的服务内容,所述注释标签包括提供所述服务内容的接口信息;字节码转换器获取所述接口信息以及所述类的类名信息,并将所述接口信息以及类名信息添加到服务提供单元;所述服务提供单元通过所述接口信息以及类名信息构造服务实例以供调用。本方法服务提供方节省了验证步骤,耗时大大降低,性能至少提高一千倍。并且App越大,对性能提升会越明显。同时反馈调用接口,不使用反射方式,对调用性能也有所提升。

Description

一种数据服务提供方法、装置、介质和电子设备
技术领域
本公开涉及计算机技术领域,具体而言,涉及一种数据服务提供方 法、装置、介质和电子设备。
背景技术
SPI是Service Provider Interface的简称,是一种通过声明一些抽象 类和接口,并且在运行时动态地找到具体实现并提供服务的框架。SPI 应用于面向对象编程中,基于接口编程的原则。调用方在使用时,不指 定具体实现,只指定接口,而SPI框架负责通过接口,寻找到对应的实 现。SPI被广泛的用于数据库driver,日志框架,加密扩展等领域。
Java语言本身提供了一种SPI的实现,叫做ServiceLoader。 ServiceLoader的工作原理如下:服务提供方把自己提供的服务的实现的 ClassName写入文件,并且以Interface的名字作为文件名,放在 META-INF/services/目录下。调用方把想要调用的服务的Interface传给 ServiceLoader。ServiceLoader首先调用JarVerifier去验证Jar包的签 名,验证其合法性。验证Jar包通过后,ServiceLoader通过ClassLoader 去读取META-INF/services/下的和Interface同名的文件,读取其中内 容,拿到实现类的ClassName。最后ServiceLoader通过反射,构造 ClassName所对应的实例,返回给调用方。
现有技术在Android平台上使用起来有如下缺点:1.JarVerifier验 证Jar包签名,读取META-INFO/services/文件,这一步性能很差,会 严重影响Android app的启动速度。2.最后构造服务的实例的时候,使 用反射,对性能也有一定影响。
公开内容
本公开的目的在于提供一种数据服务提供方法、装置、介质和电子 设备,能够解决上述提到的至少一个技术问题。具体方案如下:
根据本公开的具体实施方式,第一方面,本公开提供一种数据服务 提供方法,包括:
在提供服务的类中增加注释标签,所述注释标签用于说明所述类提 供的服务内容,所述注释标签包括提供所述服务内容的接口信息;
字节码转换器获取所述接口信息以及所述类的类名信息,并将所述 接口信息以及类名信息添加到服务提供单元;
所述服务提供单元通过所述接口信息以及类名信息构造服务实例以 供调用。
可选的,所述字节码转换器获取所述接口信息以及所述类的类名信 息,并将所述接口信息以及类名信息添加到服务提供单元,包括:
字节码转换器扫描提供服务的所有的类,并获取所有的类的所述接 口信息以及类名信息,
判断扫描是否完成,若是,将所述接口信息以及类名信息添加到服 务提供单元。
可选的,还包括:
若否,继续扫描提供服务的所有的类,并从所述类的所述注释标签 中获取所述接口信息以及类名信息。
可选的,还包括:
所述服务提供单元接收第三方调用程序的接口调用信息;
根据所述接口调用信息查找匹配的所述接口信息,若查找成功,返 回所述接口信息下构造的服务实例。
可选的,所述服务提供单元通过所述接口信息以及类名信息构造服 务实例以供调用包括:
所述服务提供单元通过所述接口信息以及类名信息调用构造函数;
通过所述构造函数初始化服务实例以供调用。
根据本公开的具体实施方式,第二方面,本公开提供一种数据服务 提供装置,包括:
注释单元,用于在提供服务的类中增加注释标签,所述注释标签用 于说明所述类提供的服务内容,所述注释标签包括提供所述服务内容的 接口信息;
编译单元,用于字节码转换器获取所述接口信息以及所述类的类名 信息,并将所述接口信息以及类名信息添加到服务提供单元;
构造单元,用于所述服务提供单元通过所述接口信息以及类名信息 构造服务实例以供调用。
可选的,所述编译单元还用于:
字节码转换器扫描提供服务的所有的类,并获取所有的类的所述接 口信息以及类名信息,
判断扫描是否完成,若是,将所述接口信息以及类名信息添加到服 务提供单元。
可选的,还包括:
若否,继续扫描提供服务的所有的类,并从所述类的所述注释标签 中获取所述接口信息以及类名信息。
根据本公开的具体实施方式,第三方面,本公开提供一种计算机可 读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如 上任一项所述的方法。
根据本公开的具体实施方式,第四方面,本公开提供一种电子设 备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序, 当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个 或多个处理器实现如上任一项所述的方法。
本公开实施例的上述方案与现有技术相比,至少具有以下有益效 果:本公开通过提供一种数据服务提供方法、装置、介质和电子设备, 本方法服务提供方绕开了JarVerifier对Jar包的签名校验以及对META- INFO/services的读取的步骤,通过提前在编译器中对调用接口SDK内 容进行实例化,节省了验证步骤,对于20MB的Android App,耗时从 300ms降低到0.3ms以下,性能至少提高一千倍。并且App大小越大, 对性能提升会越明显。同时反馈调用接口,不使用反射方式,对调用性 能也有所提升。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合 本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见 地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技 术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得 其他的附图。在附图中:
图1示出了根据本公开实施例的数据服务提供方法的应用场景图;
图2示出了根据本公开实施例的数据服务提供方法流程图;
图3示出了根据本公开实施例的数据服务提供装置结构示意图;
图4示出了根据本公开的实施例的电子设备连接结构示意图。
具体实施方式
为了使本公开的目的、技术方案和优点更加清楚,下面将结合附图 对本公开作进一步地详细描述,显然,所描述的实施例仅仅是本公开一 部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普 通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都 属于本公开保护的范围。
在本公开实施例中使用的术语是仅仅出于描述特定实施例的目的, 而非旨在限制本公开。在本公开实施例和所附权利要求书中所使用的单 数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文 清楚地表示其他含义,“多种”一般包含至少两种。
应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的 关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独 存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符 “/”,一般表示前后关联对象是一种“或”的关系。
应当理解,尽管在本公开实施例中可能采用术语第一、第二、第三 等来描述……,但这些……不应限于这些术语。这些术语仅用来将…… 区分开。例如,在不脱离本公开实施例范围的情况下,第一……也可以 被称为第二……,类似地,第二……也可以被称为第一……。
取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为 “在……时”或“当……时”或“响应于确定”或“响应于检测”。类似 地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事 件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述 的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在 涵盖非排他性的包含,从而使得包括一系列要素的商品或者装置不仅包 括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这 种商品或者装置所固有的要素。在没有更多限制的情况下,由语句“包 括一个……”限定的要素,并不排除在包括所述要素的商品或者装置中还存在另外的相同要素。
下面结合附图详细说明本公开的可选实施例。
实施例1
如图1所示,为本公开实施例的一种应用场景图,该应用场景为第 三方应用程序通过网络调用网络服务平台接口,给客户提供服务。例如 微信支付、支付宝等支付类APP通过网购平台(例如京东、美团外卖 等)为用户提供支付服务。但并不限于该唯一应用场景,可以理解的任 何能够应用于本实施方案的场景均包括在内,为了说明方便,本实施例 以微信通过京东为客户提供支付服务的应用场景为例进行描述。
如图2所示,根据本公开的具体实施方式,第一方面,本公开提供 一种数据服务提供方法,包括如下方法步骤:
步骤S102:在提供服务的类中增加注释标签,所述注释标签用于 说明所述类提供的服务内容,所述注释标签包括提供所述服务内容的接 口信息。
所述的服务泛指任何实现特定接口的代码,包括但不限于网络平台 类服务端提供的接口。所述接口包括但不限于Java语言中的 Interface,例如:本地数据库的驱动程序,因为实现了该数据库提供 的公开Interface,因此可以认为是数据库的服务。
或者,例如网络平台类服务端提供一定类型的接口,以服务有相关 业务类型的第三方服务提供方,例如京东售卖产品属于平台方,微信支 付属于第三方服务方。平台服务方在提供不同类型服务时,往往需要第 三方接入而进行。
类是个“特殊的函数”,类似于定义的函数表达式和函数声明一 样,类语法有两个组成部分:类表达式和类声明。定义一个类的一种方 法是使用一个类声明。要声明一个类,可以使用带有class关键字的类 名,例如class A{}。
注释标签,用于说明所述类提供的服务内容,所述注释标签包括提 供所述服务内容的接口信息,用于供编译器查找服务内容。所述接口信 息按照服务类别进行划分,例如支付类、订单类、游戏类、销售类等。
在实施过程中,本实施例提供的一种类似SPI框架可以命名为 Claymore框架。该框架包括:
服务提供单元接口ClaymoreServiceLoader、@ClaymoreImpl注解 以及一个字节码转换器。
服务提供方在自己的服务的实现的类Class上,增加一个 @ClaymoreImpl的Annotation(注解),并且在Annotation里加上自己 实现的服务的interface(接口),例如支付接口。
步骤S104:字节码转换器获取所述接口信息以及所述类的类名信 息,并将所述接口信息以及类名信息添加到服务提供单元。
字节码转换器是一种编译器,编译器就是将一种语言(通常为高级 语言)翻译为另一种语言(通常为低级语言)的程序。一个现代编译器的主 要工作流程:源代码(sourcecode)→预处理器(preprocessor)→编译 器(compiler)→目标代码(object code)→链接器(Linker)→可执行 程序(executables)。
接口信息包括微信支付、支付宝支付、农业银行支付等支付类接口 信息,或者高德地图、百度地图等导航类接口,或者Java语言中的 Interface。编译器直接获得具体的接口信息和类名信息,例如获得微 信支付、支付宝支付信息。并将微信支付、支付宝支付直接编译为可执 行的内容添加到服务提供单元。
可选的,所述字节码转换器获取所述接口信息以及所述类的类名信 息,并将所述接口信息以及类名信息添加到服务提供单元,包括:
步骤S1041:字节码转换器扫描提供服务的所有的类,并获取所有 的类的所述接口信息以及类名信息。
编译器扫描所有的类,首先按照分类进行归类,例如支持类、导航 类等,再获取各分类下所有的接口信息以及类名信息,例如微信支付、 支付宝支付、农业银行支付;或者高德地图、百度地图。
在编译的时候,字节码转换器会扫描所有的Class,并且寻找 @ClaymoreImpl的Annotation信息。这部分信息就是已有方案中ServiceLoader读取的META-INFO/services/下面的所有信息,通过把读 取这部分信息的时机提前到编译器,就解决了JarVerifier的性能问 题。
步骤S1042:判断扫描是否完成,若是,将所述接口信息以及类名 信息添加到服务提供单元。
步骤S1043:若否,继续扫描提供服务的所有的类,并从所述类的 所述注释标签中获取所述接口信息以及类名信息。
步骤S106:所述服务提供单元通过所述接口信息以及类名信息构 造服务实例以供调用。
字节码转换器读取到接口信息和实现的类名信息之后,会通过字节 码转换,往服务提供单元ClaymoreServiceLoader里添加代码,直接通 过调用构造函数初始化实例。这样构造实例时就不是通过反射,从而解 决反射调用造成的性能问题。
可选的,所述服务提供单元通过所述接口信息以及类名信息构造服 务实例以供调用包括:
所述服务提供单元通过所述接口信息以及类名信息调用构造函数; 通过所述构造函数初始化服务实例以供调用。
例如通过微信支付构造关于微信支付的支付方法函数,通过支付宝 构造关于支付宝的支付方法函数,通过高德地图构造关于高德地图的导 航函数,通过百度地图构造关于百度地图的导航函数。
可选的,该方法还包括如下步骤:
步骤S108:所述服务提供单元接收第三方调用程序的接口调用信 息;根据所述接口调用信息查找匹配的所述接口信息,若查找成功,返 回所述接口信息下构造的服务实例。
调用方调用服务提供单元ClaymoreServiceLoader,请求某一个接 口,服务提供单元ClaymoreServiceLoader直接调用接口,根据该接 口,构造出新的实现方法返回给调用方。
第三方调用程序包括但不限于,例如微信支付、支付宝支付、农业 银行支付;或者高德地图、百度地图。通过将直接调用的函数进行群举 式构造,当在调用时,直接匹配接口及类名,当匹配成功时直接返回调 用结果,免去了校验步骤,节约了调用时间。
本公开通过提供一种数据服务提供方法,本方法服务提供方绕开了 JarVerifier对Jar包的签名校验以及对META-INFO/services的读取的步 骤,通过提前在编译器中对调用接口SDK内容进行实例化,节省了验 证步骤,对于20MB的Android App,耗时从300ms降低到0.3ms以 下,性能至少提高一千倍。并且App大小越大,对性能提升会越明 显。同时反馈调用接口,不使用反射方式,对调用性能也有所提升。
实施例2
如图1所示,为本公开实施例的一种应用场景图,该应用场景为第 三方应用程序通过网络调用网络服务平台接口,给客户提供服务。例如 微信支付、支付宝等支付类APP通过网购平台(例如京东、美团外卖 等)为用户提供支付服务。但并不限于该唯一应用场景,可以理解的任 何能够应用于本实施方案的场景均包括在内,为了说明方便,本实施例 以微信通过京东为客户提供支付服务的应用场景为例进行描述。本实施 例承接实施例1,用于实现如实施例1所述的方法步骤,基于相同的名 称含义的解释与实施例1相同,具有与实施例1相同的技术效果,此处 不再赘述
如图3所示,根据本公开的具体实施方式,第二方面,本公开提供 一种数据服务提供装置,包括注释单元302、编译单元304、构造单元 306以及查询单元308,具体如下:
注释单元302:用于在提供服务的类中增加注释标签,所述注释标 签用于说明所述类提供的服务内容,所述注释标签包括提供所述服务内 容的接口信息。
所述的服务泛指任何实现特定接口的代码,包括但不限于网络平台 类服务端提供的接口。所述接口包括但不限于Java语言中的 Interface,例如:本地数据库的驱动程序,因为实现了该数据库提供 的公开Interface,因此可以认为是数据库的服务。
或者,例如网络平台类服务端提供一定类型的接口,以服务有相关 业务类型的第三方服务提供方,例如京东售卖产品属于平台方,微信支 付属于第三方服务方。平台服务方在提供不同类型服务时,往往需要第 三方接入而进行。
类是个“特殊的函数”,类似于定义的函数表达式和函数声明一 样,类语法有两个组成部分:类表达式和类声明。定义一个类的一种方 法是使用一个类声明。要声明一个类,可以使用带有class关键字的类 名,例如class A{}。
注释标签,用于说明所述类提供的服务内容,所述注释标签包括提 供所述服务内容的接口信息,用于供编译器查找服务内容。所述接口信 息按照服务类别进行划分,例如支付类、订单类、游戏类、销售类等。
在实施过程中,本实施例提供的一种类似SPI框架可以命名为 Claymore框架。该框架包括:
服务提供单元接口ClaymoreServiceLoader、@ClaymoreImpl注解 以及一个字节码转换器。
服务提供方在自己的服务的实现的类Class上,增加一个 @ClaymoreImpl的Annotation(注解),并且在Annotation里加上自己 实现的服务的interface(接口),例如支付接口。
编译单元304:字节码转换器获取所述接口信息以及所述类的类名 信息,并将所述接口信息以及类名信息添加到服务提供单元。
字节码转换器是一种编译器,编译器就是将一种语言(通常为高级 语言)翻译为另一种语言(通常为低级语言)的程序。一个现代编译器的主 要工作流程:源代码(sourcecode)→预处理器(preprocessor)→编译 器(compiler)→目标代码(object code)→链接器(Linker)→可执行 程序(executables)。
接口信息包括微信支付、支付宝支付、农业银行支付等支付类接口 信息,或者高德地图、百度地图等导航类接口等。编译器直接获得具体 的接口信息和类名信息,例如获得微信支付、支付宝支付信息。并将微 信支付、支付宝支付直接编译为可执行的内容添加到服务提供单元。
可选的,编译单元304还用于:
(1)字节码转换器扫描提供服务的所有的类,并获取所有的类的 所述接口信息以及类名信息。
编译器扫描所有的类,首先按照分类进行归类,例如支持类、导航 类等,再获取各分类下所有的接口信息以及类名信息,例如微信支付、 支付宝支付、农业银行支付;或者高德地图、百度地图。
在编译的时候,字节码转换器会扫描所有的Class,并且寻找 @ClaymoreImpl的Annotation信息。这部分信息就是已有方案中 ServiceLoader读取的META-INFO/services/下面的所有信息,通过把读 取这部分信息的时机提前到编译器,就解决了JarVerifier的性能问 题。
(2)判断扫描是否完成,若是,将所述接口信息以及类名信息添 加到服务提供单元。若否,继续扫描提供服务的所有的类,并从所述类 的所述注释标签中获取所述接口信息以及类名信息。
构造单元306:所述服务提供单元通过所述接口信息以及类名信息 构造服务实例以供调用。
字节码转换器读取到接口信息和实现的类名信息之后,会通过字节 码转换,往服务提供单元ClaymoreServiceLoader里添加代码,直接通 过调用构造函数初始化实例。这样构造实例时就不是通过反射,从而解 决反射调用造成的性能问题。
可选的,构造单元306还用于:所述服务提供单元通过所述接口信 息以及类名信息调用构造函数;通过所述构造函数初始化服务实例以供 调用。
例如通过微信支付构造关于微信支付的支付方法函数,通过支付宝 构造关于支付宝的支付方法函数,通过高德地图构造关于高德地图的导 航函数,通过百度地图构造关于百度地图的导航函数。
可选的,还包括查询单元308:所述服务提供单元接收第三方调用 程序的接口调用信息;根据所述接口调用信息查找匹配的所述接口信 息,若查找成功,返回所述接口信息下构造的服务实例。
调用方调用服务提供单元ClaymoreServiceLoader,请求某一个接 口,服务提供单元ClaymoreServiceLoader直接调用接口,根据该接 口,构造出新的实现方法返回给调用方。
第三方调用程序包括但不限于,例如微信支付、支付宝支付、农业 银行支付;或者高德地图、百度地图。通过将直接调用的函数进行群举 式构造,当在调用时,直接匹配接口及类名,当匹配成功时直接返回调 用结果,免去了校验步骤,节约了调用时间。
本公开通过提供一种数据服务提供装置,本方法服务提供方绕开了JarVerifier对Jar包的签名校验以及对META-INFO/services的读取的步 骤,通过提前在编译器中对调用接口SDK内容进行实例化,节省了验 证步骤,对于20MB的Android App,耗时从300ms降低到0.3ms以 下,性能至少提高一千倍。并且App大小越大,对性能提升会越明 显。同时反馈调用接口,不使用反射方式,对调用性能也有所提升。
实施例3
如图4所示,本实施例提供一种电子设备,该设备用于提供数据服 务,所述电子设备,包括:至少一个处理器;以及,与所述至少一个处 理器通信连接的存储器;其中,
所述存储器存储有可被所述一个处理器执行的指令,所述指令被所 述至少一个处理器执行,以使所述至少一个处理器能够执行如上实施例 所述的方法步骤。
实施例4
本公开实施例提供了一种非易失性计算机存储介质,所述计算机存 储介质存储有计算机可执行指令,该计算机可执行指令可执行如上实施 例所述的方法步骤。
实施例5
下面参考图4,其示出了适于用来实现本公开实施例的电子设备的结 构示意图。本公开实施例中的终端设备可以包括但不限于诸如移动电 话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板 电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端) 等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图4示 出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围 带来任何限制。
如图4所示,电子设备可以包括处理装置(例如中央处理器、图形处理器等)401,其可以根据存储在只读存储器(ROM)402中的程序或者从存储装置408加载到随机访问存储器(RAM)403中的程序而执行各种适当的动作和处理。在RAM 403中,还存储有电子设备操作所需的各种程序和数据。处理装置401、ROM 402以及RAM 403通过总线404彼此相连。输入/输出(I/O)接口405也连接至总线404。
通常,以下装置可以连接至I/O接口405:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置406;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置407;包括例如磁带、硬盘等的存储装置408;以及通信装置409。通信装置409可以允许电子设备与其他设备进行无线或有线通信以交换数据。虽然图4示出了具有各种装置的电子设备,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置409从网络上被下载和安装,或者从存储装置408被安装,或者从ROM 402被安装。在该计算机程序被处理装置401执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信 号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可 读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、 或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储 介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器 (ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧 凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的 任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或 存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用 或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基 带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程 序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信 号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计 算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质 可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者 与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适 当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上 述的任意合适的组合。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单 独存在,而未装配入该电子设备中。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的 操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语 言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言— 诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算 机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、 部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机 或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任 意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算 机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过 因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方 法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上, 流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部 分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的 逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个 接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反 的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图 中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定 的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与 计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现, 也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构 成对该单元本身的限定。

Claims (9)

1.一种数据服务提供方法,其特征在于,包括:
在提供服务的类中增加注释标签,所述注释标签用于说明所述类提供的服务内容,所述注释标签包括提供所述服务内容的接口信息;
字节码转换器获取所述接口信息以及所述类的类名信息,并将所述接口信息以及类名信息添加到服务提供单元;
所述服务提供单元通过所述接口信息以及类名信息构造服务实例以供调用,
所述服务提供单元通过所述接口信息以及类名信息构造服务实例以供调用包括:
所述服务提供单元通过所述接口信息以及类名信息调用构造函数;
通过所述构造函数初始化服务实例以供调用。
2.如权利要求1所述的方法,其特征在于,所述字节码转换器获取所述接口信息以及所述类的类名信息,并将所述接口信息以及类名信息添加到服务提供单元,包括:
字节码转换器扫描提供服务的所有的类,并获取所有的类的所述接口信息以及类名信息;
判断扫描是否完成,若是,将所述接口信息以及类名信息添加到服务提供单元。
3.如权利要求2所述的方法,其特征在于,所述判断扫描是否完成,还包括:
若否,继续扫描提供服务的所有的类,并从类的所述注释标签中获取所述接口信息。
4.如权利要求3所述的方法,其特征在于,还包括:
所述服务提供单元接收第三方调用程序的接口调用信息;
根据所述接口调用信息查找匹配的所述接口信息,若查找成功,返回所述接口信息下构造的服务实例。
5.一种数据服务提供装置,其特征在于,包括:
注释单元,用于在提供服务的类中增加注释标签,所述注释标签用于说明所述类提供的服务内容,所述注释标签包括提供所述服务内容的接口信息;
编译单元,用于字节码转换器获取所述接口信息以及所述类的类名信息,并将所述接口信息以及类名信息添加到服务提供单元;
构造单元,用于所述服务提供单元通过所述接口信息以及类名信息构造服务实例以供调用,
所述服务提供单元通过所述接口信息以及类名信息构造服务实例以供调用包括:
所述服务提供单元通过所述接口信息以及类名信息调用构造函数;
通过所述构造函数初始化服务实例以供调用。
6.如权利要求5所述的装置,其特征在于,所述编译单元还用于:
字节码转换器扫描提供服务的所有的类,并获取所有的类的所述接口信息以及类名信息,
判断扫描是否完成,若是,将所述接口信息以及类名信息添加到服务提供单元。
7.如权利要求6所述的装置,其特征在于,还包括:
若否,继续扫描提供服务的所有的类,并从所述类的所述注释标签中获取所述接口信息。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至4中任一项所述的方法。
9.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1至4中任一项所述的方法。
CN201910454345.7A 2019-05-29 2019-05-29 一种数据服务提供方法、装置、介质和电子设备 Active CN110245030B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910454345.7A CN110245030B (zh) 2019-05-29 2019-05-29 一种数据服务提供方法、装置、介质和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910454345.7A CN110245030B (zh) 2019-05-29 2019-05-29 一种数据服务提供方法、装置、介质和电子设备

Publications (2)

Publication Number Publication Date
CN110245030A CN110245030A (zh) 2019-09-17
CN110245030B true CN110245030B (zh) 2021-11-12

Family

ID=67885280

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910454345.7A Active CN110245030B (zh) 2019-05-29 2019-05-29 一种数据服务提供方法、装置、介质和电子设备

Country Status (1)

Country Link
CN (1) CN110245030B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110764748B (zh) * 2019-10-23 2023-03-14 北京字节跳动网络技术有限公司 代码调用方法、装置、终端及存储介质
CN111930478A (zh) * 2020-06-08 2020-11-13 北京每日优鲜电子商务有限公司 基于动态字节码的服务调用方法及装置
CN111796865B (zh) * 2020-06-28 2024-04-16 北京字节跳动网络技术有限公司 一种字节码文件修改方法、装置、终端设备及介质
CN112148826A (zh) * 2020-09-25 2020-12-29 北京锐安科技有限公司 在业务中集成地图服务的方法、装置、设备和存储介质
CN112685020A (zh) * 2020-12-24 2021-04-20 京东数字科技控股股份有限公司 动态创建服务接口的方法、装置、电子设备及存储介质
CN115174575B (zh) * 2022-06-28 2023-06-16 重庆长安汽车股份有限公司 一种服务控制方法、装置、电子设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109032663A (zh) * 2018-07-09 2018-12-18 深圳市小牛在线互联网信息咨询有限公司 接口文档的生成方法、装置、计算机设备及存储介质
CN109729149A (zh) * 2018-12-03 2019-05-07 国云科技股份有限公司 一种基于注解的微服务框架实现方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10021166B2 (en) * 2015-09-10 2018-07-10 Ca, Inc. Mechanism for building normalized service model to expose web APIs
CN107733922B (zh) * 2017-11-20 2020-12-08 百度在线网络技术(北京)有限公司 用于调用服务的方法和装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109032663A (zh) * 2018-07-09 2018-12-18 深圳市小牛在线互联网信息咨询有限公司 接口文档的生成方法、装置、计算机设备及存储介质
CN109729149A (zh) * 2018-12-03 2019-05-07 国云科技股份有限公司 一种基于注解的微服务框架实现方法

Also Published As

Publication number Publication date
CN110245030A (zh) 2019-09-17

Similar Documents

Publication Publication Date Title
CN110245030B (zh) 一种数据服务提供方法、装置、介质和电子设备
CN110489101B (zh) 接口模拟方法、系统、介质和电子设备
CN111427569B (zh) 免安装程序适配方法、装置、电子设备及存储介质
CN111459685A (zh) 页面端与原生端的通信方法、装置、设备及可读介质
CN111581555B (zh) 一种文档加载方法、装置、设备及存储介质
CN112882709A (zh) 基于容器引擎系统的渲染方法、装置、设备以及存储介质
CN107402792B (zh) 应用软件安装包的集成方法、装置、设备及存储介质
CN110069308A (zh) 页面启动方法、装置、电子设备和存储介质
CN111722935A (zh) 页面端与原生端的通信方法、装置、电子设备及可读介质
CN110704833A (zh) 数据权限配置方法、设备、电子设备及存储介质
CN111079125A (zh) 一种应用程序调用第三方库动态提升权限的方法及装置
CN110389899B (zh) 检测js程序的api数据类型的方法装置、介质和设备
CN110489180B (zh) 一种埋点上报方法、装置、介质和电子设备
CN110519373B (zh) 用于推送信息的方法和装置
CN111752644A (zh) 接口模拟方法、装置、设备及存储介质
WO2022267809A1 (zh) 页面嵌入方法、装置、存储介质及电子设备
CN111796865B (zh) 一种字节码文件修改方法、装置、终端设备及介质
CN111273967A (zh) 适用于Android系统的远程钩子设置方法、装置及电子设备
CN110673908A (zh) 一种界面生成方法、装置、介质和电子设备
CN115860950A (zh) 合约交易执行方法、装置、电子设备及可读存储介质
CN111784481B (zh) 扫码下单方法、业务码创建方法、装置和电子设备
CN109145591A (zh) 应用程序的插件加载方法
CN110278144B (zh) 一种卡片消息发送方法、装置、介质和电子设备
CN111274551B (zh) 基于编译器的java代码保护方法、装置及电子设备
CN109669679B (zh) 服务检测及处理方法、装置及电子设备

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
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing.

Patentee after: Douyin Vision Co.,Ltd.

Address before: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing.

Patentee before: Tiktok vision (Beijing) Co.,Ltd.

Address after: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing.

Patentee after: Tiktok vision (Beijing) Co.,Ltd.

Address before: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing.

Patentee before: BEIJING BYTEDANCE NETWORK TECHNOLOGY Co.,Ltd.