CN113190362B - 服务调用方法、装置、计算机设备及存储介质 - Google Patents

服务调用方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN113190362B
CN113190362B CN202110437061.4A CN202110437061A CN113190362B CN 113190362 B CN113190362 B CN 113190362B CN 202110437061 A CN202110437061 A CN 202110437061A CN 113190362 B CN113190362 B CN 113190362B
Authority
CN
China
Prior art keywords
instruction data
module
service
client
processing
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
CN202110437061.4A
Other languages
English (en)
Other versions
CN113190362A (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.)
Beijing Dajia Internet Information Technology Co Ltd
Original Assignee
Beijing Dajia Internet Information 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 Dajia Internet Information Technology Co Ltd filed Critical Beijing Dajia Internet Information Technology Co Ltd
Priority to CN202110437061.4A priority Critical patent/CN113190362B/zh
Publication of CN113190362A publication Critical patent/CN113190362A/zh
Application granted granted Critical
Publication of CN113190362B publication Critical patent/CN113190362B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1489Generic software techniques for error detection or fault masking through recovery blocks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开提供了一种服务调用方法、装置、终端及存储介质,属于计算机技术领域。该方法包括:生成客户端的第一指令数据和服务端的第二指令数据,所述第一指令数据和所述第二指令数据采用的语言不同,其中,所述客户端为指代开发框架能力的开发端,所述服务端为指代操作系统能力的原生端;或者,所述客户端为所述原生端,所述服务端为所述开发端;将所述第二指令数据中定义的服务注册到目标框架中,所述目标框架至少提供了服务注册功能和服务调用功能;响应于所述客户端对已注册的所述服务的调用请求,基于所述目标框架进行服务调用。上述方法中,在应用程序的开发阶段,开发人员可以直接通过该目标框架实现服务调用,进而提高了开发效率。

Description

服务调用方法、装置、计算机设备及存储介质
技术领域
本公开涉及计算机技术领域,特别涉及一种服务调用方法、装置、计算机设备及存储介质。
背景技术
flutter技术能够实现多平台跨端,是跨端领域中先进的技术突破,由于flutter技术具有UI(User Interface,用户界面)渲染还原度高、UI渲染性能好等优点,所以日渐得到开发者的青睐,越来越多的开发者会使用flutter进行开发。但是,在使用flutter进行开发时,在需要调用操作系统提供的能力时,调用过程较为复杂,一定程度的影响了开发效率。
发明内容
本公开提供一种服务调用方法、装置、计算机设备及存储介质,能够提高开发效率。本公开的技术方案如下:
根据本公开实施例的第一方面,提供一种服务调用方法,该方法包括:
生成客户端的第一指令数据和服务端的第二指令数据,所述第一指令数据和所述第二指令数据采用的语言不同;其中,所述客户端为指代开发框架能力的开发端,所述服务端为指代操作系统能力的原生端;或者,所述客户端为所述原生端,所述服务端为所述开发端;
将所述第二指令数据中定义的服务注册到目标框架中,所述目标框架至少提供了服务注册功能和服务调用功能;
响应于所述客户端对已注册的所述服务的调用请求,基于所述目标框架进行服务调用。
在一些实施例中,所述生成客户端的第一指令数据和服务端的第二指令数据,包括:
在目标存储路径下存储协议文件;
基于所述目标存储路径下存储的协议文件,生成所述客户端的第一模板指令数据和所述服务端的第二模板指令数据;
响应于继承于所述第一模板指令数据的指令,获取所输入的第三指令数据,为所述第一模板指令数据填充所述第三指令数据,得到所述第一指令数据;
响应于继承于所述第二模板指令数据的指令,获取所输入的第四指令数据,为所述第二模板指令数据填充所述第四指令数据,得到所述第二指令数据。
在另一些实施例中,所述基于所述目标存储路径下存储的协议文件,生成所述客户端的第一模板指令数据和所述服务端的第二模板指令数据,包括:
执行指令数据生成指令,所述指令数据生成指令用于指示生成模板指令数据;
响应于所述指令数据生成指令,遍历所述目标存储路径下存储的协议文件,基于遍历到的协议文件生成模板指令数据;其中,所生成的模板指令数据包括所述客户端的第一模板指令数据和所述服务端的第二模板指令数据。
在另一些实施例中,所述基于所述指令数据生成指令,遍历所述目标存储路径下存储的协议文件,基于遍历到的协议文件生成模板指令数据,包括:
响应于所述指令数据生成指令,基于所述目标存储路径调用脚本文件,所述脚本文件用于触发生成指令数据;
通过运行所述脚本文件,遍历所述目标存储路径下存储的协议文件,基于遍历到的协议文件生成模板指令数据。
在另一些实施例中,所述将所述第二指令数据中定义的服务注册到目标框架中,包括:
调用所述目标框架提供的服务注册接口,将所述服务注册到所述目标框架中。
在另一些实施例中,所述目标框架包括初始化模块、参数校验模块、序列化模块、第一编码模块和通信模块;
所述初始化模块,用于响应于对任一服务的调用请求,进行初始化处理;
所述参数校验模块,用于在初始化处理后,对所述调用请求中的参数进行校验;
所述序列化模块,用于响应于所述调用请求中的参数校验通过,对所述调用请求进行序列化处理;
所述第一编码模块,用于对序列化处理后的所述调用请求进行编码处理;
所述通信模块,用于通过第一通道,向所述服务端发送编码处理后的所述调用请求。
在另一些实施例中,所述目标框架还包括:第一解码模块、第一反序列化模块、服务路由模块、容错处理模块、第二序列化模块、第二编码模块;
所述第一解码模块,用于响应于通过所述第一通道接收到所述服务调用请求,对所述服务调用请求进行解码处理;
所述第一反序列化模块,用于对解码处理后的所述服务调用请求进行反序列化处理;
所述服务路由模块,用于对反序列化处理后的所述服务调用请求对应的服务进行查询;
所述第二序列化模块,用于在查询到所述服务的情况下,调用所述服务,将得到的响应数据进行序列化处理;
所述第二编码模块,用于对序列化处理后的所述响应数据进行编码处理;
所述通信模块,还用于通过所述第一通道,向所述客户端发送编码处理后的所述响应数据;
所述容错处理模块,用于在未查询到所述服务的情况下进行报错处理。
在另一些实施例中,所述目标框架还包括:第二解码模块和第二反序列化模块;
所述第二解码模块,用于响应于通过所述第一通道接收到所述响应数据,对所述响应数据进行解码处理;
所述第二反序列化模块,用于对解码处理后的所述响应数据进行反序列化处理。
根据本公开实施例的第二方面,提供一种服务调用装置,该装置包括:
生成单元,被配置为执行生成客户端的第一指令数据和服务端的第二指令数据,所述第一指令数据和所述第二指令数据采用的语言不同;其中,所述客户端为指代开发框架能力的开发端,所述服务端为指代操作系统能力的原生端;或者,所述客户端为所述原生端,所述服务端为所述开发端;
注册单元,被配置为执行将所述第二指令数据中定义的服务注册到目标框架中,所述目标框架至少提供了服务注册功能和服务调用功能;
调用单元,被配置为执行响应于所述客户端对已注册的所述服务的调用请求,基于所述目标框架进行服务调用。
在一些实施例中,所述生成单元,包括:
第一生成子单元,被配置为执行在目标存储路径下存储协议文件;
第二生成子单元,被配置为执行基于所述目标存储路径下存储的协议文件,生成所述客户端的第一模板指令数据和所述服务端的第二模板指令数据;
填充子单元,被配置为执行响应于继承于所述第一模板指令数据的指令,获取所输入的第三指令数据,为所述第一模板指令数据填充所述第三指令数据,得到所述第一指令数据;
响应于继承于所述第二模板指令数据的指令,获取所输入的第四指令数据,为所述第二模板指令数据填充所述第四指令数据,得到所述第二指令数据。
在另一些实施例中,所述第二生成子单元,被配置为执行执行指令数据生成指令,所述指令数据生成指令被配置为执行指示生成模板指令数据;响应于所述指令数据生成指令,遍历所述目标存储路径下存储的协议文件,基于遍历到的协议文件生成模板指令数据;其中,所生成的模板指令数据包括所述客户端的第一模板指令数据和所述服务端的第二模板指令数据。
在另一些实施例中,所述第二生成子单元,被配置为执行响应于所述指令数据生成指令,基于所述目标存储路径调用脚本文件,所述脚本文件被配置为执行触发生成指令数据;通过运行所述脚本文件,遍历所述目标存储路径下存储的协议文件,基于遍历到的协议文件生成模板指令数据。
在另一些实施例中,所述注册单元,被配置为执行调用所述目标框架提供的服务注册接口,将所述服务注册到所述目标框架中。
在另一些实施例中,所述目标框架包括初始化模块、参数校验模块、序列化模块、第一编码模块和通信模块;
所述初始化模块,被配置为执行响应于对任一服务的调用请求,进行初始化处理;
所述参数校验模块,被配置为执行在初始化处理后,对所述调用请求中的参数进行校验;
所述序列化模块,被配置为执行响应于所述调用请求中的参数校验通过,对所述调用请求进行序列化处理;
所述第一编码模块,被配置为执行对序列化处理后的所述调用请求进行编码处理;
所述通信模块,被配置为执行通过第一通道,向所述服务端发送编码处理后的所述调用请求。
在另一些实施例中,所述目标框架还包括:第一解码模块、第一反序列化模块、服务路由模块、容错处理模块、第二序列化模块、第二编码模块;
所述第一解码模块,被配置为执行响应于通过所述第一通道接收到所述服务调用请求,对所述服务调用请求进行解码处理;
所述第一反序列化模块,被配置为执行对解码处理后的所述服务调用请求进行反序列化处理;
所述服务路由模块,被配置为执行对反序列化处理后的所述服务调用请求对应的服务进行查询;
所述第二序列化模块,被配置为执行在查询到所述服务的情况下,调用所述服务,将得到的响应数据进行序列化处理;
所述第二编码模块,被配置为执行对序列化处理后的所述响应数据进行编码处理;
所述通信模块,还被配置为执行通过所述第一通道,向所述客户端发送编码处理后的所述响应数据;
所述容错处理模块,被配置为执行在未查询到所述服务的情况下进行报错处理。
在另一些实施例中,所述目标框架还包括:第二解码模块和第二反序列化模块;
所述第二解码模块,被配置为执行响应于通过所述第一通道接收到所述响应数据,对所述响应数据进行解码处理;
所述第二反序列化模块,被配置为执行对解码处理后的所述响应数据进行反序列化处理。
根据本公开实施例的第三方面,提供一种计算机设备,所述计算机设备包括:
一个或多个处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现上述服务调用方法。
根据本公开实施例的第四方面,提供一种计算机可读存储介质,当所述计算机可读存储介质中的指令由计算机设备的处理器执行时,使得所述计算机设备能够执行上述服务调用方法。
根据本公开实施例的第五方面,提供了一种计算机程序产品,包括计算机指令,所述计算机指令被处理器执行时实现上述服务调用方法。
本公开实施例提供的技术方案至少带来以下有益效果:
在本公开实施例中,提供了一种目标框架,该目标框架具备服务注册功能和服务调用功能。开发人员在生成客户端和服务端的指令数据之后,能够将定义的服务注册到目标框架中,从而利用目标框架实现客户端对已注册的服务的调用,这样,在应用程序的开发阶段,开发人员可以直接通过该目标框架实现服务调用,进而提高了开发效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是根据一示例性实施例示出的一种服务调用方法的流程图;
图2是根据一示例性实施例示出的另一种服务调用方法的流程图;
图3是根据一示例性实施例示出的另一种服务调用方法的流程图;
图4是根据一示例性实施例示出的一种服务调用装置的框图;
图5是根据一示例性实施例示出的一种计算机设备的框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。另外,本公开所涉及的用户数据可以为经用户授权或者经过各方充分授权的数据。
以下对本公开实施例涉及的名词进行解释。
flutter:flutter是一款用于应用程序开发的开发框架;在flutter框架中,基于一个代码文件可以分别生成适用于iOS操作系统和安卓操作系统的应用程序安装包。
ProtoBuf(Protocol Buffers):ProtoBuf是一个协议数据交换格式工具库,也即ProtoBuf为确定数据存储格式的一种协议。
iOS:一种操作系统。
Dart:一种能够应用于flutter框架中的计算机编程语言。
RPC(Remote Procedure Call,远程过程调用):一个节点请求另一个节点提供数据服务。
gRPC(Google Remote Procedure Call):一个开源的RPC框架,同时面向客户端和服务端。
客户端:服务调用请求发起的一端。
服务端:对服务调用请求进行处理,得到响应数据的一端。
本公开实施例提供了一种服务调用方法,该方法利用ProtoBuf协议和RPC技术,并与flutter使用场景相结合,按照RPC协议实现了一种目标框架,该目标框架具备服务注册功能和服务调用功能。开发人员在编写好基于ProtoBuf协议的指令数据之后,能够将定义的服务注册到目标框架中,从而利用目标框架实现客户端和服务端之间的服务调用。该目标框架可以作为方便flutter开发者的提效工具,具有自动化、大规模、安全性、可扩展、易维护等特点,让开发人员只关注核心逻辑,不用关注担心与核心逻辑不相关的其他事务。并且,由于基于ProtoBuf协议的指令数据具有强类型的特性,能够保证指令数据的类型安全。
本公开实施例提供的服务调用方法由计算机设备实现。在一些实施例中,该计算机设备为智能手机、台式电脑、手提电脑、平板电脑和膝上型便携计算机等设备等。
图1是根据一示例性实施例示出的一种服务调用方法的流程图,如图1所示,该服务调用方法包括以下步骤:
在步骤S11中,生成客户端的第一指令数据和服务端的第二指令数据,该第一指令数据和该第二指令数据采用的语言不同;其中,该客户端为指代开发框架能力的开发端,该服务端为指代操作系统能力的原生端;或者,该客户端为该原生端,该服务端为该开发端;
在步骤S12中,将该第二指令数据中定义的服务注册到目标框架中,该目标框架至少提供了服务注册功能和服务调用功能;
在步骤S13中,响应于该客户端对已注册的该服务的调用请求,基于该目标框架进行服务调用。
在一些实施例中,该生成客户端的第一指令数据和服务端的第二指令数据,包括:
在目标存储路径下存储协议文件;
基于该目标存储路径下存储的协议文件,生成该客户端的第一模板指令数据和该服务端的第二模板指令数据;
响应于继承于该第一模板指令数据的指令,获取所输入的第三指令数据,为该第一模板指令数据填充该第三指令数据,得到该第一指令数据;
响应于继承于该第二模板指令数据的指令,获取所输入的第四指令数据,为该第二模板指令数据填充该第四指令数据,得到该第二指令数据。
在另一些实施例中,该基于该目标存储路径下存储的协议文件,生成该客户端的第一模板指令数据和该服务端的第二模板指令数据,包括:
执行指令数据生成指令,该指令数据生成指令用于指示生成模板指令数据;
响应于该指令数据生成指令,遍历该目标存储路径下存储的协议文件,基于遍历到的协议文件生成模板指令数据;其中,所生成的模板指令数据包括该客户端的第一模板指令数据和该服务端的第二模板指令数据。
在另一些实施例中,该基于该指令数据生成指令,遍历该目标存储路径下存储的协议文件,基于遍历到的协议文件生成模板指令数据,包括:
响应于该指令数据生成指令,基于该目标存储路径调用脚本文件,该脚本文件用于触发生成指令数据;
通过运行该脚本文件,遍历该目标存储路径下存储的协议文件,基于遍历到的协议文件生成模板指令数据。
在另一些实施例中,该将该第二指令数据中定义的服务注册到目标框架中,包括:
调用该目标框架提供的服务注册接口,将该服务注册到该目标框架中。
在另一些实施例中,该目标框架包括初始化模块、参数校验模块、序列化模块、第一编码模块和通信模块;
该初始化模块,用于响应于对任一服务的调用请求,进行初始化处理;
该参数校验模块,用于在初始化处理后,对该调用请求中的参数进行校验;
该序列化模块,用于响应于该调用请求中的参数校验通过,对该调用请求进行序列化处理;
该第一编码模块,用于对序列化处理后的该调用请求进行编码处理;
该通信模块,用于通过第一通道,向该服务端发送编码处理后的该调用请求。
在另一些实施例中,该目标框架还包括:第一解码模块、第一反序列化模块、服务路由模块、容错处理模块、第二序列化模块、第二编码模块;
该第一解码模块,用于响应于通过该第一通道接收到该服务调用请求,对该服务调用请求进行解码处理;
该第一反序列化模块,用于对解码处理后的该服务调用请求进行反序列化处理;
该服务路由模块,用于对反序列化处理后的该服务调用请求对应的服务进行查询;
该第二序列化模块,用于在查询到该服务的情况下,调用该服务,将得到的响应数据进行序列化处理;
该第二编码模块,用于对序列化处理后的该响应数据进行编码处理;
该通信模块,还用于通过该第一通道,向该客户端发送编码处理后的该响应数据;
该容错处理模块,用于在未查询到该服务的情况下进行报错处理。
在另一些实施例中,该目标框架还包括:第二解码模块和第二反序列化模块;
该第二解码模块,用于响应于通过该第一通道接收到该响应数据,对该响应数据进行解码处理;
该第二反序列化模块,用于对解码处理后的该响应数据进行反序列化处理。
在本公开实施例中,提供了一种目标框架,该目标框架具备服务注册功能和服务调用功能。开发人员在生成客户端和服务端的指令数据之后,能够将定义的服务注册到目标框架中,从而利用目标框架实现客户端对已注册的服务的调用,这样,在应用程序的开发阶段,开发人员可以直接通过该目标框架实现服务调用,进而提高了开发效率。
图2是根据一示例性实施例示出的一种服务调用方法的流程图,如图2所示,该服务调用方法应用于计算机设备,该方法包括以下步骤:
步骤S21:计算机设备在目标存储路径下存储协议文件。
其中,该目标存储路径用于存储生成的协议文件,可以为应用程序工程项目中指定的文件路径。
在一些实施例中,该协议文件基于ProtoBuf协议生成,由于ProtoBuf协议与平台无关、与语言无关、可扩展,可用于通讯协议、数据存储等领域的序列化结构数据格式。该协议文件可以为开发人员基于ProtoBuf协议编写得到的,例如,该协议文件的文件名后缀为“.proto”。该协议文件中的内容可由开发人员根据需求进行配置,例如该协议文件中定义了抽象方法的参数等。
本公开实施例中,在对应用程序进行开发时,在使用目标框架的应用程序工程项目中,开发人员在该目标存储路径下创建协议文件,以便后续基于该协议文件生成基于ProtoBuf协议的指令数据。
步骤S22:计算机设备基于该目标存储路径下存储的协议文件,生成客户端的第一模板指令数据和服务端的第二模板指令数据。
本公开实施例中,开发人员可以在开发框架中生成客户端和服务端的指令数据,该指令数据包括至少一条待执行的指令,该指令数据也可以称为代码。在生成客户端和服务端的指令数据之后,即可利用已实现的目标框架来实现服务调用。
其中,该开发框架可以为任一用来开发应用程序的开发框架。在一些实施例中,该开发框架为flutter框架。由于flutter开发涉及Dart、OC、Java三种语言,需要生成不同语言的指令数据,因此选择了ProtoBuf这种与语言无关的协议来生成指令数据。
其中,该客户端为指代开发框架能力的开发端,该服务端为指代操作系统能力的原生端;或者,该客户端为该原生端,该服务端为该开发端。原生端包括第一原生端或第二原生端的至少一种;该第一原生端基于第一操作系统支持的语言实现,该第二原生端基于第二操作系统支持的语言实现。
例如,开发端可以为flutter端,则开发端对应的指令数据所采用的语言为Dart语言;第一操作系统可以为安卓操作系统,则第一原生端对应的指令数据所采用的语言为Java语言;第二操作系统可以为iOS操作系统,则第二原生端对应的指令数据所采用的语言为OC语言。
例如,flutter框架中包括三端:flutter端、安卓端和iOS端,flutter端负责UI框架和逻辑梳理,flutter端指代开发框架的能力,安卓端和iOS端负责底层调用,安卓端指代安卓操作系统的能力,iOS端指代iOS操作系统的能力,则在开发过程中flutter端作为开发端,安卓端和iOS端均可作为原生端,而开发端和原生端中的任一端均可作为客户端,另一端作为服务端,由客户端调用服务端提供的服务。
在一些实施例中,开发框架具备自动生成模板指令数据的能力,因此能够基于该目标存储路径下存储的协议文件,生成客户端的第一模板指令数据和服务端的第二模板指令数据。
在一些实施例中,计算机设备通过执行数据生成指令来触发自动生成模板指令数据的过程,相应的,步骤S21的实现方式包括以下步骤(1)-(2):
(1)计算机设备执行指令数据生成指令,该指令数据生成指令用于指示生成模板指令数据。
在本步骤中,开发人员若需求得到模板指令数据,则可以在计算机设备中输入用于生成模板指令数据的指令数据生成指令;计算机设备获取到所输入的指令数据生成指令,然后执行该指令数据生成指令。
(2)计算机设备响应于该指令数据生成指令,遍历该目标存储路径下存储的协议文件,基于遍历到的协议文件生成模板指令数据;
计算机设备采用遍历的方式,每遍历到该目标存储路径下存储的一个协议文件,就基于该协议文件生成模板指令数据,直至目标存储路径下存储的每个协议文件均遍历完成,能够确保每个协议文件都能生成对应的模板指令数据,而不会发生遗漏协议文件的情况,所以提高了安全性。在一些实施例中,计算机设备对多个协议文件进行排序,从前向后依次生成每个协议文件对应的模板指令数据。其中计算机设备可以采用默认的排序规则,或者开发人员自定义的排序规则。
其中,由于协议文件中定义了客户端与服务端,因此所生成的模板指令数据包括该客户端的第一模板指令数据和该服务端的第二模板指令数据。
在一些实施例中,计算机设备通过运行脚本文件来得到模板指令数据,相应的,步骤(2)的实现方式可以为:计算机设备响应于该指令数据生成指令,基于该目标存储路径调用脚本文件,该脚本文件用于触发生成指令数据;通过运行该脚本文件,遍历该目标存储路径下存储的协议文件,基于遍历到的协议文件生成模板指令数据。
其中,该脚本文件是基于一种计算机编程语言生成的;例如,该计算机编程语言可以为SHELL语言。在该实施例中,该脚本文件为开发人员事先通过计算机设备编写好的脚本文件,这样,在执行指令数据生成指令时,计算机设备能够直接调用该脚本文件,以节省模板指令数据的生成时间。
需要说明的一点是,计算机设备基于每个协议文件可以生成至少一个模板指令数据,并且,该第一模板指令数据和第二模板指令数据中均包括至少一条模板指令。
在该实施例中,由于目标存储路径中可以存储有多个协议文件,则在执行指令数据生成指令时,能够自动根据协议文件生成相应的模板指令数据,从而无需开发人员手动编写模板指令数据,实现模板指令数据的批量生成,进而提高了开发效率。
在本公开实施例中,在得到模板指令数据之后,计算机设备存储该模板指令数据。由于生成的模板指令数据包括客户端和服务端的模板指令数据,则计算机设备将得到的模板指令数据分别存储在客户端和服务端对应的存储路径中。其中,flutter端、安卓端和iOS端对应的存储路径均是按照编译器的需求进行配置的,将每端的指令数据存储于每端对应的存储路径中,便于后续对这些指令数据进行编译。
在本公开实施例中,由于可以通过执行数据生成指令来得到模板指令数据,从而开发人员仅需触发计算机设备执行指令数据生成指令即可,无需手动编写大量的模板指令数据,进而提高了开发效率。
另外,开发人员还可以在目标存储路径中继续存储新的协议文件,实现对协议文件的更新,并在计算机设备中输入用于生成模板指令数据的指令数据生成指令,计算机设备响应于该指令数据生成指令,会重新执行批量生成模板指令数据的步骤,从而实现对模板指令数据的更新。
在另一些实施例中,开发人员通过计算机设备按照协议文件自行编写模板指令数据,相应的,计算机设备获取开发人员输入的第一模板指令数据和第二模板指令数据。
步骤S23:计算机设备响应于继承于该第一模板指令数据的指令,获取所输入的第三指令数据,为该第一模板指令数据填充该第三指令数据,得到该客户端的第一指令数据。
其中,第一模板指令数据中包含至少一个类所对应的方法,且该方法不包含实例,也即该方法没有具体实现的逻辑,则开发人员在使用第一模板指令数据时,需通过计算机设备为该方法提供至少一个实例;相应的,该第三指令数据为用于实现该方法的实例的指令数据。
在本步骤中,计算机设备响应于继承于该第一模板指令数据的指令,获取所输入的第三指令数据的实现方式可以为:开发人员通过计算机设备输入继承于该第一模板指令数据的指令,计算机设备响应于该继承于该第一模板指令数据的指令,列举该第一模板指令数据所包含的方法,开发人员通过计算机设备输入基于该方法的第三指令数据,则计算机设备获取该第三指令数据,从而为该第一模板指令数据填充该第三指令数据,得到该客户端的第一指令数据,该第一指令数据即为该客户端最终的指令数据。
步骤S24:计算机设备响应于继承于该第二模板指令数据的指令,获取所输入的第四指令数据,为该第二模板指令数据填充该第四指令数据,得到该服务端的第二指令数据,该第一指令数据和该第二指令数据采用的语言不同。
例如,在客户端为flutter端时,第一指令数据采用的语言为Dart语言;在服务端为第一原生端时,第二指令数据采用的语言为Java语言。
在一些实施例中,该步骤的实现方式与步骤S23的实现方式相似,在此不再赘述。需要说明的一点是,由于步骤S23与步骤S24分别为得到第一指令数据和得到第二指令数据的步骤,因此,本公开对步骤S23和步骤S24的执行顺序不作具体限定;例如,步骤S23和步骤S24可以同时执行;或者,先执行S23,再执行步骤S24;或者,先执行步骤S24,再执行步骤S23。
在本公开实施例中,由于仅需在模板指令数据的基础上填充开发人员所需的核心逻辑,也即第三指令数据或者第四指令数据,即可得到客户端的第一指令数据和服务端的第二指令数据,这样,开发人员只需关注核心逻辑,不用关注担心与核心逻辑不相关的其他事务,从而提高了开发效率,还避免了一些编写错误情况的发生。
在另一些实施例中,开发人员通过计算机设备按照协议文件自行编写第一指令数据和第二指令数据,而无需计算机设备执行上述步骤S23和步骤S24,相应的,计算机设备获取开发人员输入的第一指令数据和第二指令数据。
在本公开实施例中,由于服务端为提供服务的一端,则在得到第二指令数据时,计算机设备将该第二指令数据中定义的服务进行注册,相应的,计算机设备执行步骤S25的操作。
步骤S25:计算机设备将该第二指令数据中定义的服务注册到目标框架中,该目标框架至少提供了服务注册功能和服务调用功能。
其中,该目标框架为基于RPC协议生成的;例如,开发人员事先基于RPC协议编写得到该目标框架。本公开对RPC协议的选择不作具体限定,例如,该RPC协议可以为gRPC协议、Thrift(一种RPC框架)协议、Dubbo(一种RPC框架)协议等。
该目标框架提供有服务注册接口,相应的,计算机设备将该第二指令数据中定义的服务注册到目标框架中的实现方式可以为:计算机设备调用该目标框架提供的服务注册接口,将该服务注册到该目标框架中。
在该实现方式中,目标框架中注册的服务至少包含该服务的服务包标识。其中,该服务包标识可以为该服务的名称;例如,打开手电筒等。
在本公开实施例中,由于可以基于目标框架提供的服务注册接口将服务端提供的服务注册到目标框架中,从而实现了将服务端提供的服务共享给客户端,也即客户端可以通过目标框架得知服务端所提供的服务,进而为后续进行服务的调用提供支持。
步骤S26:计算机设备响应于该客户端对已注册的该服务的调用请求,基于该目标框架进行服务调用。
其中,目标框架的应用场景可以为flutter端和原生端(native)之间的数据交互,也即服务调用,这就涉及到两种调用情况:flutter端调用原生端提供的服务,或者,原生端调用flutter端提供的服务。因此,本公开实施例对服务端和客户端的设置并不限定,在不同的业务场景下,flutter端和原生端的角色分工可以不同,也即是flutter端和原生端都可能是服务端,也有可能是客户端。
由于涉及到双端的数据交互,因此目标框架提供了用来传输数据的通道(channel)。该通道至少包括第一通道和第二通道,第一通道和第二通道不同;其中,第一通道(Flutter2Native Channel)为flutter端调用原生端的服务时依赖的底层通道;第二通道(Native2Flutter Channel)为原生端调用flutter端的服务时依赖的底层通道。
在一些实施例中,在开发过程中,可能遇到flutter端调用原生端的服务来获取操作系统的相关信息的情况,则数据流向为flutter端(Dart Client Manager)——第一通道——原生端(Native Server Manager),也即客户端(Client)为flutter端,服务端(Server)为原生端,则flutter端触发服务的调用请求,计算机设备基于该目标框架对该调用请求进行处理,以实现服务调用。
在另一些实施例中,还可能遇到原生端调用flutter端的服务来的情况,例如,通知(notification)处理、获取flutter端中的业务数据等。此时,数据流向为原生端(NativeClient Manager)——第二通道——flutter端(Dart Server Manager),也即客户端为原生端,服务端为flutter端,此种情况下的服务调用与上述实施例同理,在此不再赘述。
其中,Dart Client Manager:用于管理flutter端作为客户端调用原生端的服务;
Dart Server Manager:用于管理flutter端作为服务端向原生端提供服务;
Native Client Manager:用于原生端作为客户端调用flutter端的服务;
Native Server Manager:用于管理原生端作为服务端向flutter端提供服务。
在本公开实施例中,该目标框架包括初始化模块、参数校验模块、序列化模块、第一编码模块和通信模块。
该初始化模块,用于响应于对任一服务的调用请求,进行初始化处理;
该参数校验模块,用于在初始化处理后,对该调用请求中的参数进行校验;
该序列化模块,用于响应于该调用请求中的参数校验通过,对该调用请求进行序列化处理;
该第一编码模块,用于对序列化处理后的该调用请求进行编码处理;
该通信模块,用于通过第一通道,向该服务端发送编码处理后的该调用请求。
参见图3,在该实施例中以开发端为flutter端为例,并且列举出了两种情况,一种是flutter端为客户端且原生端为服务器端,另一种是flutter端为服务器且原生端为客户端的情况。无论是上述哪种情况,客户端调用服务端所提供服务的过程均是同理的。在基于该目标框架进行服务调用的过程中,目标框架开始运行,从而执行以下步骤以实现向服务端发送客户端的调用请求:
(1)运行初始化模块,响应于对任一服务的调用请求,进行初始化处理。
其中,该初始化处理用于设置目标框架在运行过程中所需的信息;该信息至少包括用于数据交互的通道。例如,该通道可以为第一通道。
(2)运行参数校验模块,在初始化处理后,对该调用请求中的参数进行校验。
在本公开实施例中,通过对调用请求中的参数进行校验,使得校验通过的调用请求才能发送到服务端,而对于校验不通过的调用请求,计算机设备无需再执行后续操作,这样,提高了调用的效率。
(3)运行序列化模块,响应于该调用请求中的参数校验通过,对该调用请求进行序列化处理。
(4)运行第一编码模块,对序列化处理后的该调用请求进行编码处理。
(5)运行通信模块,通过第一通道,向该服务端发送编码处理后的该调用请求。
在本公开实施例中,由于在目标框架中提供了初始化模块、参数校验模块、序列化模块、第一编码模块和通信模块,使得开发人员无需编写指令数据,只需选择需要的模块来实现向服务端发送客户端的调用请求的操作,框架的自动化程度较高。
在该实施例中,该目标框架还包括:第一解码模块、第一反序列化模块、服务路由模块、容错处理模块、第二序列化模块、第二编码模块;
该第一解码模块,用于响应于通过该第一通道接收到该服务调用请求,对该服务调用请求进行解码处理;
该第一反序列化模块,用于对解码处理后的该服务调用请求进行反序列化处理;
该服务路由模块,用于对反序列化处理后的该服务调用请求对应的服务进行查询;
该第二序列化模块,用于在查询到该服务的情况下,调用该服务,将得到的响应数据进行序列化处理;
该第二编码模块,用于对序列化处理后的该响应数据进行编码处理;
该通信模块,还用于通过该第一通道,向该客户端发送编码处理后的该响应数据;
该容错处理模块,用于在未查询到该服务的情况下进行报错处理。
相应的,继续参见图3,计算机设备执行以下步骤以实现服务端接收客户端的调用请求:
(1)运行第一解码模块,响应于通过该第一通道接收到该服务调用请求,对该服务调用请求进行解码处理。
在本公开实施例中,通过在数据交互过程中,对调用请求进行编码以及解码,保证了数据的安全性。
(2)运行第一反序列化模块,对解码处理后的该服务调用请求进行反序列化处理。
(3)运行服务路由模块,对反序列化处理后的该服务调用请求对应的服务进行查询。
(4)在查询到该服务的情况下,运行第二序列化模块,调用该服务,将得到的响应数据进行序列化处理。
在该步骤中,服务端执行该服务对应的第二指令数据中的方法,得到响应数据;例如,该响应数据可以为返回值。其中,该调用请求携带有方法标识和服务包标识;从第二指令数据中匹配得到该方法的实现方式可以为:服务端从调用请求中提取该服务包标识和方法标识,从第二指令数据中确定与该服务包标识和方法标识均对应的方法。
(5)运行第二编码模块,对序列化处理后的该响应数据进行编码处理。
(6)运行通信模块,通过第一通道,向该客户端发送编码处理后的该响应数据。
(7)运行容错处理模块,在未查询到该服务的情况下进行报错处理。
在未查询到该服务的情况下,服务端可以进行报错处理,生成日志文件,该日志文件用于指示未查询到该服务,也即并未得到响应数据;相应的,服务端通过第一通道向客户端发送该日志文件。其中,服务端发送该日志文件的过程与发送响应数据的过程相似,在此不再赘述。
在本公开实施例中,即使在服务端未查询到该服务,计算机设备也能根据该日志文件继续运行目标框架,因此,该目标框架的可靠性较高。
在本公开实施例中,由于在目标框架中提供了第一解码模块、第一反序列化模块、服务路由模块、容错处理模块、第二序列化模块、第二编码模块,使得开发人员只需选择需要的模块来实现服务端基于调用请求向客户端发送响应数据的操作,框架的自动化程度较高。
在该实施例中,该目标框架还包括:第二解码模块和第二反序列化模块;
该第二解码模块,用于响应于通过该第一通道接收到该响应数据,对该响应数据进行解码处理;
该第二反序列化模块,用于对解码处理后的该响应数据进行反序列化处理。
相应的,继续参见图3,计算机设备执行以下步骤以实现客户端接收服务端的响应数据:
(1)运行第二解码模块,响应于通过该第一通道接收到该响应数据,对该响应数据进行解码处理。
(2)运行第二反序列化模块,对解码处理后的该响应数据进行反序列化处理。
其中,计算机设备根据反序列化处理之后的响应数据继续执行客户端的第一指令数据。
在本公开实施例中,由于在目标框架中提供了第二解码模块和第二反序列化模块,使得开发人员只需选择需要的模块来实现客户端对响应数据处理的操作,框架的自动化程度较高。
由于本公开提供的目标框架包括多个模块,每个模块集成了一定的功能,则在开发过程中,开发人员可以选择需要的模块进行服务调用,从而指令数据的层次结构较为明显,可见,本公开提供的目标框架是一种层次结构明显的框架;并且,开发人员还可以根据需要对任一模块进行设置和修改,可见,该目标框架的可扩展性较强、健壮性较高。
在本公开实施例中,无论是flutter端作为客户端,原生端作为服务端,还是flutter端作为服务端,原生端作为客户端,目标框架都提供了同质化处理,双端的调用方式基本一样,也即双端一致性较高,因此掌握了一端的调用,另一端也基本掌握了,这样消除了平台理解差异,降低了使用目标框架进行开发的开发人员的理解成本,易读性较高,从而能够改善开发人员的使用体验以及方便使用。
图4是根据一示例性实施例示出的一种服务调用装置400的框图。参照图4,该装置400包括:生成单元401、注册单元402以及调用单元403。
生成单元401,被配置为执行生成客户端的第一指令数据和服务端的第二指令数据,该第一指令数据和该第二指令数据采用的语言不同;其中,该客户端为指代开发框架能力的开发端,该服务端为指代操作系统能力的原生端;或者,该客户端为该原生端,该服务端为该开发端;
注册单元402,被配置为执行将该第二指令数据中定义的服务注册到目标框架中,该目标框架按照RPC协议生成,该目标框架至少提供了服务注册功能和服务调用功能;
调用单元403,被配置为执行响应于该客户端对已注册的该服务的调用请求,基于该目标框架进行服务调用。
在一些实施例中,该生成单元401,包括:
第一生成子单元,被配置为执行在目标存储路径下存储协议文件;
第二生成子单元,被配置为执行基于该目标存储路径下存储的协议文件,生成该客户端的第一模板指令数据和该服务端的第二模板指令数据;
第一填充子单元,被配置为执行响应于继承于该第一模板指令数据的指令,获取所输入的第三指令数据,为该第一模板指令数据填充该第三指令数据,得到该第一指令数据;
第二填充子单元,被配置为执行响应于继承于该第二模板指令数据的指令,获取所输入的第四指令数据,为该第二模板指令数据填充该第四指令数据,得到该第二指令数据。
在另一些实施例中,该第二生成子单元,被配置为执行执行指令数据生成指令,该指令数据生成指令被配置为执行指示生成模板指令数据;响应于该指令数据生成指令,遍历该目标存储路径下存储的协议文件,基于遍历到的协议文件生成模板指令数据;其中,所生成的模板指令数据包括该客户端的第一模板指令数据和该服务端的第二模板指令数据。
在另一些实施例中,该第二生成子单元,被配置为执行响应于该指令数据生成指令,基于该目标存储路径调用脚本文件,该脚本文件被配置为执行触发生成指令数据;通过运行该脚本文件,遍历该目标存储路径下存储的协议文件,基于遍历到的协议文件生成模板指令数据。
在另一些实施例中,该注册单元402,被配置为执行调用该目标框架提供的服务注册接口,将该服务注册到该目标框架中。
在另一些实施例中,该目标框架包括初始化模块、参数校验模块、序列化模块、第一编码模块和通信模块;
该初始化模块,被配置为执行响应于对任一服务的调用请求,进行初始化处理;
该参数校验模块,被配置为执行在初始化处理后,对该调用请求中的参数进行校验;
该序列化模块,被配置为执行响应于该调用请求中的参数校验通过,对该调用请求进行序列化处理;
该第一编码模块,被配置为执行对序列化处理后的该调用请求进行编码处理;
该通信模块,被配置为执行通过第一通道,向该服务端发送编码处理后的该调用请求。
在另一些实施例中,该目标框架还包括:第一解码模块、第一反序列化模块、服务路由模块、容错处理模块、第二序列化模块、第二编码模块;
该第一解码模块,被配置为执行响应于通过该第一通道接收到该服务调用请求,对该服务调用请求进行解码处理;
该第一反序列化模块,被配置为执行对解码处理后的该服务调用请求进行反序列化处理;
该服务路由模块,被配置为执行对反序列化处理后的该服务调用请求对应的服务进行查询;
该第二序列化模块,被配置为执行在查询到该服务的情况下,调用该服务,将得到的响应数据进行序列化处理;
该第二编码模块,被配置为执行对序列化处理后的该响应数据进行编码处理;
该通信模块,还被配置为执行通过该第一通道,向该客户端发送编码处理后的该响应数据;
该容错处理模块,被配置为执行在未查询到该服务的情况下进行报错处理。
在另一些实施例中,该目标框架还包括:第二解码模块和第二反序列化模块;
该第二解码模块,被配置为执行响应于通过该第一通道接收到该响应数据,对该响应数据进行解码处理;
该第二反序列化模块,被配置为执行对解码处理后的该响应数据进行反序列化处理。
在本公开实施例中,提供了一种目标框架,该目标框架具备服务注册功能和服务调用功能。开发人员在生成客户端和服务端的指令数据之后,能够将定义的服务注册到目标框架中,从而利用目标框架实现客户端对已注册的服务的调用,这样,在应用程序的开发阶段,开发人员可以直接通过该目标框架实现服务调用,进而提高了开发效率。
需要说明的是,上述实施例提供的服务调用装置400在进行服务调用时,仅以上述各功能单元的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元完成,即将计算机设备的内部结构划分成不同的功能单元,以完成以上描述的全部或者部分功能。另外,上述实施例提供的服务调用装置400与服务调用方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
在一些实施例中,计算机设备可提供为终端,相应的,图5是根据一示例性实施例示出的一种终端500的框图。该终端500可以是:智能手机、平板电脑、MP3播放器(MovingPicture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端500还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端500包括有:处理器501和存储器502。
处理器501可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器501可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器501也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器501可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器501还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器502可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器502还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器502中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器501所执行以实现本申请中方法实施例提供的服务调用方法。
在一些实施例中,终端500还可选包括有:外围设备接口503和至少一个外围设备。处理器501、存储器502和外围设备接口503之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口503相连。具体地,外围设备包括:射频电路504、显示屏505、摄像头506、音频电路507、定位组件508和电源509中的至少一种。
外围设备接口503可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器501和存储器502。在一些实施例中,处理器501、存储器502和外围设备接口503被集成在同一芯片或电路板上;在一些其他实施例中,处理器501、存储器502和外围设备接口503中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路504用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路504通过电磁信号与通信网络以及其他通信设备进行通信。射频电路504将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路504包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路504可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路504还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏505用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏505是触摸显示屏时,显示屏505还具有采集在显示屏505的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器501进行处理。此时,显示屏505还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏505可以为一个,设置终端500的前面板;在另一些实施例中,显示屏505可以为至少两个,分别设置在终端500的不同表面或呈折叠设计;在再一些实施例中,显示屏505可以是柔性显示屏,设置在终端500的弯曲表面上或折叠面上。甚至,显示屏505还可以设置成非矩形的不规则图形,也即异形屏。显示屏505可以采用LCD(LiquidCrystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件506用于采集图像或视频。可选地,摄像头组件506包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件506还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路507可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器501进行处理,或者输入至射频电路504以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端500的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器501或射频电路504的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路507还可以包括耳机插孔。
定位组件508用于定位终端500的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。定位组件508可以是基于美国的GPS(GlobalPositioning System,全球定位系统)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。
电源509用于为终端500中的各个组件进行供电。电源509可以是交流电、直流电、一次性电池或可充电电池。当电源509包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端500还包括有一个或多个传感器510。该一个或多个传感器510包括但不限于:加速度传感器511、陀螺仪传感器512、压力传感器513、指纹传感器514、光学传感器515以及接近传感器516。
加速度传感器511可以检测以终端500建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器511可以用于检测重力加速度在三个坐标轴上的分量。处理器501可以根据加速度传感器511采集的重力加速度信号,控制显示屏505以横向视图或纵向视图进行用户界面的显示。加速度传感器511还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器512可以检测终端500的机体方向及转动角度,陀螺仪传感器512可以与加速度传感器511协同采集用户对终端500的3D动作。处理器501根据陀螺仪传感器512采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器513可以设置在终端500的侧边框和/或显示屏505的下层。当压力传感器513设置在终端500的侧边框时,可以检测用户对终端500的握持信号,由处理器501根据压力传感器513采集的握持信号进行左右手识别或快捷操作。当压力传感器513设置在显示屏505的下层时,由处理器501根据用户对显示屏505的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器514用于采集用户的指纹,由处理器501根据指纹传感器514采集到的指纹识别用户的身份,或者,由指纹传感器514根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器501授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器514可以被设置终端500的正面、背面或侧面。当终端500上设置有物理按键或厂商Logo时,指纹传感器514可以与物理按键或厂商Logo集成在一起。
光学传感器515用于采集环境光强度。在一个实施例中,处理器501可以根据光学传感器515采集的环境光强度,控制显示屏505的显示亮度。具体地,当环境光强度较高时,调高显示屏505的显示亮度;当环境光强度较低时,调低显示屏505的显示亮度。在另一个实施例中,处理器501还可以根据光学传感器515采集的环境光强度,动态调整摄像头组件506的拍摄参数。
接近传感器516,也称距离传感器,通常设置在终端500的前面板。接近传感器516用于采集用户与终端500的正面之间的距离。在一个实施例中,当接近传感器516检测到用户与终端500的正面之间的距离逐渐变小时,由处理器501控制显示屏505从亮屏状态切换为息屏状态;当接近传感器516检测到用户与终端500的正面之间的距离逐渐变大时,由处理器501控制显示屏505从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图5中示出的结构并不构成对终端500的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
在示例性实施例中,还提供了一种包括指令的计算机可读存储介质,例如包括指令的存储器,当该计算机可读存储介质中的指令由计算机设备的处理器执行时,使得该计算机设备能够执行上述服务调用方法。可选地,计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供了一种计算机程序产品,该计算机程序产品包括计算机指令,当计算机程序产品中的指令由处理器执行时实现上述方法实施例中的服务调用方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

Claims (18)

1.一种服务调用方法,其特征在于,应用于计算机设备,所述方法包括:
生成客户端的第一指令数据和服务端的第二指令数据,所述第一指令数据和所述第二指令数据采用的语言不同;其中,所述客户端为指代开发框架能力的开发端,所述服务端为指代操作系统能力的原生端;或者,所述客户端为所述原生端,所述服务端为所述开发端;
将所述第二指令数据中定义的服务注册到目标框架中,所述目标框架至少提供了服务注册功能和服务调用功能;
响应于所述客户端对已注册的所述服务的调用请求,基于所述目标框架进行服务调用;
所述目标框架包括序列化模块、第一编码模块、通信模块、第一解码模块、第一反序列化模块、服务路由模块、第二序列化模块、第二编码模块;
所述序列化模块,用于响应于任一服务的调用请求中的参数校验通过,对所述调用请求进行序列化处理;
所述第一编码模块,用于对序列化处理后的所述调用请求进行编码处理;
所述通信模块,用于通过第一通道,向所述服务端发送编码处理后的所述调用请求;
所述第一解码模块,用于响应于通过所述第一通道接收到所述调用请求,对所述调用请求进行解码处理;
所述第一反序列化模块,用于对解码处理后的所述调用请求进行反序列化处理;
所述服务路由模块,用于对反序列化处理后的所述调用请求对应的服务进行查询;
所述第二序列化模块,用于在查询到所述服务的情况下,调用所述服务,将得到的响应数据进行序列化处理;
所述第二编码模块,用于对序列化处理后的所述响应数据进行编码处理;
所述通信模块,还用于通过所述第一通道,向所述客户端发送编码处理后的所述响应数据。
2.根据权利要求1所述的方法,其特征在于,所述生成客户端的第一指令数据和服务端的第二指令数据,包括:
在目标存储路径下存储协议文件;
基于所述目标存储路径下存储的协议文件,生成所述客户端的第一模板指令数据和所述服务端的第二模板指令数据;
响应于继承于所述第一模板指令数据的指令,获取所输入的第三指令数据,为所述第一模板指令数据填充所述第三指令数据,得到所述第一指令数据;
响应于继承于所述第二模板指令数据的指令,获取所输入的第四指令数据,为所述第二模板指令数据填充所述第四指令数据,得到所述第二指令数据。
3.根据权利要求2所述的方法,其特征在于,所述基于所述目标存储路径下存储的协议文件,生成所述客户端的第一模板指令数据和所述服务端的第二模板指令数据,包括:
执行指令数据生成指令,所述指令数据生成指令用于指示生成模板指令数据;
响应于所述指令数据生成指令,遍历所述目标存储路径下存储的协议文件,基于遍历到的协议文件生成所述模板指令数据;其中,所生成的所述模板指令数据包括所述客户端的第一模板指令数据和所述服务端的第二模板指令数据。
4.根据权利要求3所述的方法,其特征在于,所述响应于所述指令数据生成指令,遍历所述目标存储路径下存储的协议文件,基于遍历到的协议文件生成所述模板指令数据,包括:
响应于所述指令数据生成指令,基于所述目标存储路径调用脚本文件,所述脚本文件用于触发生成指令数据;
通过运行所述脚本文件,遍历所述目标存储路径下存储的协议文件,基于遍历到的协议文件生成所述模板指令数据。
5.根据权利要求1所述的方法,其特征在于,所述将所述第二指令数据中定义的服务注册到目标框架中,包括:
调用所述目标框架提供的服务注册接口,将所述服务注册到所述目标框架中。
6.根据权利要求1所述的方法,其特征在于,所述目标框架还包括初始化模块、参数校验模块;
所述初始化模块,用于响应于对所述任一服务的调用请求,进行初始化处理;
所述参数校验模块,用于在初始化处理后,对所述调用请求中的参数进行校验。
7.根据权利要求6所述的方法,其特征在于,所述目标框架还包括:容错处理模块;
所述容错处理模块,用于在未查询到所述任一服务的情况下进行报错处理。
8.根据权利要求7所述的方法,其特征在于,所述目标框架还包括:第二解码模块和第二反序列化模块;
所述第二解码模块,用于响应于通过所述第一通道接收到所述响应数据,对所述响应数据进行解码处理;
所述第二反序列化模块,用于对解码处理后的所述响应数据进行反序列化处理。
9.一种服务调用装置,其特征在于,所述装置包括:
生成单元,被配置为执行生成客户端的第一指令数据和服务端的第二指令数据,所述第一指令数据和所述第二指令数据采用的语言不同;其中,所述客户端为指代开发框架能力的开发端,所述服务端为指代操作系统能力的原生端;或者,所述客户端为所述原生端,所述服务端为所述开发端;
注册单元,被配置为执行将所述第二指令数据中定义的服务注册到目标框架中,所述目标框架至少提供了服务注册功能和服务调用功能;
调用单元,被配置为执行响应于所述客户端对已注册的所述服务的调用请求,基于所述目标框架进行服务调用;
所述目标框架包括序列化模块、第一编码模块、通信模块、第一解码模块、第一反序列化模块、服务路由模块、第二序列化模块、第二编码模块;
所述序列化模块,用于响应于任一服务的调用请求中的参数校验通过,对所述调用请求进行序列化处理;
所述第一编码模块,用于对序列化处理后的所述调用请求进行编码处理;
所述通信模块,用于通过第一通道,向所述服务端发送编码处理后的所述调用请求;
所述第一解码模块,用于响应于通过所述第一通道接收到所述调用请求,对所述调用请求进行解码处理;
所述第一反序列化模块,用于对解码处理后的所述调用请求进行反序列化处理;
所述服务路由模块,用于对反序列化处理后的所述调用请求对应的服务进行查询;
所述第二序列化模块,用于在查询到所述服务的情况下,调用所述服务,将得到的响应数据进行序列化处理;
所述第二编码模块,用于对序列化处理后的所述响应数据进行编码处理;
所述通信模块,还用于通过所述第一通道,向所述客户端发送编码处理后的所述响应数据。
10.根据权利要求9所述的装置,其特征在于,所述生成单元,包括:
第一生成子单元,被配置为执行在目标存储路径下存储协议文件;
第二生成子单元,被配置为执行基于所述目标存储路径下存储的协议文件,生成所述客户端的第一模板指令数据和所述服务端的第二模板指令数据;
第一填充子单元,被配置为执行响应于继承于所述第一模板指令数据的指令,获取所输入的第三指令数据,为所述第一模板指令数据填充所述第三指令数据,得到所述第一指令数据;
第二填充子单元,被配置为执行响应于继承于所述第二模板指令数据的指令,获取所输入的第四指令数据,为所述第二模板指令数据填充所述第四指令数据,得到所述第二指令数据。
11.根据权利要求10所述的装置,其特征在于,所述第二生成子单元,被配置为执行执行指令数据生成指令,所述指令数据生成指令用于指示生成模板指令数据;响应于所述指令数据生成指令,遍历所述目标存储路径下存储的协议文件,基于遍历到的协议文件生成所述模板指令数据;其中,所生成的所述模板指令数据包括所述客户端的第一模板指令数据和所述服务端的第二模板指令数据。
12.根据权利要求11所述的装置,其特征在于,所述第二生成子单元,被配置为执行响应于所述指令数据生成指令,基于所述目标存储路径调用脚本文件,所述脚本文件用于触发生成指令数据;通过运行所述脚本文件,遍历所述目标存储路径下存储的协议文件,基于遍历到的协议文件生成所述模板指令数据。
13.根据权利要求9所述的装置,其特征在于,所述注册单元,被配置为执行调用所述目标框架提供的服务注册接口,将所述服务注册到所述目标框架中。
14.根据权利要求9所述的装置,其特征在于,所述目标框架还包括初始化模块、参数校验模块;
所述初始化模块,被配置为执行响应于对所述任一服务的调用请求,进行初始化处理;
所述参数校验模块,被配置为执行在初始化处理后,对所述调用请求中的参数进行校验。
15.根据权利要求14所述的装置,其特征在于,所述目标框架还包括:容错处理模块;
所述容错处理模块,被配置为执行在未查询到所述任一服务的情况下进行报错处理。
16.根据权利要求15所述的装置,其特征在于,所述目标框架还包括:第二解码模块和第二反序列化模块;
所述第二解码模块,被配置为执行响应于通过所述第一通道接收到所述响应数据,对所述响应数据进行解码处理;
所述第二反序列化模块,被配置为执行对解码处理后的所述响应数据进行反序列化处理。
17.一种计算机设备,其特征在于,所述计算机设备包括:
一个或多个处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至8任一项所述的服务调用方法。
18.一种计算机可读存储介质,其特征在于,当所述计算机可读存储介质中的指令由计算机设备的处理器执行时,使得所述计算机设备能够执行如权利要求1至8任一项所述的服务调用方法。
CN202110437061.4A 2021-04-22 2021-04-22 服务调用方法、装置、计算机设备及存储介质 Active CN113190362B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110437061.4A CN113190362B (zh) 2021-04-22 2021-04-22 服务调用方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110437061.4A CN113190362B (zh) 2021-04-22 2021-04-22 服务调用方法、装置、计算机设备及存储介质

Publications (2)

Publication Number Publication Date
CN113190362A CN113190362A (zh) 2021-07-30
CN113190362B true CN113190362B (zh) 2022-12-27

Family

ID=76978061

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110437061.4A Active CN113190362B (zh) 2021-04-22 2021-04-22 服务调用方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN113190362B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113900893A (zh) * 2021-09-30 2022-01-07 土巴兔集团股份有限公司 一种日志获取方法及其相关设备
CN114691238A (zh) * 2022-03-30 2022-07-01 阿波罗智联(北京)科技有限公司 脚本文件执行方法、装置、设备、存储介质以及程序产品

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104106276A (zh) * 2011-10-12 2014-10-15 施萨姆公司 多层安全移动交易使能平台
CN111381852A (zh) * 2020-03-10 2020-07-07 江苏满运软件科技有限公司 基于Flutter的应用动态更新方法、装置、存储介质及电子设备

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103309660B (zh) * 2013-05-27 2016-08-17 北京尚友通达信息技术有限公司 移动应用跨平台开发方法
CN107957911B (zh) * 2016-10-18 2019-07-05 腾讯科技(深圳)有限公司 组件调用的方法和装置、组件数据处理的方法和装置
CN106506509B (zh) * 2016-11-15 2019-11-08 深圳市彬讯科技有限公司 可进行服务治理与语言调用的轻量级rpc框架实现方法
CN106559493B (zh) * 2016-11-29 2019-09-17 深圳中兴网信科技有限公司 服务发布方法和服务发布系统
US10686716B2 (en) * 2018-07-23 2020-06-16 Vmware, Inc. Dynamic processing of packets using multiple receive queue features
CN111010438B (zh) * 2019-12-13 2022-11-11 北京达佳互联信息技术有限公司 远程过程调用方法、装置、服务器及存储介质

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104106276A (zh) * 2011-10-12 2014-10-15 施萨姆公司 多层安全移动交易使能平台
CN111381852A (zh) * 2020-03-10 2020-07-07 江苏满运软件科技有限公司 基于Flutter的应用动态更新方法、装置、存储介质及电子设备

Also Published As

Publication number Publication date
CN113190362A (zh) 2021-07-30

Similar Documents

Publication Publication Date Title
CN108845856B (zh) 基于对象的同步更新方法、装置、存储介质及设备
CN113204298B (zh) 显示发布进度的方法、装置、电子设备及存储介质
CN108717365B (zh) 在应用程序中执行功能的方法和装置
CN108897659B (zh) 修改日志级别的方法、装置及存储介质
CN112420217B (zh) 消息推送方法、装置、设备及存储介质
CN111159604A (zh) 图片资源加载方法及装置
CN111177013A (zh) 日志数据获取方法、装置、计算机设备及存储介质
CN111190748A (zh) 数据共享方法、装置、设备及存储介质
CN113190362B (zh) 服务调用方法、装置、计算机设备及存储介质
CN111125602B (zh) 页面构建方法、装置、设备和存储介质
CN111858382A (zh) 应用程序测试方法、装置、服务器、系统及存储介质
CN110290191B (zh) 资源转移结果处理方法、装置、服务器、终端及存储介质
CN111866140A (zh) 融合管理设备、管理系统、服务调用方法及介质
CN112612539B (zh) 数据模型卸载方法、装置、电子设备及存储介质
CN111258683A (zh) 检测方法、装置、计算机设备及存储介质
CN111881423A (zh) 限制功能使用授权方法、装置、系统
CN110825465A (zh) 日志数据处理方法、装置、电子设备及存储介质
CN112612540B (zh) 数据模型配置方法、装置、电子设备及存储介质
CN112597417B (zh) 页面更新方法、装置、电子设备及存储介质
CN110971692B (zh) 开通服务的方法、装置及计算机存储介质
CN113051015A (zh) 页面渲染方法、装置、电子设备及存储介质
CN113268234A (zh) 页面生成方法、装置、终端和存储介质
CN112783533A (zh) 版本信息更新方法、装置、终端及存储介质
CN113076452A (zh) 应用分类的方法、装置、设备及计算机可读存储介质
CN112231619A (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