CN115357282A - 应用实现方法、装置、电子设备及存储介质 - Google Patents

应用实现方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN115357282A
CN115357282A CN202210992513.XA CN202210992513A CN115357282A CN 115357282 A CN115357282 A CN 115357282A CN 202210992513 A CN202210992513 A CN 202210992513A CN 115357282 A CN115357282 A CN 115357282A
Authority
CN
China
Prior art keywords
version
interface
file
target
description file
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.)
Pending
Application number
CN202210992513.XA
Other languages
English (en)
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.)
Hangzhou Qulian Technology Co Ltd
Original Assignee
Hangzhou Qulian 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 Hangzhou Qulian Technology Co Ltd filed Critical Hangzhou Qulian Technology Co Ltd
Priority to CN202210992513.XA priority Critical patent/CN115357282A/zh
Publication of CN115357282A publication Critical patent/CN115357282A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44536Selecting among different versions

Landscapes

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

Abstract

本申请实施例提供了一种应用实现方法、装置、电子设备及存储介质,该方法首先获取目标应用下各服务中各第一版本接口的初始版本描述文件,再获取第一版本接口的待升级版本参数,基于待升级版本参数、以及初始版本描述文件,生成第二版本接口的目标版本描述文件,再根据初始版本描述文件和目标版本描述文件生成服务端服务文件,服务端服务文件包括各组版本分类服务接口文件夹内继承对应服务接口功能的服务文件。本申请基于初始版本描述文件和待升级版本参数,自动、快速地生成服务端服务文件,节省了应用的开发成本。

Description

应用实现方法、装置、电子设备及存储介质
技术领域
本申请涉及代码开发技术领域,尤其涉及一种应用实现方法、装置、电子设备及存储介质。
背景技术
随着科技的发展,用户不再满足于提供单一服务的应用,因而包含多个服务的应用应运而生,各服务之间通过服务接口互相协调、互相配合,为用户提供最终服务。
在应用的实际开发过程中,各服务经常会存在服务接口版本问题和接口分类问题。通常情况下,应用开发一开始只有v1版本接口,但是后面随着需求的不断变化,就会衍生出v2版本接口,v3版本接口,甚至其他更高版本接口。另一个问题是随着接口数量的增加,接口分类也日趋迫切。但是由于应用开发一开始并没有过多的考虑这两类问题,最终在几次应用迭代以后服务端接口版本迭代越来越困难,对接口有条理的分类更是难上加难。
传统的做法是直接在应用的旧接口上做改动,将旧版本接口v1直接变为新版本接口v2,或者当系统应用需要新版本接口v2的时候,开发者就会在原来的protobuf文件上再书写一些接口,这种传统的应用接口实现方法不仅费时费力,且在生成新版本接口的同时无法保留旧接口的功能特征。因此,传统的接口应用实现方法开发成本太高,且无法保留旧接口的功能特性。
发明内容
本申请实施例提供一种应用实现方法、装置、电子设备及存储介质,在保留旧版本接口功能特性的同时,能快速生成新版本接口服务文件,节省了应用的开发成本。
为解决上述技术问题,本申请实施例提供以下技术方案:
一方面,本申请实施例还提供了一种应用实现方法,包括:
获取目标应用下目标服务中第一版本接口的初始版本描述文件;所述初始版本描述文件包括所述第一版本接口对应的组参数、版本参数、分类参数、以及所述第一版本接口对应的接口方法,所述组参数表征所述第一版本接口归属的目标服务的组别,所述版本参数表征所述第一版本接口的版本号,所述分类参数表征所述第一版本接口的资源类别;
获取第一版本接口的待升级版本参数;
基于所述待升级版本参数、以及所述初始版本描述文件,生成第二版本接口的目标版本描述文件,所述第二版本接口为所述第一版本接口版本升级后的接口;
根据所述初始版本描述文件和所述目标版本描述文件生成服务端服务文件,所述服务端服务文件包括各组版本分类服务接口文件夹内继承对应服务接口功能的服务文件。
可选的,在本申请一些可能的实现方式中,基于待升级版本参数、以及初始版本描述文件,生成第二版本接口的目标版本描述文件的步骤之前,还包括:
基于预设第一版本接口格式,对初始版本描述文件进行格式校验;
若初始版本描述文件满足预设第一版本接口格式,则执行基于待升级版本参数、以及初始版本描述文件,生成第二版本接口的目标版本描述文件的步骤。
可选的,在本申请一些可能的实现方式中,根据初始版本描述文件和目标版本描述文件生成服务端服务文件的步骤,包括:
根据初始版本描述文件和目标版本描述文件生成服务端框架文件;
基于版本参数以及分类参数,通过版本分类生成器在服务端框架文件对应的文件夹中创建目标文件夹;
通过接口分类器在目标文件夹中生成第二版本接口以及第二版本接口的接口方法;
将第二版本接口以及第二版本接口的接口方法注册到服务端框架文件中,得到服务端服务文件。
可选的,在本申请一些可能的实现方式中,根据初始版本描述文件和目标版本描述文件生成服务端框架文件的步骤,包括:
根据初始版本扫描文件和目标版本扫描文件,生成目标应用的服务端基础源代码文件;
获取服务端基础框架文件;
根据服务端基础框架文件和服务端基础源代码文件,生成服务端框架文件。
可选的,在本申请一些可能的实现方式中,服务端基础源代码包括多个第一版本接口以及各第一版本接口分别对应的接口方法;根据服务端基础框架文件和服务端基础源代码文件,生成服务端框架文件的步骤,包括:
对服务端基础源代码中多个第一版本接口中至少一个第一版本接口对应的接口方法进行更新,得到更新后的服务端基础源代码;
根据服务端基础框架文件和更新后的服务端基础源代码文件,生成服务端框架文件。
可选的,在本申请一些可能的实现方式中,根据初始版本描述文件和目标版本描述文件生成服务端框架文件的步骤,包括:
在目标版本描述文件中新增目标接口以及目标接口对应的接口方法,得到扩充版本描述文件;
根据初始版本描述文件和扩充版本描述文件生成服务端框架文件。
可选的,在本申请一些可能的实现方式中,获取服务端基础框架文件的步骤,包括:
通过服务的基础框架生成器生成服务端基础框架文件。
一方面,本申请实施例还提供了一种应用实现方法,包括:
获取目标应用下目标服务中第一版本接口的初始版本描述文件;所述初始版本描述文件包括所述第一版本接口对应的组参数、版本参数、分类参数、以及所述第一版本接口对应的接口方法,所述组参数表征所述第一版本接口归属的目标服务的组别,所述版本参数表征所述第一版本接口的版本号,所述分类参数表征所述第一版本接口的资源类别;
获取第一版本接口的待升级版本参数;
基于所述待升级版本参数、以及所述初始版本描述文件,生成第二版本接口的目标版本描述文件,所述第二版本接口为所述第一版本接口版本升级后的接口;
根据初始版本描述文件和目标版本描述文件生成客户端接口文件,客户端接口文件包括各组版本分类链式调用文件和客户端句柄文件。
可选的,在本申请一些可能的实现方式中,根据初始版本描述文件和目标版本描述文件生成客户端接口文件的步骤,包括:
根据初始版本扫描文件和目标版本扫描文件,生成目标应用的客户端基础源代码文件;
将客户端基础源代码文件按照初始版本描述文件中组参数、版本参数以及分类参数的形式进行封装,得到各组版本分类链式调用文件;
根据客户端对象,生成客户端句柄文件。
一方面,本申请实施例还提供了一种应用实现装置,包括:
第一获取模块,用于获取目标应用下目标服务中第一版本接口的初始版本描述文件;所述初始版本描述文件包括所述第一版本接口对应的组参数、版本参数、分类参数、以及所述第一版本接口对应的接口方法,所述组参数表征所述第一版本接口归属的目标服务的组别,所述版本参数表征所述第一版本接口的版本号,所述分类参数表征所述第一版本接口的资源类别;
第二获取模块,用于获取第一版本接口的待升级版本参数;
第一生成模块,用于基于所述待升级版本参数、以及所述初始版本描述文件,生成第二版本接口的目标版本描述文件,所述第二版本接口为所述第一版本接口版本升级后的接口;
第二生成模块,用于根据所述初始版本描述文件和所述目标版本描述文件生成服务端服务文件,所述服务端服务文件包括各组版本分类服务接口文件夹内继承对应服务接口功能的服务文件。
可选的,在本申请一些可能的实现方式中,本申请实施例提供的一种应用实现装置,还包括:
校验模块,用于基于预设第一版本接口格式,通过预置的格式校验器对初始版本描述文件进行格式校验。
一方面,本申请实施例还提供了一种应用实现装置,包括:
第三获取模块,用于获取目标应用下目标服务中第一版本接口的初始版本描述文件;所述初始版本描述文件包括所述第一版本接口对应的组参数、版本参数、分类参数、以及所述第一版本接口对应的接口方法,所述组参数表征所述第一版本接口归属的目标服务的组别,所述版本参数表征所述第一版本接口的版本号,所述分类参数表征所述第一版本接口的资源类别;
第四获取模块,用于获取第一版本接口的待升级版本参数;
第三生成模块,用于基于所述待升级版本参数、以及所述初始版本描述文件,生成第二版本接口的目标版本描述文件,所述第二版本接口为所述第一版本接口版本升级后的接口;
第四生成模块,用于根据初始版本描述文件和目标版本描述文件生成客户端接口文件,客户端接口文件包括各组版本分类链式调用文件和客户端句柄文件。
一方面,本申请实施例提供了一种电子设备,电子设备包括存储器,处理器及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现如上述应用实现方法中的步骤。
一方面,本申请提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时实现上述应用实现方法中的步骤。
本申请实施例提供了一种应用实现方法、装置、电子设备及存储介质,本申请基于初始版本描述文件和目标版本参数生成目标版本描述文件,再根据初始版本描述文件和目标版本描述文件生成服务端服务文件,根据初始版本描述文件和目标版本描述文件生成客户端接口文件,客户端接口文件包括各组版本分类链式调用文件和客户端句柄文件,由于服务端服务文件和客户端接口文件都是基于初始版本的扫描文件得到的,因此,最终得到服务文件和接口文件都继承了原始版本的接口功能特性,且基于原始版本的扫描文件和目标版本参数就能快速地生成服务端服务文件和客户端接口文件,不需要人工重新编写代码,节省了应用的开发成本。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的方案整体架构图。
图2为本申请实施例提供的应用实现方法的第一种流程示意图。
图3为本申请实施例提供的编译阶段流程示意图。
图4为本申请实施例提供的编译阶段结束后的文件目录。
图5为本申请实施例提供的生成服务端服务文件后的框架目录。
图6a为本申请实施例提供的生成服务端服务文件前的框架目录。
图6b为本申请实施例提供的客户端开发工具文件目录。
图7为本申请实施例提供的应用实现方法第二种的流程示意图
图8a为本申请实施例提供的应用实现装置的第一种结构示意图。
图8b为本申请实施例提供的应用实现装置的第二种结构示意图。
图9为本申请实施例提供的电子设备的结构示意图。
如图10a为本申请实施例提供的传统描述文件中文件格式结构示意图。
如图10b为本申请实施例提供的本申请描述文件中文件格式结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供一种应用实现方法、装置、电子设备及存储介质。其中,该应用实现装置可以集成在电子设备中,该电子设备可以是服务器,也可以是终端等设备,其中,该终端可以包括是智能手机、平板电脑、笔记本电脑、个人计算(PC,Personal Computer)、微型处理盒子、或者其他设备等。
本申请说明书、权利要求书和附图中出现的术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。此外,术语“第一”、“第二”和“第三”等是用于区别不同的对象,而非用于描述特定的顺序。
在本申请中目标应用包括多个服务的应用,且多个服务中至少一个第一版本接口需要升级版本,各服务间通过RPC(remote procedure call,远程过程调用)框架进行通信。
本申请中的第一版本接口不是特指接口版本为1,而是代表需要升级版本的原始接口,例如,版本号为2的接口V2需要升级到版本号为5的接口V5,则V2为第一版本接口,V5为第二版本接口。
gRPC(remote procedure call,远程过程调用)是一个现代的开源高性能远程过程调用(RPC)框架,可以在任何环境中运行。它可以通过可插拔的负载平衡、跟踪、健康检查和身份验证支持,有效地连接数据中心内和数据中心之间的服务。
在本申请中,初始版本描述文件包括第一版本接口对应的组参数、版本参数、分类参数、以及第一版本接口对应的接口方法,初始版本描述文件为第一版本接口对应的protobuf文件。其中,组参数表示第一版本接口对应的服务组别group,版本参数代表第一版本接口对应的版本号version,分类参数表示第一版本接口对应的具体资源kind,接口方法规定了接口的功能。
protobuf是谷歌内部的混合语言数据标准。通过将结构化的数据进行序列化(串行化),用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。标准protobuf中的service字段,表示了protobuf所申明的接口以及接口对应的接口方法。
在实际开发过程中,利用protoc工具可以快速的将protobuf文件自动生成golang(开发的一种静态强类型、编译型语言)语言特有的pb.go文件。pb.go文件包含客户端和服务端相关的基础源代码。
传统生成服务接口的方案中,开发者也可以利用基于gRPC原理的脚手架系统和protobuf文件,生成服务接口。但是传统的生成服务接口方法没有考虑到服务接口间的分类,以及版本的迭代问题。传统方法生成的多个不同功能接口无次序、无分类地放在同一个文件中。且同一个接口服务对应的不同版本间的接口的也无明确地划分。
假设,protobuf文件中有group1和group2l两个组,group1中有两种类型的服务接口,其中,每一种类型的服务接口有v1和v2两个版本,传统的protobuf文件种文件格式如图10a所示。当用户需要调用服务接口时,只能打开服务接口对应的文件夹遍历所有服务接口,找到需要的服务接口。因此,传统的根据protobuf文件生成服务接口的方法,不便于用户的使用。
请参阅图1,图1为本申请实施例所提供的方案整体架构图,请参阅图1,本申请实施例提供的应用实现方法,大致可以分为三个阶段:编译阶段、服务端代码生成阶段、客户端开发工具包生成阶段。
protobuf编译阶段:主要是基于目标版本参数,根据各第一版本接口的初始版本描述文件生成各第二版本接口的目标版本描述文件,如图3所示为本申请实施例提供的编译阶段流程示意图。
服务端代码生成阶段:主要完成三方面的事情,首先就是生成一些最基本的服务端框架代码,包括main函数、gRPCserver启动方法、日志打印、配置文件等。其次版本分类生成器会根据父子protobuf关系和框架既定的规则生成类似v1/kind1、v1/kind2、v2/kind1、v2/kind2的文件夹目录。最后根据gRPC原理,gRPC接口生成器会生成与protobuf中service字段相对应的具有继承能力的service结构体和接口方法,用于注册到gRPC服务当中。
客户端开发工具包生成阶段:该阶段会根据Group-Version-Kind模型生成一套标准化SDK。按照这套标准化SDK,客户端开发者能够轻松准确的选择服务(group)、版本(version)以及具体资源(kind)的接口。
请参阅图2,图2为本申请实施例提供的应用实现方法的第一种流程示意图,包括:
步骤201、获取目标应用下目标服务中第一版本接口的初始版本描述文件;初始版本描述文件包括第一版本接口对应的组参数、版本参数、分类参数、以及第一版本接口对应的接口方法。
在本申请中,目标应用包括多个服务的应用,且多个服务中至少一个第一版本接口需要更新版本,各服务间通过RPC(remote procedure call,远程过程调用)框架进行通信。例如,目标应用为商城系统,服务有商品推荐服务、客服服务、订单结算服务等。
在本申请中,初始版本描述文件包括第一版本接口对应的组参数、版本参数、分类参数、以及第一版本接口对应的接口方法,初始版本描述文件为第一版本接口对应的protobuf文件。其中,组参数group表示第一版本接口对应的服务组别,版本参数Version代表第一版本接口对应的版本号,分类参数Kind表示第一版本接口对应的具体资源类型。
如图10b所示为本申请的描述文件中文件格式,本申请的protobuf文件中将服务接口按照组参数、版本参数以及分类参数进行分类。从本申请中的描述文件中可以清楚地知道各服务接口间的关系,及服务接口间的版本。例如,从图10b中可以看出kind1文件夹中的两个接口101和102属于同一种功能,但版本不同的接口。kind1文件中的接口与kind2文件中的接口属于不同接口功能的接口。因此,本申请中描述文件,即protobuf文件能区分服务接口间的关系,以及版本情况。进而由本申请中初始版本描述文件生成的服务接口文件也能区分服务接口间的关系,以及版本情况,便于用户使用。
对于一个服务来说,group字段是确定的,则组参数可以为group1。那么第二个服务,group字段则是其它的了,例如可以是group2,若初始版本接口为第一版本,则版本参数为v1,初始版本接口所操作的资源类型对应的分类参数kind2,描述文件中包括group1/v1/kind2。
在本申请中,初始版本描述文件对应的第一版本接口可以是V1、也可以是V2,也可以是其他版本接口在此不做限定,第二版本接口为第一版本接口版本升级后的接口,目标版本描述文件对应的第二版本接口是比第一版本接口版本高的接口,具体的第二版本接口在此不做限定,例如,第一版本接口版本为V1,第二版本接口版本为V2或者V5,本申请实施例以初始第一版本接口版本为V1,第二版本接口版本为V2进行说明。
步骤202、获取第一版本接口的待升级版本参数。
由于本申请需要对第一版本接口进行版本升级,因此,需要获取第一版本接口的待升级版本参数,例如,需要将第一版本接口版本为V1升级到第二版本接口V2,则待升级版本参数为2;需要将第一版本接口版本为V1升级到第二版本接口V3,待升级版本参数为3,依此类推。
步骤203、基于待升级版本参数、以及初始版本描述文件,生成第二版本接口的目标版本描述文件。
待升级版本参数中包括第二版本接口对应的版本参数,在基于各第一版本接口的初始版本描述文件下,描述文件生成器就会根据v1版本的protobuf动态的生成对应的高版本的protobuf文件,即目标版本描述文件为V2对应的protobuf文件。如图4所示为本申请实施例提供的编译阶段结束后的文件目录。
由于protobuf文件对格式有一定的要求,为保证初始版本描述文件格式的正确性,因此,在进行步骤203操作之前,还包括:基于预设第一版本接口格式,通过预置的格式校验器对初始版本描述文件进行格式校验;若初始版本描述文件满足预设第一版本接口格式,则执行步骤203的步骤。
预设第一版本接口格式可以为group/version/kind,具体的预设第一版本接口格式在此不做限定,可根据实际情况进行设定。
步骤204、根据初始版本描述文件和目标版本描述文件生成服务端服务文件,服务端服务文件包括各组版本分类服务接口文件夹内继承对应服务接口功能的服务文件。
由于初始版本扫描文件和目标版本扫描文件中都包含有第一版本接口对应的组参数、版本参数、分类参数以及第一版本接口对应的接口方法,因此,根据初始版本扫描文件和目标版本扫描文件,可以生成服务端服务文件。其中,服务端服务文件为service结构体及接口方法相关的.go文件。
在一种实施例中,根据初始版本描述文件和目标版本描述文件生成服务端服务文件的步骤,包括:根据初始版本描述文件和目标版本描述文件生成服务端框架文件;基于版本参数以及分类参数,通过版本分类生成器在服务端框架文件对应的文件夹中创建目标文件夹;通过接口分类器在目标文件夹中生成第二版本接口以及第二版本接口的接口方法;将第二版本接口以及第二版本接口的接口方法注册到服务端框架文件中,得到服务端服务文件。
在服务端框架文件已经存在的情况下,版本分类生成器会根据初始描述文件和目标描述文件中的protobuf中所确定的version和kind在当前服务端框架文件夹里按照version/kind的形式创建接口文件夹。在当前服务端框架文件夹里按照version/kind的形式创建的接口文件夹生成以后,gRPC接口生成器就会在对应的文件夹下生成与protobuf中service相对应的具有继承能力的service结构体及接口方法,并把它们注册到gRPC服务当中。如图5所示为本申请实施例提供的生成服务端服务文件后的框架目录。
因此,在生成服务端框架文件之前,首先要确定服务端基础框架文件。
在一种实施例中,根据初始版本描述文件和目标版本描述文件生成服务端框架文件的步骤,包括:根据初始版本扫描文件和目标版本扫描文件,生成目标应用的服务端基础源代码文件;获取服务端基础框架文件;根据服务端基础框架文件和服务端基础源代码文件,生成服务端框架文件。
在编译阶段根据服务器接口的初始版本扫描文件和目标版本扫描文件,生成目标应用的服务端基础源代码文件,得到gRPC基础源代码以后,可以说整个脚手架系统已经生成了最基本的pb.go依赖框架代码,RPC服务基础框架生成器也会为服务端首先生成一个带有main函数的基础框架。其次作为gRPC服务,还需要自动化生成gRPC server启动的代码块。当然除了这些最基本的代码块以外,gRPC服务基础框架生成器也会生成golang常用的一些日志打印、配置文件等代码块。该过程结束的时候,可以看到服务端框架文件夹目录如图6a所示,图6a为本申请实施例提供的生成服务端服务文件前的框架目录。
在一种实施例中,获取服务端基础框架文件的步骤,包括:通过服务的基础框架生成器生成服务端基础框架文件。
由于服务端服务文件是基于初始版本的扫描文件得到的,因此,最终得到服务文件继承了原始版本的接口功能特性,即此V1接口与V2接口功能相同,若要V2接口显示不同的功能,则需要在V2接口文件中对V2接口的接口方法进行重新定义,即更新原有的接口方法,让V2接口实现新的功能,即只需要对服务端基础源代码中V2的接口方法进行更新。
其中,可以对服务端基础源代码中所有服务接口的接口方法进行更新,使所有的接口实现不同的功能,也可以对服务端基础源代码中任一服务接口的接口方法进行更新,具体接口方法更新的数量在此不做限定,根据实际情况确定。
在一种实施例中,服务端基础源代码包括多个第一版本接口以及各第一版本接口分别对应的接口方法;根据服务端基础框架文件和服务端基础源代码文件,生成服务端框架文件的步骤,包括:对服务端基础源代码中多个第一版本接口中至少一个第一版本接口对应的接口方法进行更新,得到更新后的服务端基础源代码;根据服务端基础框架文件和更新后的服务端基础源代码文件,生成服务端框架文件。
本申请实施例中的高版本接口天然继承低版本接口的逻辑实现,所以即使开发者没有编写任何V2版本接口,V2版本接口也可以天然因为继承V1版本的特性而已经存在。通过面向对象的继承特性,开发者还可以有目标性的对有需要的V2版本接口做重新定义,进而将那些有需要的V1版本接口做V2升级。
另一方面,开发者可以在V2版本的protobuf基础上继续追加新接口,扩充原有接口的数量,即在目标版本描述文件中新增目标接口以及目标接口对应的接口方法。
在一种实施例中,根据初始版本描述文件和目标版本描述文件生成服务端框架文件的步骤,包括:在目标版本描述文件中新增目标接口以及目标接口对应的接口方法,得到扩充版本描述文件;根据初始版本描述文件和扩充版本描述文件生成服务端框架文件。
在一种实施例中,步骤204之后,还包括:根据初始版本描述文件和目标版本描述文件生成客户端接口文件,客户端接口文件包括各组版本分类链式调用文件和客户端句柄文件。
由于传统客户端服务文件中接口的文件也是无次序地放在同一个文件夹中,因此,传统的通过客户端服务文件调用接口过程中,需要去阅读相关的接口文档,根据接口文档了解接口间的关系及接口版本后,再去找寻想要访问的接口。传统的接口调用过程也较为繁琐。
本申请实施例提供一种便捷的接口调用方法,在生成了服务端服务文件以后,可以进入客户端接口文件生成阶段。该阶段主要是为了生成与服务端gRPC接口相对应的客户端接口软件开发包,也就是通常意义上的客户端SDK(软件开发工具包,SoftwareDevelopment Kit)。这个阶段会根据Group-Version-Kind模型生成一套标准化SDK。Group-Version-Kind模型,即软件开发者在使用SDK的时候,通过SDK特有的链式调用方式就能够轻松的找到接口,而不是去阅读相关的接口文档去找寻想要访问的接口,如下图6b所示为本申请实施例提供的客户端开发工具文件目录(以group1/v1/kind1和group1/v1/kind2为例)。
例如,以group1/v1/kind1和group1/v1/kind2为例进行链式调用,开发者在申明一个客户端对象client后,通过client.的方式就能够瞬间获悉当前服务端拥有group1v1和group1v2两个版本的接口。例如当选定client.group1v1().后,又能瞬间获悉当前服务端在group1v1下拥有kind1和kind2两种资源接口。当选定client.group1v1().kind1().后,又能瞬间获悉当前kind1资源下,拥有foo1和foo2两个RPC接口。因此,本申请实施例中的客户端接口文件版本清晰明确。客户端在选择接口版本时,基于SDK链式调用,就能够轻松的选择对应的版本接口,不依赖于与服务端的提前沟通。
以下内容将详细说明客户端接口文件的生成的方法。
请参阅图7,图7为本申请实施例提供的应用实现方法第二种的流程示意图,包括:
步骤701、获取目标应用下目标服务中第一版本接口的初始版本描述文件;初始版本描述文件包括第一版本接口对应的组参数、版本参数、分类参数、以及第一版本接口对应的接口方法。由于传统客户端服务文件中接口的文件也是无次序地放在同一个文件夹中,因此,传统的通过客户端服务文件调用接口过程中,需要去阅读相关的接口文档,因此,传统的接口调用过程也较为繁琐。为了解决这一问题,本申请提供了一种客户端接口文件,可以方便、快捷、准确地找到想要的服务接口。
步骤701的具体细节请参阅步骤201中的相应描述,在此不再赘述。
步骤702、获取第一版本接口的待升级版本参数。
步骤702的具体细节请参阅步骤202中的相应描述,在此不再赘述。
步骤703、基于待升级版本参数、以及初始版本描述文件,生成第二版本接口的目标版本描述文件。
步骤703的具体细节请参阅步骤203中的相应描述,在此不再赘述。
步骤704、根据初始版本描述文件和目标版本描述文件生成客户端接口文件,客户端接口文件包括各组版本分类链式调用文件和客户端句柄文件。本申请中首先根据初始版本扫描文件和目标版本扫描文件,生成目标应用的客户端基础源代码文件,再将客户端基础源代码文件按照描述文件中组参数、版本参数以及分类参数的形式进行封装,得到各组版本分类链式调用文件。例如,由于如图10b中编号101的服务接口和编号102的服务接口属于同一个接口类别,因此将编号101的服务接口和编号102的服务接口封装到一个kind中,并命名为kind1;同理将编号103的服务接口和编号104的服务接口封装到kind2中;将编号105的服务接口和编号106的服务接口封装到kind3中;将编号107的服务接口和编号108的服务接口封装到kind4中。又因为kind1和kind2属于同一个group,因此将kind1和kind2封装到同一个group中,并命名为group1,同理将kind3和kind4封装到同一个group中,并命名为group2,再将group1和group2封装到同一个protobuf文件中。
最后将protobuf文件转化成代码,得到链式调用文件,最后根据客户端对象,生成客户端句柄文件。用户通过客户端句柄文件来调用链式调用文件中的服务接口。其中,将protobuf文件转化成代码可以是将protobuf文件中protobuf语言转换成C语言、可以是C#、也可以是JAVA,具体的转换后的语言在此不做限定,本申请实施例中利用golang语言特有的interface特性,动态的生成相关链式依赖.go文件和客户端句柄.go文件。
在一种实施例中,根据初始版本描述文件和目标版本描述文件生成客户端接口文件的步骤,包括:根据初始版本扫描文件和目标版本扫描文件,生成目标应用的客户端基础源代码文件;将客户端基础源代码文件按照初始版本描述文件中组参数、版本参数以及分类参数的形式进行封装,得到各组版本分类链式调用文件;根据客户端对象,生成客户端句柄文件。
本申请实施例提供了一种应用实现方法,首先基于初始版本描述文件和目标版本参数生成目标版本描述文件,再根据初始版本描述文件和目标版本描述文件生成服务端服务文件,根据初始版本描述文件和目标版本描述文件生成客户端接口文件,客户端接口文件包括各组版本分类链式调用文件和客户端句柄文件,由于服务端服务文件和客户端接口文件都是基于初始版本的扫描文件得到的,因此,最终得到服务文件和接口文件都继承了原始版本的接口功能特性。从开发角度,由于本申请提供的应用实现方法基于原始版本的扫描文件和目标版本参数就能快速地生成服务端服务文件和客户端接口文件,且开发者还可以有目标性的对有需要的目标版本接口做重新定义,进而使目标版本接口有其他的功能特性,不需要人工重新编写代码,节省了应用的开发成本。从使用角度,由于客户端提供标准化SDK所提供的链式调用方式,让开发者能够轻松的知道服务端接口列表详情,快速、准确地调用第一版本接口。
在上述实施例方法的基础上,本实施例将从应用实现装置的角度进一步进行描述,请参阅图8a,图8a具体描述了本申请实施例提供的应用实现装置的第一种结构示意图,包括:
第一获取模块801,用于获取目标应用下目标服务中第一版本接口的初始版本描述文件;所述初始版本描述文件包括所述第一版本接口对应的组参数、版本参数、分类参数、以及所述第一版本接口对应的接口方法,所述组参数表征所述第一版本接口归属的目标服务的组别,所述版本参数表征所述第一版本接口的版本号,所述分类参数表征所述第一版本接口的资源类别;
第二获取模块802,用于获取第一版本接口的待升级版本参数。
第一生成模块803,用于基于所述待升级版本参数、以及所述初始版本描述文件,生成第二版本接口的目标版本描述文件,所述第二版本接口为所述第一版本接口版本升级后的接口。
第二生成模块804,用于根据初始版本描述文件和目标版本描述文件生成服务端服务文件,服务端服务文件包括各组版本分类服务接口文件夹内继承对应服务接口功能的服务文件;
在一种实施例中,第一生成模块803之前,还包括:
校验模块,用于基于预设第一版本接口格式,通过预置的格式校验器对初始版本描述文件进行格式校验。在一种实施例中,第二生成模块804,还包括:
第一生成子模块,用于根据初始版本描述文件和目标版本描述文件生成服务端框架文件;
创建子模块,用于基于版本参数以及分类参数,通过版本分类生成器在服务端框架文件对应的文件夹中创建目标文件夹;
第二生成子模块,用于通过接口分类器在目标文件夹中生成第二版本接口以及第二版本接口的接口方法;
注册子模块,用于将第二版本接口以及第二版本接口的接口方法注册到服务端框架文件中,得到服务端服务文件。
请参阅图8b,图8b具体描述了本申请实施例提供的应用实现装置的第二种结构示意图,包括:
第三获取模块805,用于获取目标应用下目标服务中第一版本接口的初始版本描述文件;所述初始版本描述文件包括所述第一版本接口对应的组参数、版本参数、分类参数、以及所述第一版本接口对应的接口方法,所述组参数表征所述第一版本接口归属的目标服务的组别,所述版本参数表征所述第一版本接口的版本号,所述分类参数表征所述第一版本接口的资源类别;
第三获取模块806,用于获取第一版本接口的待升级版本参数。
第三生成模块807,用于基于所述待升级版本参数、以及所述初始版本描述文件,生成第二版本接口的目标版本描述文件,所述第二版本接口为所述第一版本接口版本升级后的接口;
第四生成模块808,用于根据初始版本描述文件和目标版本描述文件生成客户端接口文件,客户端接口文件包括各组版本分类链式调用文件和客户端句柄文件。
在一种实施例中,第四生成模块808,包括:
第三生成子模块,用于根据初始版本扫描文件和目标版本扫描文件,生成目标应用的客户端基础源代码文件;
封装子模块,用于将客户端基础源代码文件按照初始版本描述文件中组参数、版本参数以及分类参数的形式进行封装,得到各组版本分类链式调用文件;
第四生成子模块,用于根据客户端对象,生成客户端句柄文件。
相应的,本申请实施例还提供一种电子设备,如图9所示,该电子设备可以包括射频电路901、包括有一个或一个以上计算机可读存储介质的存储器902、输入单元903、显示单元904、传感器905、音频电路906、WiFi模块907、包括有一个或者一个以上处理核心的处理器908、以及电源909等部件。本领域技术人员可以理解,图9中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
射频电路901可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器908处理;另外,将涉及上行的数据发送给基站。存储器902可用于存储软件程序以及模块,处理器908通过运行存储在存储器902的软件程序以及模块,从而执行各种功能应用以及数据处理。输入单元903可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
显示单元904可用于显示由用户输入的信息或提供给用户的信息以及电子设备的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。
电子设备还可包括至少一种传感器905,比如光传感器、运动传感器以及其他传感器。音频电路906包括扬声器,扬声器可提供用户与电子设备之间的音频接口。
WiFi属于短距离无线传输技术,电子设备通过WiFi模块907可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图9示出了WiFi模块907,但是可以理解的是,其并不属于电子设备的必须构成,完全可以根据需要在不改变申请的本质的范围内而省略。
处理器908是电子设备的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器902内的软件程序和/或模块,以及调用存储在存储器902内的数据,执行电子设备的各种功能和处理数据,从而对手机进行整体监控。
电子设备还包括给各个部件供电的电源909(比如电池),优选的,电源可以通过电源管理系统与处理器908逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
尽管未示出,电子设备还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,电子设备中的处理器908会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器902中,并由处理器908来运行存储在存储器902中的应用程序,从而实现以下功能:
获取目标应用下目标服务中第一版本接口的初始版本描述文件;初始版本描述文件包括第一版本接口对应的组参数、版本参数、分类参数、以及第一版本接口对应的接口方法,组参数表征第一版本接口归属的目标服务的组别,版本参数表征第一版本接口的版本号,分类参数表征第一版本接口的资源类别;
获取第一版本接口的待升级版本参数;
基于待升级版本参数、以及初始版本描述文件,生成第二版本接口的目标版本描述文件,第二版本接口为第一版本接口版本升级后的接口;
根据初始版本描述文件和目标版本描述文件生成服务端服务文件,服务端服务文件包括各组版本分类服务接口文件夹内继承对应服务接口功能的服务文件。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见上文的详细描述,此处不再赘述。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本申请实施例提供一种存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以实现以下功能:
获取目标应用下目标服务中第一版本接口的初始版本描述文件;初始版本描述文件包括第一版本接口对应的组参数、版本参数、分类参数、以及第一版本接口对应的接口方法,组参数表征第一版本接口归属的目标服务的组别,版本参数表征第一版本接口的版本号,分类参数表征第一版本接口的资源类别;
获取第一版本接口的待升级版本参数;
基于待升级版本参数、以及初始版本描述文件,生成第二版本接口的目标版本描述文件,第二版本接口为第一版本接口版本升级后的接口;
根据初始版本描述文件和目标版本描述文件生成服务端服务文件,服务端服务文件包括各组版本分类服务接口文件夹内继承对应服务接口功能的服务文件。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该存储介质中所存储的指令,可以执行本申请实施例所提供的任一种应用实现方法中的步骤,因此,可以实现本申请实施例所提供的任一种应用实现方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
以上对本申请实施例所提供的一种应用实现方法、装置、电子设备及存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的技术方案及其核心思想;本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例的技术方案的范围。

Claims (12)

1.一种应用实现方法,其特征在于,包括:
获取目标应用下目标服务中第一版本接口的初始版本描述文件;所述初始版本描述文件包括所述第一版本接口对应的组参数、版本参数、分类参数、以及所述第一版本接口对应的接口方法,所述组参数表征所述第一版本接口归属的目标服务的组别,所述版本参数表征所述第一版本接口的版本号,所述分类参数表征所述第一版本接口的资源类别;
获取第一版本接口的待升级版本参数;
基于所述待升级版本参数、以及所述初始版本描述文件,生成第二版本接口的目标版本描述文件,所述第二版本接口为所述第一版本接口版本升级后的接口;
根据所述初始版本描述文件和所述目标版本描述文件生成服务端服务文件,所述服务端服务文件包括各组版本分类服务接口文件夹内继承对应服务接口功能的服务文件。
2.如权利要求1所述的应用实现方法,其特征在于,所述基于所述待升级版本参数、以及所述初始版本描述文件,生成第二版本接口的目标版本描述文件的步骤之前,还包括:
基于预设第一版本接口格式,通过预置的格式校验器对所述初始版本描述文件进行格式校验;
若所述初始版本描述文件满足所述预设第一版本接口格式,则执行所述基于所述待升级版本参数、以及所述初始版本描述文件,生成第二版本接口的目标版本描述文件的步骤。
3.如权利要求1所述的应用实现方法,其特征在于,所述根据所述初始版本描述文件和所述目标版本描述文件生成服务端服务文件的步骤,包括:
根据所述初始版本描述文件和所述目标版本描述文件生成服务端框架文件;
基于版本参数以及分类参数,通过版本分类生成器在所述服务端框架文件对应的文件夹中创建目标文件夹;
通过接口分类器在所述目标文件夹中生成所述第二版本接口以及第二版本接口的接口方法;
将所述第二版本接口以及第二版本接口的接口方法注册到所述服务端框架文件中,得到所述服务端服务文件。
4.如权利要求3所述的应用实现方法,其特征在于,所述根据所述初始版本描述文件和所述目标版本描述文件生成服务端框架文件的步骤,包括:
根据所述初始版本扫描文件和所述目标版本扫描文件,生成所述目标应用的服务端基础源代码文件;
获取服务端基础框架文件;
根据服务端基础框架文件和所述服务端基础源代码文件,生成所述服务端框架文件。
5.如权利要求4所述的应用实现方法,其特征在于,所述服务端基础源代码包括多个所述第一版本接口以及各所述第一版本接口分别对应的接口方法;根据服务端基础框架文件和所述服务端基础源代码文件,生成所述服务端框架文件的步骤,包括:
对所述服务端基础源代码中多个所述第一版本接口中至少一个第一版本接口对应的接口方法进行更新,得到更新后的服务端基础源代码;
根据所述服务端基础框架文件和所述更新后的服务端基础源代码文件,生成所述服务端框架文件。
6.如权利要求3所述的应用实现方法,其特征在于,所述根据所述初始版本描述文件和所述目标版本描述文件生成服务端框架文件的步骤,包括:
在所述目标版本描述文件中新增目标接口以及所述目标接口对应的接口方法,得到扩充版本描述文件;
根据所述初始版本描述文件和所述扩充版本描述文件生成服务端框架文件。
7.如权利要求4所述的应用实现方法,其特征在于,所述获取服务端基础框架文件的步骤,包括:
通过所述服务的基础框架生成器生成所述服务端基础框架文件。
8.一种应用实现方法,其特征在于,包括:
获取目标应用下目标服务中第一版本接口的初始版本描述文件;所述初始版本描述文件包括所述第一版本接口对应的组参数、版本参数、分类参数、以及所述第一版本接口对应的接口方法,所述组参数表征所述第一版本接口归属的目标服务的组别,所述版本参数表征所述第一版本接口的版本号,所述分类参数表征所述第一版本接口的资源类别;
获取第一版本接口的待升级版本参数;
基于所述待升级版本参数、以及所述初始版本描述文件,生成第二版本接口的目标版本描述文件,所述第二版本接口为所述第一版本接口版本升级后的接口;
根据所述初始版本描述文件和所述目标版本描述文件生成客户端接口文件,所述客户端接口文件包括各组版本分类链式调用文件和客户端句柄文件。
9.如权利要求8所述的应用实现方法,其特征在于,所述根据所述初始版本描述文件和所述目标版本描述文件生成客户端接口文件的步骤,包括:
根据所述初始版本扫描文件和所述目标版本扫描文件,生成所述目标应用的客户端基础源代码文件;
将所述客户端基础源代码文件按照所述初始版本描述文件中组参数、版本参数以及分类参数的形式进行封装,得到所述各组版本分类链式调用文件;
根据客户端对象,生成客户端句柄文件。
10.一种应用实现装置,其特征在于,包括:
第一获取模块,用于获取目标应用下目标服务中第一版本接口的初始版本描述文件;所述初始版本描述文件包括所述第一版本接口对应的组参数、版本参数、分类参数、以及所述第一版本接口对应的接口方法,所述组参数表征所述第一版本接口归属的目标服务的组别,所述版本参数表征所述第一版本接口的版本号,所述分类参数表征所述第一版本接口的资源类别;
第二获取模块,用于获取第一版本接口的待升级版本参数;
第一生成模块,用于基于所述待升级版本参数、以及所述初始版本描述文件,生成第二版本接口的目标版本描述文件,所述第二版本接口为所述第一版本接口版本升级后的接口;
第二生成模块,用于根据所述初始版本描述文件和所述目标版本描述文件生成服务端服务文件,所述服务端服务文件包括各组版本分类服务接口文件夹内继承对应服务接口功能的服务文件。
11.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7中任一项所述应用实现方法或8至9任一项所述应用实现方法的步骤。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至7中任一项所述应用实现方法或8至9任一项所述应用实现方法的步骤。
CN202210992513.XA 2022-08-18 2022-08-18 应用实现方法、装置、电子设备及存储介质 Pending CN115357282A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210992513.XA CN115357282A (zh) 2022-08-18 2022-08-18 应用实现方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210992513.XA CN115357282A (zh) 2022-08-18 2022-08-18 应用实现方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN115357282A true CN115357282A (zh) 2022-11-18

Family

ID=84002250

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210992513.XA Pending CN115357282A (zh) 2022-08-18 2022-08-18 应用实现方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN115357282A (zh)

Similar Documents

Publication Publication Date Title
US11762634B2 (en) Systems and methods for seamlessly integrating multiple products by using a common visual modeler
US11687516B2 (en) Using an action registry to edit data across users and devices
US11042387B2 (en) Deploying cross-platform applications on mobile devices with native and web components
CN105302587B (zh) 数据更新方法及装置
CN109725901A (zh) 前端代码的开发方法、装置、设备和计算机存储介质
Malandrino et al. MIMOSA: context-aware adaptation for ubiquitous web access
US9678723B2 (en) Application programming interface (API) engine
WO2018036322A1 (zh) 应用安装包的生成方法和装置、存储介质
JP2006512694A (ja) プラットホーム中立ジェネリックサービスのクライアントアプリケーションの構築及び実行のためのシステム及び方法
CN112256321A (zh) 静态库打包方法、装置、计算机设备和存储介质
CN108279882B (zh) 框架生成方法、装置、设备及计算机可读介质
CN109933381B (zh) 一种内核的加载方法及装置
CN111045683A (zh) 小程序代码编译方法、装置、设备及介质
CN111931102A (zh) 一种构建页面的方法、装置及系统
CN105335132A (zh) 一种自定义应用程序功能的方法、装置以及系统
CN108845800B (zh) 一种组件扩展功能的实现方法、装置、设备及存储介质
CN108334784A (zh) 一种漏洞扫描方法和装置
CN109343970B (zh) 基于应用程序的操作方法、装置、电子设备及计算机介质
US20230289165A1 (en) Data processing method and apparatus for application, device, and storage medium
US20230018802A1 (en) Graphical user interface to configure parameters of an api based on user inputs
WO2023083071A1 (zh) 视图交互方法、装置、电子设备及计算机可读介质
CN109815455A (zh) 项目文件处理方法和装置
CN115357282A (zh) 应用实现方法、装置、电子设备及存储介质
US10917766B1 (en) System and methods for bring your own device eligibility platform
CN115840598A (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