远程调用方法、装置和存储介质与流程

文档序号:25543471发布日期:2021-06-18 20:40
本申请涉及通信
技术领域
:,具体涉及一种远程调用方法、装置和存储介质。
背景技术
::远程过程调用(remoteprocedurecall,rpc)是一种进程间通信方式,允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个远程过程调用的细节。为了解决异构平台的rpc,使用了接口描述语言(interfacedefinitionlanguage,idl)来定义远程接口,并将其映射到特定的平台语言中。在现有的远程过程调用方案中,使用接口调用远程服务时,每个接口都对应一个idl。在每次跨语言调用时,必须将idl文件编译为每个语言对应的代理类文件,再发布服务进行调用,并且每次更新idl文件都需要重新编译、发布服务。因此,利用现有的技术方案实现远程过程调用时较为复杂。技术实现要素:本申请实施例提供一种远程调用方法、装置和存储介质,可以有效地提高远程调用的便捷性。本申请实施例提供一种远程调用方法,包括:获取待调用的服务端的接口描述文件;对所述接口描述文件的内容进行解析,以确定所述接口描述文件中内容之间的结构关系;基于预设规则构建所述结构关系的语法树,并获取所述语法树中节点的属性信息;根据所述语法树和所述节点的属性信息生成符合预设数据结构的接口对象;利用所述接口对象对所述服务端进行远程调用。相应的,本申请实施例还提供一种远程调用装置,包括:获取单元,用于获取待调用的服务端的接口描述文件;解析单元,用于对所述接口描述文件的内容进行解析,以确定所述接口描述文件中内容之间的结构关系;构建单元,用于基于预设规则构建所述结构关系的语法树,并获取所述语法树中节点的属性信息生成单元,用于根据所述语法树和所述节点的属性信息生成符合预设数据结构的接口对象;调用单元,用于利用所述接口对象对所述服务端进行远程调用。可选的,在一些实施例中,解析单元可以包括获取子单元、解析子单元和确定子单元,如下:所述获取子单元,用于获取所述接口描述文件的内容;所述解析子单元,用于对所述接口描述文件的内容进行语法解析,得到所述接口描述文件的内容之间的语法关系;所述确定子单元,用于根据所述接口描述文件的内容之间的语法关系,确定所述接口描述文件中内容之间的结构关系。可选的,在一些实施例中,解析子单元,具体可以用于将所述接口描述文件的内容进行词划分;对划分得到的词进行词法解析,得到每个词的类型信息;对所述各个词的类型信息进行语法解析,得到词之间的语法关系。则所述确定子单元,具体可以用于根据所述词之间的语法关系,确定所述接口描述文件中内容之间的结构关系。可选的,在一些实施例中,所述解析单元还可以包括去噪子单元,如下:所述去噪子单元,用于对所述接口描述文件的内容进行去噪;则所述解析子单元,具体可以用于对去噪后的接口描述文件的内容进行语法解析,得到所述接口描述文件的内容之间的语法关系。可选的,在一些实施例中,所述解析子单元,具体可以用于对所述接口描述文件的内容之间的语法关系进行检查;若所述接口描述文件的内容之间的语法关系符合预设条件,则根据所述接口描述文件的内容之间的语法关系,确定所述接口描述文件中内容之间的结构关系。可选的,在一些实施例中,所述接口描述文件包括至少一个接口模块,所述构建单元可以包括提取子单元和构建子单元,所述提取子单元,用于在所述结构关系中提取所述接口描述文件中接口模块的层级关系;所述构建子单元,用于基于所述层级关系,构建所述接口描述文件的语法树,并获取所述语法树中节点的属性信息。可选的,在一些实施例中,所述提取子单元,具体可以用于在所述结构关系中提取所述接口模块的名称,以及所述接口模块中包括的数据类型;将所述接口模块的名称设置为父节点,将所述数据类型设置为子节点,建立所述接口描述文件中的层级关系。可选的,在一些实施例中,所述构建子单元,具体可以用于根据接口模块的数据类型,在所述接口描述文件中筛选出每种数据类型的属性信息;基于所述接口模块的名称、所述数据类型以及所述数据类型的属性信息之间的层级关系构建所述接口描述文件的语法树;并获取所述语法树中节点的属性信息。可选的,在一些实施例中,所述生成单元,具体可以用于在所述语法树中提取节点名称;根据预设数据结构的格式对所述节点名称与所述节点的属性信息进行构造,得到所述接口描述文件的接口对象。此外,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行本申请实施例提供的任一种远程调用方法中的步骤。本申请实施例先获取待调用的服务端的接口描述文件,然后,对该接口描述文件的内容进行解析,以确定该接口描述文件中内容之间的结构关系,接着,基于预设规则构建该结构关系的语法树,并获取该语法树中节点的属性信息,再然后,根据该语法树和该节点的属性信息生成符合预设数据结构的接口对象,再利用该接口对象对该服务端进行远程调用;该方案可以有效地提高远程调用的便捷性。附图说明为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1a是本申请实施例提供的远程调用方法的场景示意图;图1b是本申请实施例提供的远程调用方法的流程图;图2a是本申请实施例提供的远程调用方法的另一流程图;图2b是本申请实施例提供的结构关系示意图;图2c是本申请实施例提供的语法树示意图;图2d是本申请实施例提供的调用过程示意图;图3本申请实施例提供的远程调用装置的结构示意图;图4是本申请实施例提供的终端的结构示意图。具体实施方式下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。另外,本文中尽管多次采用术语“第一”、“第二”等来描述各种元件(或各种阈值或各种应用或各种指令或各种操作)等,不过这些元件(或阈值或应用或指令或操作)不应受这些术语的限制。这些术语只是用于区分一个元件(或阈值或应用或指令或操作)和另一个元件(或阈值或应用或指令或操作)。例如,第一操作可以被称为第二操作,第二操作也可以被称为第一操作,而不脱离本申请的范围,第一操作和第二操作都是操作,只是二者并不是相同的操作而已。本申请实施例提供一种远程调用方法、装置和存储介质。其中,该远程调用装置可以集成在终端中,其中,该终端可以包括平板电脑、笔记本电脑、以及个人计算机(personalcomputer,pc)等设备。例如,以该远程调用装置集成在客户端中为例,参见图1a,首先,获取待调用的服务端的接口描述文件,然后,对该接口描述文件的内容进行解析,以确定该接口描述文件中内容之间的结构关系,接着,基于预设规则构建该结构关系的语法树,并获取该语法树中节点的属性信息,再然后,根据该语法树和该节点的属性信息生成符合预设数据结构的接口对象,再利用该接口对象对该服务端进行远程调用。以下分别进行详细说明。需说明的是,以下实施例的描述顺序不作为对实施例优选顺序的限定。本实施例将从远程调用装置的角度进行描述,该远程调用装置具体可以集成在终端中,其中,该终端可以包括平板电脑、笔记本电脑、以及个人计算机等设备。一种远程调用方法,包括:获取待调用的服务端的接口描述文件,然后,对该接口描述文件的内容进行解析,以确定该接口描述文件中内容之间的结构关系,接着,基于预设规则构建该结构关系的语法树,并获取该语法树中节点的属性信息,再然后,根据该语法树和该节点的属性信息生成符合预设数据结构的接口对象,再利用该接口对象对该服务端进行远程调用。如图1b所示,该远程调用方法的具体流程可以如下:101、获取待调用的服务端的接口描述文件。例如,具体可以在客户端向待调用的服务端发送调用请求,其中,该调用请求可以携带服务端的标识,客户端可以根据该服务端的标识获取该标识对应的接口描述文件,其中,标识对应的接口描述文件可以是预先存在于客户端的,也可以是通过网络从服务端获取的。其中,发起主动调用服务(简称主调服务)的终端为客户端,提供远程调用服务的终端为服务端。其中,接口描述文件指的是利用接口描述语言对终端的接口情况进行描述的文件,比如,接口描述语言(interfacedescriptionlanguage,idl)文件。其中,接口描述语言是用来描述软件组件接口的一种计算机语言。idl通过一种中立的方式来描述接口,使得在不同平台上运行的对象和用不同语言编写的程序可以相互通信交流;比如,一个组件用c++写成,另一个组件用java写成。idl通常用于远程调用软件。在这种情况下,一般是由远程客户终端调用不同操作系统上的对象组件,并且这些对象组件可能是由不同计算机语言编写的。idl建立起了两个不同操作系统间通信的桥梁。idl文件描述了服务器提供的服务功能,客户端可以根据该接口文件描述的方法向服务器提出业务请求。其中,远程调用可以是远程过程调用(rpc),远程过程调用是一种最为常见的远程服务。rpc对于通过网络连接系统之间的过程调用进行了抽象。它在许多方面都类似于进程间通信(interprocesscommunication,ipc)机制,并且通常建立在ipc之上。不过,因为现在的情况是进程处在不同系统上,所以应提供基于消息的通信方案,以提供远程服务。与ipc的消息不一样,rpc通信交换的消息具有明确结构,不再仅仅是数据包。消息传到rpc服务,rpc服务监听远程系统的端口号;消息包含用于指定执行函数的一个标识符以及传递给函数的一些参数。然后,函数按要求来执行,而所有结果会通过另一消息,传递回到请求者。端口只是一个数字,处于消息分组头部。虽然每个系统通常只有一个网络地址,但是对于这个地址它有许多端口号,以便区分所支持的多个网络服务。如果一个远程进程需要服务,那么它向适当端口发送消息。例如,如果有个系统允许其他系统列出当前用户,那么它可以有一个支持这个的rpc服务,该服务会监听某个端口,如3027。任何一个远程系统如要得到所需信息(即列出当前用户),只要向服务器端口3027发送一个rpc消息,就能通过回复消息收到数据。rpc语义允许客户调用位于远程主机的过程,就如调用本地过程一样。其中,获取接口描述文件的方式可以有很多种,比如,可以从网络中获取接口描述文件,也可以从存储器中获取接口描述文件,等等。102、对该接口描述文件的内容进行解析,以确定该接口描述文件中内容之间的结构关系。例如,具体可以获取该接口描述文件的内容,对该接口描述文件的内容进行语法解析,得到该接口描述文件的内容之间的语法关系,根据该接口描述文件的内容之间的语法关系,确定该接口描述文件中内容之间的结构关系。为了提高远程调用的效率,在对该接口描述文件的内容进行语法解析之前,还可以对该接口描述文件的内容进行去噪,比如,去除该接口描述文件的内容中的缩进和注释,等等。此时,对该接口描述文件的内容进行语法解析,得到该接口描述文件的内容之间的语法关系,可以包括:对去噪后的接口描述文件的内容进行语法解析,得到该接口描述文件的内容之间的语法关系。比如,将去除缩进和注释后的接口描述文件的内容进行语法解析,得到该接口描述文件的内容之间的语法关系。其中,对该接口描述文件的内容进行语法解析的方式可以有很多种,比如,可以先对该接口描述文件的内容进行词法解析,得到词的类型信息后,再对词的类型信息进行语法解析,比如,可以将该接口描述文件的内容进行词划分,对划分得到的词进行词法解析,得到每个词的类型信息,对该各个词的类型信息进行语法解析,得到词之间的语法关系。则,根据该接口描述文件的内容之间的语法关系,确定该接口描述文件中内容之间的结构关系,可以包括:根据该词之间的语法关系,确定该接口描述文件中内容之间的结构关系。其中,词法解析,也可以叫做词法分析,指的是计算机科学中将字符序列转换为单词(token)序列的过程。进行词法分析的程序或者函数叫作词法分析器(lexicalanalyzer,简称lexer),也叫扫描器(scanner)。词法分析器一般以函数的形式存在,供语法分析器调用。完成词法分析任务的程序称为词法分析程序或词法分析器或扫描器。完成词法分析任务的程序称为词法分析程序或词法分析器或扫描器。从左至右地对源程序进行扫描,按照语言的词法规则识别各类单词,并产生相应单词的属性字。这里的单词是一个字符串,是构成源代码的最小单位。从输入字符流中生成单词的过程叫作单词化(tokenization),在这个过程中,词法分析器还会对单词进行分类。其中,语法解析,也可以叫做语法分析,是编译过程的一个逻辑阶段。语法分析的任务是在词法分析的基础上将单词序列组合成各类语法短语,如“程序”,“语句”,“表达式”等等。语法分析程序判断源程序在结构上是否正确。源程序的结构由上下文无关文法描述。按照源语言的语法规则,从词法分析的结果中识别出相应的语法范畴,同时进行语法检查。为了提高语法解析的准确性,提高后续步骤的处理效率,可以在对该接口描述文件的内容进行解析之后,进行语法检查,判断接口描述文件在结构上是否正确,比如,对所述接口描述文件的内容之间的语法关系进行检查,若所述接口描述文件的内容之间的语法关系符合预设条件,则根据所述接口描述文件的内容之间的语法关系,确定所述接口描述文件中内容之间的结构关系。其中,预设条件设定方式可以有很多种,比如,可以根据实际应用的需求灵活设置,也可以预先设置好存储在终端中。此外,预设条件可以内置于终端中,或者,也可以保存在存储器中并发送给终端,等等。比如,对于idl文件,可以先读取idl的文本内容,去除内容中的缩进和注释后,将内容分割为单词,生成的单词随后便被用来进行语法解析。语法解析是在词法解析的基础上将单词序列组合成各类语法短语,如“程序”,“语句”,“表达式”等等。同时也进行语法检查,判断idl在结构上是否正确。103、基于预设规则构建该结构关系的语法树,并获取该语法树中节点的属性信息。其中,接口描述文件可以包括至少一个接口模块,例如,可以在该结构关系中提取该接口描述文件中接口模块的层级关系,基于该层级关系,构建该接口描述文件的语法树。比如,在该结构关系中提取该接口模块的名称,以及该接口模块中包括的数据类型;将该接口模块的名称设置为父节点,将该数据类型设置为子节点,建立该接口描述文件中的层级关系。根据接口模块的数据类型,在该接口描述文件中筛选出每种数据类型的属性信息;基于该接口模块的名称、该数据类型以及该数据类型的属性信息之间的层级关系构建该接口描述文件的语法树。则,该获取该语法树中节点的属性信息,可以包括:获取该语法树中该数据类型的属性信息。例如,通过语法解析后得到idl文件的接口模块(module),以及该接口模块中定义的数据类型,比如,枚举(enum)、结构(struct)、接口(interface)、常量(const),等等。然后,获取这些类型的属性信息,比如,定义为struct的节点的属性信息,比如,该结构属于哪个接口模块,节点名称,节点全名,拥有哪些字段节点,等等。104、根据该语法树和该节点的属性信息生成符合预设数据结构的接口对象。例如,可以在该语法树中提取节点名称,根据预设数据结构的格式对该节点名称与该节点的属性信息进行构造,得到该接口描述文件的接口对象。其中,接口对象指的是可以用于进行数据交换的对象,比如,json对象。比如,具体可以使用语言通用的数据结构json来对节点名称与该节点的属性信息进行构造,得到该接口描述文件的json对象。其中,json(javascriptobjectnotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于javascriptprogramminglanguage,standardecma-2623rdedition-december1999的一个子集。json采用完全独立于语言的文本格式,但是也使用了类似于c语言家族的习惯(包括c,c++,c#,java,javascript,perl,python等)。这些特性使json成为理想的数据交换语言。json建构于两种结构:1、“名称/值”对的集合(acollectionofname/valuepairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hashtable),有键列表(keyedlist),或者关联数组(associativearray)。2、值的有序列表(anorderedlistofvalues)。在大部分语言中,它被理解为数组(array)。这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。json具有以下这些形式:对象是一个无序的“‘名称/值’对”集合。一个对象以左括号“{”开始,右括号“}”结束。每个“名称”后跟一个冒号“:”,“‘名称/值’对”之间使用“,”逗号分隔。105、利用该接口对象对该服务端进行远程调用。例如,具体可以将生成的json对象进行封装后,存放在客户端的内存中,当客户端的主调语言对该服务端进行远程调用时,可以使用该json对象直接调用rpc程序。在整个远程过程调用中,将idl接口描述语言文件转换为全语言适用的json对象,直接是内存对象,相对于现有技术(需要将idl文件编译为主调语言的代理类文件,再发布主调服务,主调语言才可以调用rpc程序接口,且每次更新idl文件都需要服务重新编译,发布)而言,不需要编译生成代理类文件,也不需要重新发布服务,主调语言即可直接调用rpc程序,提高了研发效率。其中,主调语言指的是客户端对服务端进行主动调用时的编程语言。由上可知,本申请实施例先获取待调用的服务端的接口描述文件,然后,对该接口描述文件的内容进行解析,以确定该接口描述文件中内容之间的结构关系,接着,基于预设规则构建该结构关系的语法树,并获取该语法树中节点的属性信息,再然后,根据该语法树和该节点的属性信息生成符合预设数据结构的接口对象,再利用该接口对象对该服务端进行远程调用。由于该方案可以先对接口描述文件进行解析,再生成全语言通用的接口对象,直接是客户端的内存对象,在进行跨平台调用时无需再编译成代理类文件,也不需要重新发布服务,主调语言即可直接调用远程调用程序,而由于转换为接口对象,在每次更新接口描述文件也无需服务重新编译,再发布,所以相对于现有技术中对服务端进行远程调用时,需要将服务端的接口描述语言编译为客户端的主调语言的代理类文件,发布服务,主调语言才可以调用远程调用程序接口,而每次更新接口描述文件都需要服务重新编译、再发布的方案而言,该方案可以有效地提高远程调用的便捷性,提高了研发效率。根据上一个实施例所描述的方法,以下将举例作进一步详细说明。在本实施例中,将以该远程调用装置具体集成在客户端,tars接口描述文件为例进行说明。如图2a所示,一种远程调用方法,具体流程可以如下:201、客户端获取待调用的服务端的接口描述文件。例如,客户端具体可以在自身的存储器中获取待调用的服务端的idl文件,或者,可以获取待调用的服务端的标识,根据该标识从网络中获取对应的idl文件。202、客户端对该接口描述文件的内容进行词法解析,得到词的类型信息。例如,客户端具体可以获取该idl文件的内容,将该idl文件的内容进行词划分,对划分得到的词进行词法解析,得到每个词的类型信息。比如,可以读取idl的文本内容,去除内容中的缩进和注释后,将内容分割为单词,生成的单词随后便被用来进行语法解析。比如,以idl文件为tars文件为例进行说明,tars文件的部分代码可以如下:tars是一款开源的微服务框架,为用户提供了涉及到开发和运维的一整套解决方案,帮助一个产品或者服务快速开发、发布、部署、上线和维护。它集可扩展协议编解码、高性能rpc通信框架、名字路由与发现、发布监控、日志统计、配置管理等于一体,通过它可以快速用微服务的方式构建稳定可靠的分布式应用,并实现完整有效的服务治理。对该tars文件进行词法解析,部分词的类型信息可以如下表1所示:表1单词符号符号类型#include引入其他文件module模块名定义trom标识符struct结构体定义user_t标识符interface接口定义……由表1可以看出,经词法解析后,得到#include的类型信息为引入其他文件,module的类型信息为模块名定义,trom的类型信息为标识符,struct的类型信息为结构体定义,user_t的类型信息为标识符,interface的类型信息为接口定义,等等。203、客户端对该各个词的类型信息进行语法解析,得到词之间的语法关系。比如,客户端可以在词法解析的基础上将单词序列组合成各类语法短语,如“程序”,“语句”,“表达式”等等。语法解析判断源程序在结构上是否正确。源程序的结构由上下文无关文法描述。按照源语言的语法规则,从词法分析的结果中识别出相应的语法范畴,同时进行语法检查,判断该idl文件在结构上是否正确,等等。204、客户端根据该词之间的语法关系,确定该接口描述文件中内容之间的结构关系。比如,对该idl文件进行词法解析和语法解析后,得到该idl文件的结构关系可以如图2b所示,该idl文件可以包括引入文件#include和接口模块module,该接口模块module可以包括:枚举enum、结构struct、接口interface、常量const,等等。205、客户端基于预设规则构建该结构关系的语法树,并获取该语法树中节点的属性信息。例如,该idl文件包括接口模块trom,可以在该结构关系中提取该接口描述文件中接口模块trom的层级关系,基于该层级关系,构建该接口模块trom的语法树,也就是将树节点结构逐级嵌套组成了代表idl语法结构的树。比如,如图2c所示,以图中的struct生成树节点为例进行说明,如下:从生成的语法树可以看到user_t节点属于struct的子节点,而且user_t有自己的子节点和自己的属性来描述自己,比如,user_t节点的属性信息可以如下表2所示:表2属性属性含义module属于哪个模块name节点名fullname节点全名fields拥有哪些字段节点由表2可以看出,user_t节点的属性信息可以包括该user_t节点属于哪个模块、节点名、节点全名、以及拥有哪些字段节点,等等。比如,由该生成的语法树可以得到,user_t节点属于的模块为“module”:“trom”,节点名为“name”:“user_t”,节点全名为“fullname”:“trom::user_t”,拥有的字段节点fields包括id、score、name等等。206、客户端根据该语法树和该节点的属性信息生成符合预设数据结构的接口对象。比如,客户端具体可以根据该语法树和获取到的节点的属性信息,使用语言通用的数据结构json来对节点名称与该节点的属性信息进行构造,得到该接口描述文件的json对象。比如,可以利用json的以下形式进行构造:以左括号“{”开始,右括号“}”结束。每个“名称”后跟一个冒号“:”,“‘名称/值’对”之间使用“,”逗号分隔。207、客户端利用该接口对象对该服务端进行远程调用。例如,如图2d所示,客户端具体可以将生成的json对象进行封装后,存放在缓存器中,当客户端的主调服务调用该服务端rpc服务时,可以使用该json对象直接调用rpc程序。在整个远程过程调用中,将idl接口描述语言文件转换为全语言适用的json对象,直接是内存对象,相对于现有技术(需要将idl文件编译为主调语言的代理类文件,再发布主调服务,主调语言才可以调用rpc程序接口,且每次更新idl文件都需要服务重新编译,发布)而言,不需要编译生成代理类文件,也不需要重新发布服务,主调语言即可直接调用rpc程序,提高了研发效率。由上可知,本申请实施例先获取待调用的服务端的接口描述文件,然后,对该接口描述文件的内容进行解析,以确定该接口描述文件中内容之间的结构关系,接着,基于预设规则构建该结构关系的语法树,并获取该语法树中节点的属性信息,再然后,根据该语法树和该节点的属性信息生成符合预设数据结构的接口对象,再利用该接口对象对该服务端进行远程调用。由于该方案可以先对idl文件(接口描述文件)进行解析,再生成全语言通用的json对象,直接是客户端的内存对象,在进行跨平台调用时无需再编译成代理类文件,也不需要重新发布服务,主调语言即可直接调用rpc程序,而由于转换为json对象,在每次更新接口描述文件也无需服务重新编译,再发布,所以相对于现有技术中对服务端进行远程调用时,需要将服务端的idl文件编译为客户端的主调语言的代理类文件,发布服务,主调语言才可以调用rpc程序接口,而每次更新idl文件都需要服务重新编译、再发布的方案而言,该方案可以有效地提高远程调用的便捷性,提高了研发效率。为了更好地实施以上方法,本申请实施例还提供一种远程调用装置,如图3所示,该远程调用装置可以包括获取单元301、解析单元302、构建单元303、生成单元304和调用单元305,如下:(1)获取单元301;获取单元301,用于获取待调用的服务端的接口描述文件。例如,获取单元301,具体可以向待调用的服务端发送调用请求,其中,该调用请求可以携带服务端的标识,获取单元301可以根据该服务端的标识获取该标识对应的接口描述文件,其中,标识对应的接口描述文件可以是预先存在于获取单元301的,也可以是通过网络从服务端获取的。(2)解析单元302;解析单元302,用于对该接口描述文件的内容进行解析,以确定该接口描述文件中内容之间的结构关系。可选的,在一些实施例中,解析单元可以包括获取子单元、解析子单元和确定子单元,如下:获取子单元,用于获取该接口描述文件的内容;解析子单元,用于对该接口描述文件的内容进行语法解析,得到该接口描述文件的内容之间的语法关系;确定子单元,用于根据该接口描述文件的内容之间的语法关系,确定该接口描述文件中内容之间的结构关系。可选的,在一些实施例中,解析子单元,具体可以用于将该接口描述文件的内容进行词划分;对划分得到的词进行词法解析,得到每个词的类型信息;对该各个词的类型信息进行语法解析,得到词之间的语法关系。则,确定子单元,具体可以用于根据该词之间的语法关系,确定该接口描述文件中内容之间的结构关系。可选的,在一些实施例中,所述解析单元还可以包括去噪子单元,如下:所述去噪子单元,用于对所述接口描述文件的内容进行去噪;则所述解析子单元,具体可以用于对去噪后的接口描述文件的内容进行语法解析,得到所述接口描述文件的内容之间的语法关系。可选的,在一些实施例中,所述解析子单元,具体可以用于对所述接口描述文件的内容之间的语法关系进行检查;若所述接口描述文件的内容之间的语法关系符合预设条件,则根据所述接口描述文件的内容之间的语法关系,确定所述接口描述文件中内容之间的结构关系。(3)构建单元303;构建单元303,用于基于预设规则构建该结构关系的语法树,并获取该语法树中节点的属性信息。可选的,在一些实施例中,该接口描述文件包括至少一个接口模块,该构建单元可以包括提取子单元和构建子单元,提取子单元,用于在该结构关系中提取该接口描述文件中接口模块的层级关系;构建子单元,用于基于该层级关系,构建该接口描述文件的语法树,并获取该语法树中节点的属性信息。可选的,在一些实施例中,该提取子单元,具体可以用于在该结构关系中提取该接口模块的名称,以及该接口模块中包括的数据类型;将该接口模块的名称设置为父节点,将该数据类型设置为子节点,建立该接口描述文件中的层级关系。可选的,在一些实施例中,该构建子单元,具体可以用于根据接口模块的数据类型,在该接口描述文件中筛选出每种数据类型的属性信息;基于该接口模块的名称、该数据类型以及该数据类型的属性信息之间的层级关系构建该接口描述文件的语法树;并获取该语法树中节点的属性信息。(4)生成单元304;生成单元304,用于根据该语法树和该节点的属性信息生成符合预设数据结构的接口对象。可选的,在一些实施例中,该生成单元,具体可以用于在该语法树中提取节点名称;根据预设数据结构的格式对该节点名称与该节点的属性信息进行构造,得到该接口描述文件的接口对象。(5)调用单元305;调用单元305,用于利用该接口对象对该服务端进行远程调用。例如,具体可以利用调用单元305将生成的json对象进行封装后,存放在客户端的内存中,当客户端的主调语言对该服务端进行远程调用时,可以使用该json对象直接调用rpc程序。具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。由上可知,本申请实施例先由获取单元301获取待调用的服务端的接口描述文件,然后,由解析单元302对该接口描述文件的内容进行解析,以确定该接口描述文件中内容之间的结构关系,接着,由构建单元303基于预设规则构建该结构关系的语法树,并获取该语法树中节点的属性信息,再然后,由生成单元304根据该语法树和该节点的属性信息生成符合预设数据结构的接口对象,再由调用单元305利用该接口对象对该服务端进行远程调用。由于该方案可以先对接口描述文件进行解析,再生成全语言通用的接口对象,直接是客户端的内存对象,在进行跨平台调用时无需再编译成代理类文件,也不需要重新发布服务,主调语言即可直接调用远程调用程序,而由于转换为接口对象,在每次更新接口描述文件也无需服务重新编译,再发布,所以相对于现有技术中对服务端进行远程调用时,需要将服务端的接口描述语言编译为客户端的主调语言的代理类文件,发布服务,主调语言才可以调用远程调用程序接口,而每次更新接口描述文件都需要服务重新编译、再发布的方案而言,该方案可以有效地提高远程调用的便捷性,提高了研发效率。相应的,本申请实施例还提供一种终端,如图4所示,该终端可以包括射频(rf,radiofrequency)电路401、包括有一个或一个以上计算机可读存储介质的存储器402、输入单元403、显示单元404、传感器405、音频电路406、无线保真(wifi,wirelessfidelity)模块407、包括有一个或者一个以上处理核心的处理器408、以及电源409等部件。本领域技术人员可以理解,图4中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:rf电路401可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器408处理;另外,将涉及上行的数据发送给基站。通常,rf电路401包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(sim,subscriberidentitymodule)卡、收发信机、耦合器、低噪声放大器(lna,lownoiseamplifier)、双工器等。此外,rf电路401还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(gsm,globalsystemofmobilecommunication)、通用分组无线服务(gprs,generalpacketradioservice)、码分多址(cdma,codedivisionmultipleaccess)、宽带码分多址(wcdma,widebandcodedivisionmultipleaccess)、长期演进(lte,longtermevolution)、电子邮件、短消息服务(sms,shortmessagingservice)等。存储器402可用于存储软件程序以及模块,处理器408通过运行存储在存储器402的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器408和输入单元403对存储器402的访问。输入单元403可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,在一个具体的实施例中,输入单元403可包括触敏表面以及其他输入设备。触敏表面,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面上或在触敏表面附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器408,并能接收处理器408发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面。除了触敏表面,输入单元403还可以包括其他输入设备。具体地,其他输入设备可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。显示单元404可用于显示由用户输入的信息或提供给用户的信息以及终端的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元404可包括显示面板,可选的,可以采用液晶显示器(lcd,liquidcrystaldisplay)、有机发光二极管(oled,organiclight-emittingdiode)等形式来配置显示面板。进一步的,触敏表面可覆盖显示面板,当触敏表面检测到在其上或附近的触摸操作后,传送给处理器408以确定触摸事件的类型,随后处理器408根据触摸事件的类型在显示面板上提供相应的视觉输出。虽然在图4中,触敏表面与显示面板是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面与显示面板集成而实现输入和输出功能。终端还可包括至少一种传感器405,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板的亮度,接近传感器可在终端移动到耳边时,关闭显示面板和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于终端还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。音频电路406、扬声器,传声器可提供用户与终端之间的音频接口。音频电路406可将接收到的音频数据转换后的电信号,传输到扬声器,由扬声器转换为声音信号输出;另一方面,传声器将收集的声音信号转换为电信号,由音频电路406接收后转换为音频数据,再将音频数据输出处理器408处理后,经rf电路401以发送给比如另一终端,或者将音频数据输出至存储器402以便进一步处理。音频电路406还可能包括耳塞插孔,以提供外设耳机与终端的通信。wifi属于短距离无线传输技术,终端通过wifi模块407可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图4示出了wifi模块407,但是可以理解的是,其并不属于终端的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。处理器408是终端的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行终端的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器408可包括一个或多个处理核心;优选的,处理器408可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器408中。终端还包括给各个部件供电的电源409(比如电池),优选的,电源可以通过电源管理系统与处理器408逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源409还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。尽管未示出,终端还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,终端中的处理器408会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器402中,并由处理器408来运行存储在存储器402中的应用程序,从而实现各种功能:获取待调用的服务端的接口描述文件,然后,对该接口描述文件的内容进行解析,以确定该接口描述文件中内容之间的结构关系,接着,基于预设规则构建该结构关系的语法树,并获取该语法树中节点的属性信息,再然后,根据该语法树和该节点的属性信息生成符合预设数据结构的接口对象,再利用该接口对象对该服务端进行远程调用。以上各个操作的具体实施可参见前面的实施例,在此不再赘述。由上可知,本申请实施例先获取待调用的服务端的接口描述文件,然后,对该接口描述文件的内容进行解析,以确定该接口描述文件中内容之间的结构关系,接着,基于预设规则构建该结构关系的语法树,并获取该语法树中节点的属性信息,再然后,根据该语法树和该节点的属性信息生成符合预设数据结构的接口对象,再利用该接口对象对该服务端进行远程调用。由于该方案可以先对接口描述文件进行解析,再生成全语言通用的接口对象,在进行跨平台调用时无需再编译成代理类文件,由于转换为接口对象,在每次更新接口描述文件也无需服务重新编译,再发布,可以有效地提高远程调用的便捷性,提高了研发效率。本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。为此,本申请实施例还提供一种计算机可读存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本申请实施例所提供的任一种远程调用方法中的步骤。例如,该指令可以执行如下步骤:获取待调用的服务端的接口描述文件,然后,对该接口描述文件的内容进行解析,以确定该接口描述文件中内容之间的结构关系,接着,基于预设规则构建该结构关系的语法树,并获取该语法树中节点的属性信息,再然后,根据该语法树和该节点的属性信息生成符合预设数据结构的接口对象,再利用该接口对象对该服务端进行远程调用。以上各个操作的具体实施可参见前面的实施例,在此不再赘述。其中,该计算机可读存储介质可以包括:只读存储器(readonlymemory,rom)、随机存取记忆体(randomaccessmemory,ram)、磁盘或光盘等。由于该计算机可读存储介质中所存储的指令,可以执行本申请实施例所提供的任一种远程调用方法中的步骤,因此,可以实现本申请实施例所提供的任一种远程调用方法所能实现的有益效果,详见前面的实施例,在此不再赘述。以上对本申请实施例所提供的一种远程调用方法、装置和存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。当前第1页1 2 3 当前第1页1 2 3 
再多了解一些
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1