CN113467972A - 通信接口构造方法、装置以及计算机设备、存储介质 - Google Patents

通信接口构造方法、装置以及计算机设备、存储介质 Download PDF

Info

Publication number
CN113467972A
CN113467972A CN202110743221.8A CN202110743221A CN113467972A CN 113467972 A CN113467972 A CN 113467972A CN 202110743221 A CN202110743221 A CN 202110743221A CN 113467972 A CN113467972 A CN 113467972A
Authority
CN
China
Prior art keywords
file
class
interface
function
message body
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.)
Granted
Application number
CN202110743221.8A
Other languages
English (en)
Other versions
CN113467972B (zh
Inventor
巫金生
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangzhou Huaduo Network Technology Co Ltd
Original Assignee
Guangzhou Huaduo 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 Guangzhou Huaduo Network Technology Co Ltd filed Critical Guangzhou Huaduo Network Technology Co Ltd
Priority to CN202110743221.8A priority Critical patent/CN113467972B/zh
Priority claimed from CN202110743221.8A external-priority patent/CN113467972B/zh
Publication of CN113467972A publication Critical patent/CN113467972A/zh
Application granted granted Critical
Publication of CN113467972B publication Critical patent/CN113467972B/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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Databases & Information Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer And Data Communications (AREA)

Abstract

本申请公开一种通信接口构造方法、装置以及计算机设备、存储介质,该方法包括:获取消息体文件,该消息体文件的描述信息对应每个通信类包括服务标识与结构体,该结构体包括多个函数标识及与函数标识相关联的多个消息体,每个消息体用于描述其所关联的函数标识的访问接口所需的配置信息;根据该消息体文件构造相对应的接口类文件;根据所述接口类文件构造所述访问接口的实现类文件;为引用所述访问接口的计算机程序添加协议适配器,所述协议适配器在运行时将该计算机程序对所述访问接口的调用指令序列化为二进制数据传输至远程服务器,以实现对相应的访问接口的远程调用。本申请能提升基于RPC调用的计算机程序的运行和传输效率及安全性。

Description

通信接口构造方法、装置以及计算机设备、存储介质
技术领域
本申请实施例涉及软件工程领域,尤其涉及一种通信接口构造方法、装置以及计算机设备、存储介质。
背景技术
互联网在线服务一般通过部署分布式系统来支持实现,在体量庞大复杂的分布式系统中,各种服务间的边界非常小,往往存在服务间相互调用的情况,例如服务A调用了服务B中的方法,即远程方法调用(RPC),相较于Restful方式,RPC调用有着明显的效率高,封装调用简单等优点,但是有可读性差,易用性差等缺点。
现有技术中,为了支持RPC调用,实现端到端的数据通信,且出于对分布式系统的安全性的考虑,客户端和服务端必须同时都有对应的消息体文件,在客户端数据传输到服务端的过程中,需要根据对应的消息体文件进行转码;接收数据的过程中,同理需要根据对应的消息体文件对数据进行解码。可以理解,现有技术要求程序开发人员在开发过程中根据消息体文件自行开展编程工作,工作量大,且易出错,而且由此开发的程序,在进行数据通信时,其转码所得的数据量大,传输耗时较长,导致整体运行和通信性能较差。
发明内容
本申请的目的在于克服现有技术中至少部分不足而提供一种通信接口构造方法及其相应的装置、计算机设备及存储介质。
为解决上述技术问题,本申请实现的一个技术方案是:
一种通信接口构造方法,其包括如下步骤:
获取消息体文件,该消息体文件的描述信息对应每个通信类包括服务标识与结构体,该结构体包括多个函数标识及与函数标识相关联的多个消息体,每个消息体用于描述其所关联的函数标识的访问接口所需的配置信息;
根据该消息体文件的描述信息构造相对应的接口类文件,其中,服务标识被转换为通信类的类名,函数标识被转换为通信类中访问接口的函数名,所述服务标识与函数标识被注解到该接口类文件的相应位置中;
根据所述接口类文件构造所述访问接口的实现类文件,在实现类文件中引用所述类名、函数名并构造相关函数体,所述函数体根据其对应的函数标识所关联的消息体的配置信息生成;
为引用所述访问接口的计算机程序添加协议适配器,所述协议适配器被配置为当其随该计算机程序运行时,将该计算机程序对所述访问接口的调用指令序列化为二进制数据传输至远程服务器,以实现对相应的访问接口的远程调用。
一个具体化的实施例中,获取消息体文件,包括如下步骤:
以合法用户身份向远程服务器发起获取消息体文件的请求,该请求包含程序开发项目的项目标识;
获取服务器验证合法用户身份后返回的与所述项目标识相对应的所述消息体文件。
另一具体化的实施例中,根据该消息体文件的描述信息构造相对应的接口类文件,包括如下步骤:
创建接口类文件;
将该消息体文件的描述信息中的服务标识转换为该接口类文件中的通信类的类名,将该服务标识添加为该类名的注解信息;
将该消息体文件的描述信息中的函数标识转换为该接口类文件中的通信类的访问接口的函数名,将该函数标识添加为该函数名的注解信息。
再一具体化的实施例中,根据所述接口类文件构造所述访问接口的实现类文件,包括如下步骤:
创建实现类文件;
根据所述接口类文件所注解的服务标识创建通信类在该实现类文件的类名;
根据所述接口类文件所注解的函数标识创建通信类在该实现类文件的函数名;
根据消息体文件的描述信息中与函数标识相关联的消息体的配置信息,构造对应的函数名的函数体。
又一具体化的实施例中,所述协议适配器响应于所述计算机程序对访问接口的调用指令,执行如下步骤:
获取该调用指令对应的访问接口的函数名及参数;
根据预设的转换规则将所述函数名及参数序列化转换为二进制数据;
根据函数名包含的不同类型的关键字将二进制数据封装为相应类型的协议报文;
将所述协议报文传输至远程服务器。
较佳的实施例中,所述结构体包括请求类型消息体和响应类型消息体,分别用于转换为调用访问接口时的入参控制信息和响应访问接口调用时的返回值控制信息。
较佳的实施例中,所述消息体文件符合ProtoBuf的结构化规范,所述接口类文件及实现类文件符合Java格式规范。
为解决上述技术问题,本申请实现的一个技术方案是:
一种通信接口构造装置,其包括:
文件获取模块,用于获取消息体文件,该消息体文件的描述信息对应每个通信类包括服务标识与结构体,该结构体包括多个函数标识及与函数标识相关联的多个消息体,每个消息体用于描述其所关联的函数标识的访问接口所需的配置信息;
接口类构造模块,用于根据该消息体文件的描述信息构造相对应的接口类文件,其中,服务标识被转换为通信类的类名,函数标识被转换为通信类中访问接口的函数名,所述服务标识与函数标识被注解到该接口类文件的相应位置中;
实现类构造模块,用于根据所述接口类文件构造所述访问接口的实现类文件,在实现类文件中引用所述类名、函数名并构造相关函数体,所述函数体根据其对应的函数标识所关联的消息体的配置信息生成;
运行预备模块,用于为引用所述访问接口的计算机程序添加协议适配器,所述协议适配器被配置为当其随该计算机程序运行时,将该计算机程序对所述访问接口的调用指令序列化为二进制数据传输至远程服务器,以实现对相应的访问接口的远程调用。
一个具体化的实施例中,所述文件获取模块包括:文件请求子模块,用于以合法用户身份向远程服务器发起获取消息体文件的请求,该请求包含程序开发项目的项目标识;文件接收子模块,用于获取服务器验证合法用户身份后返回的与所述项目标识相对应的所述消息体文件。
另一具体化的实施例中,所述接口类构造模块包括:接口类文件创建子模块,用于创建接口类文件;服务标识处理子模块,用于将该消息体文件的描述信息中的服务标识转换为该接口类文件中的通信类的类名,将该服务标识添加为该类名的注解信息;函数标识处理子模块,用于将该消息体文件的描述信息中的函数标识转换为该接口类文件中的通信类的访问接口的函数名,将该函数标识添加为该函数名的注解信息。
再一具体化的实施例中,所述实现类构造模块包括:实现类文件创建子模块,用于创建实现类文件;类名处理子模块,用于根据所述接口类文件所注解的服务标识创建通信类在该实现类文件的类名;函数名处理子模块,用于根据所述接口类文件所注解的函数标识创建通信类在该实现类文件的函数名;函数体处理子模块,用于根据消息体文件的描述信息中与函数标识相关联的消息体的配置信息,构造对应的函数名的函数体。
又一具体化的实施例中,所述协议适配器被配置为响应于所述计算机程序对访问接口的调用指令,执行:获取该调用指令对应的访问接口的函数名及参数;根据预设的转换规则将所述函数名及参数序列化转换为二进制数据;根据函数名包含的不同类型的关键字将二进制数据封装为相应类型的协议报文;将所述协议报文传输至远程服务器。
较佳的实施例中,所述结构体包括请求类型消息体和响应类型消息体,分别用于转换为调用访问接口时的入参控制信息和响应访问接口调用时的返回值控制信息。
较佳的实施例中,所述消息体文件符合ProtoBuf的结构化规范,所述接口类文件及实现类文件符合Java格式规范。
为解决上述技术问题本申请实施例还提供一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行上述所述通信接口构造方法的步骤。
为解决上述技术问题本申请实施例还提供一种存储有计算机可读指令的存储介质,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述所述通信接口构造方法的步骤。
与现有技术相比,本申请具有如下优点:
本申请可以依据消息体文件自动生产出与该消息体文件中的描述信息相对应的接口类文件及其实现类文件,整个转换过程借助注解信息形成便于反向查索的可回溯路径,为程序开发环境提供降低开发复杂度的前期服务,对程序开发人员屏蔽相关访问接口的通信细节,使得访问接口调用者只需关心其接口逻辑,能大大提高基于远程方法调用的软件工程的开发效率。
本申请通过向引用本申请技术方案所生产的实现类文件中的访问接口的计算机程序植入协议适配器用于序列化所述访问接口的调用指令,将相关调用指令转换为二进制数据传输给远程服务器,鉴于二进制数据具有数据量小的特点,可以大大提升运行该计算机程序的客户端与所述远程服务器之间的数据通信效率,降低通信时延,同时也减小此类计算机程序的整体文件尺寸。
基于本申请的技术方案所开发的计算机程序,由于其通过序列化的二进制数据实施远程方法调用,在实质上对相关访问接口实施了某种程度的辅助加密,能够大大提升相关计算机程序与远程服务器进行网络传输的安全性和可靠性。
附图说明
本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本申请的通信接口构造方法在其典型实施例中体现的流程示意图;
图2为本申请的消息体文件的描述信息的组织结构示意图;
图3为本申请的接口类文件的组织结构示意图;
图4为本申请的获取消息体文件的流程示意图;
图5为本申请的构造接口类文件的流程示意图;
图6为本申请的构造实现类文件的流程示意图;
图7为本申请的协议适配器的工作流程示意图;
图8为本申请的通信接口构造装置的基本结构示意图;
图9为本申请一个实施例的计算机设备的基本结构框图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本申请的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本申请所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
本技术领域技术人员可以理解,这里所使用的“客户端”、“终端”、“终端设备”既包括无线信号接收器的设备,其仅具备无发射能力的无线信号接收器的设备,又包括接收和发射硬件的设备,其具有能够在双向通信链路上,进行双向通信的接收和发射硬件的设备。这种设备可以包括:蜂窝或其他诸如个人计算机、平板电脑之类的通信设备,其具有单线路显示器或多线路显示器或没有多线路显示器的蜂窝或其他通信设备;PCS(PersonalCommunications Service,个人通信系统),其可以组合语音、数据处理、传真和/或数据通信能力;PDA(Personal Digital Assistant,个人数字助理),其可以包括射频接收器、寻呼机、互联网/内联网访问、网络浏览器、记事本、日历和/或GPS(Global PositioningSystem,全球定位系统)接收器;常规膝上型和/或掌上型计算机或其他设备,其具有和/或包括射频接收器的常规膝上型和/或掌上型计算机或其他设备。这里所使用的“客户端”、“终端”、“终端设备”可以是便携式、可运输、安装在交通工具(航空、海运和/或陆地)中的,或者适合于和/或配置为在本地运行,和/或以分布形式,运行在地球和/或空间的任何其他位置运行。这里所使用的“客户端”、“终端”、“终端设备”还可以是通信终端、上网终端、音乐/视频播放终端,例如可以是PDA、MID(Mobile Internet Device,移动互联网设备)和/或具有音乐/视频播放功能的移动电话,也可以是智能电视、机顶盒等设备。
本申请所称的“服务器”、“客户端”、“服务节点”等名称所指向的硬件,本质上是具备个人计算机等效能力的电子设备,为具有中央处理器(包括运算器和控制器)、存储器、输入设备以及输出设备等冯诺依曼原理所揭示的必要构件的硬件装置,计算机程序存储于其存储器中,中央处理器将存储在外存中的程序调入内存中运行,执行程序中的指令,与输入输出设备交互,借此完成特定的功能。
需要指出的是,本申请所称的“服务器”这一概念,同理也可扩展到适用于服务器机群的情况。依据本领域技术人员所理解的网络部署原理,所述各服务器应是逻辑上的划分,在物理空间上,这些服务器既可以是互相独立但可通过接口调用的,也可以是集成到一台物理计算机或一套计算机机群的。本领域技术人员应当理解这一变通,而不应以此约束本申请的网络部署方式的实施方式。
本申请相关技术方案可部署在云端服务器,其可以与业务上相关的服务器实现数据通信连接以协调在线服务,还可与其他相关服务器构成逻辑上相关联的服务机群,来为相关的终端设备例如智能手机、个人计算机、第三方服务器等提供服务。所述的智能手机和个人计算机均可通过公知的网络接入方式接入互联网,与本申请的服务器建立数据通信链路,以便访问和使用所述服务器所提供的服务。
对于服务器而言,一般通过提供在线服务的服务引擎开放相应的程序接口供各种终端设备进行远程调用,本申请中适于部署于服务器的相关技术方案,便可以此种方式实现于服务器中。
本领域技术人员对此应当知晓:本申请的各种方法,虽然基于相同的概念而进行描述而使其彼此间呈现共通性,但是,除非特别说明,否则这些方法都是可以独立执行的。同理,对于本申请所揭示的各个实施例而言,均基于同一发明构思而提出,因此,对于相同表述的概念,以及尽管概念表述不同但仅是为了方便而适当变换的概念,应被等同理解。
请参阅图1,本申请的一种通信接口构造方法,在其典型实施例中,包括如下步骤:
步骤S1100、获取消息体文件,该消息体文件的描述信息对应每个通信类包括服务标识与结构体,该结构体包括多个函数标识及与函数标识相关联的多个消息体,每个消息体用于描述其所关联的函数标识的访问接口所需的配置信息:
所述消息体文件是按照一定的结构化格式进行编制的计算机可读文件,其来源既可以是程序开发人员自行在本地客户端编写而成,也可以是直接向远程服务器获取,或者可以由第三方软件工具生成提供。
一种实施例中,所述消息体文件的描述信息按照如图2所示的结构进行组织,在该结构中,可以对应一个或多个通信类编写相应的描述信息,适应每个通信类,其结构包括服务标识及结构体,每个结构体则以函数为单位,对应每个函数包括其函数标识和多个消息体,其中:
所述服务标识用于标注所述通信类的身份特征信息,每个函数标识用于标注其所属的通信类的一个相应的访问接口的身份特征信息,访问接口将以函数的形式实现,对应每个访问接口的函数标识,包括一个或多个所述的消息体,每个消息体用于定义其所关联的函数标识的访问接口所需的配置信息而携带消息体标识和参数定义信息,其中的消息体标识中可包含类型关键词(如Req、Res分别表示请求类型、响应类型),不同的类型关键词表示不同类型的消息体,消息体类型包括请求类型消息体、响应类型消息体等,请求类型消息体用于定义其所属函数即其所属访问接口的入参控制信息,响应类型消息体用于定义其所属函数即其所属访问接口被调用时的返回值控制信息,借出,可通过消息体标识高效识别出访问接口的不同功能部件,方便利用这一组织方式将消息体转换为具体的函数体。
应当理解,在所述消息体文件中,适宜按照结构化的方式组织各个通信类的各个逻辑部件,以便实现高效的访问,但其具体组织结构并不局限于本实施例给出的方式,本领域技术人员可以灵活调整各个逻辑部件的组织关系,只要总体上满足适于高效访问的结构化要求即可。
一种较佳的实施例中,可以采用ProtoBuf结构化规范来预先制备所述的消息体文件。ProtoBuf(Google Protocol Buffers)是Google提供的一个具有高效的协议数据交换格式工具库(类似Json),但相比于Json,ProtoBuf有更高的转化效率,时间效率和空间效率都是JSON的3-5倍,且因ProtoBuf支持序列化与反序列化,因此,本申请中的协议适配器所实现的功能也可直接借助ProtoBuf的原生支持。
步骤S1200、根据该消息体文件的描述信息构造相对应的接口类文件,其中,服务标识被转换为通信类的类名,函数标识被转换为通信类中访问接口的函数名,所述服务标识与函数标识被注解到该接口类文件的相应位置中:
所述消息体文件的描述信息实际上给出了如何编制通信类的接口类文件的规范,因此,通过解析该消息体文件,便可获知如何转换出相应的接口类文件。
图3是依据消息体文件所构造的一个通信类的接口类文件的打开页面,额外示意出了其内部构造。可以看出,该接口类文件中,按照Java格式规范编制,其中包括两类定义块51、52,即类名定义块51和函数名定义块52,分别定义一个通信类的类名及其下的函数名,并相应添加了多个注解块用于表述注解信息。
接口类文件中通信类的类名由消息体文件中的服务标识转换而来,该通信类的各个函数名则由该消息体文件中该通信类之下的各个函数标识对应转换而来,一个函数名实质对应一个访问接口。依照Java的注解格式,对应所述的类名,以“@”前导符添加了所述的服务标识作为该类名的注解信息,相应的,对应各个所述的函数名,也以“@”前导符添加了相应的函数标识作为各个访问接口的注解信息。注解块通常置于其所注解的各个定义块之前的位置,因此,在本实施例中,注解信息被编制于类名、函数名的定义之前。
根据上述原理,将消息体文件中的描述信息转换为所述的接口类文件中的结构后,便可以完成该接口类文件的构造,保存到本地供后续调用。
步骤S1300、根据所述接口类文件构造所述访问接口的实现类文件,在实现类文件中引用所述类名、函数名并构造相关函数体,所述函数体根据其对应的函数标识所关联的消息体的配置信息生成:
为实现计算机程序开发人员对所述接口类文件所定义的访问接口的调用,需要进一步构造该接口类文件相对应的实现类文件。实现类文件中涉及各个访问接口的编程逻辑可由本领域技术人员预先设定,本申请重点关注其如何结合消息体文件中的消息体实现所述实现类文件的构造。
适用Java格式规范,可以根据该接口类文件直接编制实现类文件中涉及类名和函数名部分,具体而言,实现类文件中同步所述接口类文件的通信类的类名及其下的各个函数名以编制完整的实现类文件,使其符合Java语言的格式规范。
至于实现类文件中各个访问接口相对应的函数体,则可根据所述的消息体文件中,同一相应的函数标识之下的消息体来构造,应当知晓,这一函数标识与实现类文件中的函数名是一一对应的。
如前所述,每个消息体包含一些定义访问接口所需的配置信息,典型的包括入参控制信息和/或返回值控制信息,消息体一般采用ProtoBuf的message类型进行定义,其中的配置信息一般采用ProtoBuf的Field类型进行定义,将所述入参控制信息和/或返回值控制信息转换为实现类文件中相应函数体中的预先相熊对应的变量、属性等信息即可。由此,便可完成函数体的构造,从而完成所述实现类文件的编制,保存于本地以便后续调用。
步骤S1400、为引用所述访问接口的计算机程序添加协议适配器,所述协议适配器被配置为当其随该计算机程序运行时,将该计算机程序对所述访问接口的调用指令序列化为二进制数据传输至远程服务器,以实现对相应的访问接口的远程调用。
在前的各个步骤为程序开发环境预备了方便进行访问接口调用的实现类文件,程序开发人员可以在此基础上完成其计算机程序的开发,实现对适于访问远程服务器上的访问接口的调用指令的编写引用,由此编写而成的计算机程序,当其运行时,便可对远程服务器实施远程方法调用。
为了支持在此一程序开发环境下开发的计算机程序与远程服务器的远程通信,至少在所述计算机程序打包的环节,或者在该计算机程序引用所述消息体文件或者完成所述接口类文件或实现类文件的任意一个环节,向该计算机程序的工程项目中植入一协议适配器,该协议适配器可以表现为预先开发的SDK,以便在该工程项目被打包/编译后,确保该协议适配器存在于该计算机程序中,并在该计算机程序运行时能够被调用。
所述的协议适配器随同所述计算机程序的运行而处于内存中运行时,其负责接收针对所述实现类文件所定义的访问接口的调用指令,然后,根据与接收该调用指令的远程服务器预先协议的转换规则,将所述访问接口的调用指令序列化为二进制数据,将该二进制数据传输至所述的远程服务器。
相应的,远程服务器接收到该二制数据后,基于协议原理,便可反序列化解析出具体的调用指令,触发相应的访问接口,返回该访问接口执行后的数据。同理,远程服务器也可将其数据进行同理的序列化,将序列化后的二进制数据传输给本申请的协议适配器,由该协议适配器解析出具体数据提交给计算机程序使用。
一个实施例中,所述协议适配器与所述远程服务器在执行序列化与反序列化转换时,所遵守的转换规则即为ProtoBuf本身的协议规则,由于ProtoBuf良好地支持了此类转换规则,因此,可以省却额外编制专门程序的时间,提升本申请技术方案的编程实现效率。
本申请出于提升项目管理效率及安全性的目的而改进的一种实施例中,请参阅图4,所述步骤S1100包括如下步骤:
步骤S1111、以合法用户身份向远程服务器发起获取消息体文件的请求,该请求包含程序开发项目的项目标识:
大型互联网平台的软件开发项目往往需要大量编程人员进行协同,其分布式系统中的大量的在线服务所具有的各种访问接口相关的信息,更是需要进行既集中又分门别类的安全管理,在这种情况下,消息体文件的发布、派发等,均需进行安全识别后进行。这种情况下,便需验证获取消息体文件者的合法身份。
程序开发人员可以向远程服务器发起获取消息体文件的请求,该请求一般会包含具体程序开发项目相对应的项目标识,以便向远程服务器明确具体的项目,如果程序开发人员未登录远程服务器,远程服务器将使客户端导向登录页面,随后程序开发人员完成登录操作。
远程服务器收到该请求后,验证当前登录的用户身份是否合法用户身份,也即验证当前用户身份是否有获取其声索的消息体文件的权限,若该用户身份非法,则拒绝该请求,否则,即为合法用户身份,即可向该用户推送其所声索的消息体文件。
步骤S1112、获取服务器验证合法用户身份后返回的与所述项目标识相对应的所述消息体文件:
本地客户端接收到所述的消息体文件后,将其保存到本地并配置到当前程序开发项目相对应的程序开发环境中,以便后续对所述消息体文件的调用。
进一步改进的实施例中,步骤S1100中提供所述消息体文件的远程服务器既可以不同于后续开发完成的计算机程序的访问接口调用指令所指向的远程服务器,也可以是同一远程服务器,但是,应当理解,依据消息体文件所构造出的访问接口,理应是某一远程服务器对所述计算机程序开放的访问接口,由此方符合本申请的创造精神的要义。
为便于提高结构化编程效率,本申请提出一种更利于模块化实现的实施例,该实施例中,请参阅图5,所述步骤S1200包括如下步骤:
步骤S1211、创建接口类文件:
先在本地创建一个接口类文件的空白模板,以便将后续构造过程中的产物添加到其中。
步骤S1212、将该消息体文件的描述信息中的服务标识转换为该接口类文件中的通信类的类名,将该服务标识添加为该类名的注解信息:
根据前文的规则,解析消息体文件后,按照接口类文件的规范,对应消息体文件描述信息中关于服务标识部分,添加一行接口类注解行,在其中包含该服务标识作为注解信息,然后添加一行定义行,在其中引用该服务标识作为类名。
步骤S1213、将该消息体文件的描述信息中的函数标识转换为该接口类文件中的通信类的访问接口的函数名,将该函数标识添加为该函数名的注解信息:
根据前文的规则,解析消息体文件后,按照接口类文件的规范,对应消息体文件描述信息中关于函数标识部分,将每个函数标识作为接口类文件中的相应的访问接口的函数名进行定义,前置于该函数名的定义,对应添加一行该函数名的注解行,将该函数名所对应的函数标识引用为其中的注解信息。
完成上述步骤后,便可保存相应的接口类文件。
为便于提高结构化编程效率,本申请提出一种更利于模块化实现的实施例,该实施例中,请参阅图6,所述步骤S1300包括如下步骤:
步骤S1311、创建实现类文件:
先在本地创建一个实现类文件的空白模板,以便将后续构造过程中的产物添加到其中。
步骤S1312、根据所述接口类文件所注解的服务标识创建通信类在该实现类文件的类名:
从接口类文件到实现类文件的转换,通常每种编程语言均有所相应的规范,例如要求彼此的类名、函数名一致或相应等,本实施例中,将接口类文件所注解的服务标识作为通信类在实现类文件中的类名。
步骤S1313、根据所述接口类文件所注解的函数标识创建通信类在该实现类文件的函数名:
同理,接口类文件已经注解了相应的函数标识,实现类文件中则对应各个函数标识,相应添加各个函数名的定义。
步骤S1314、根据消息体文件的描述信息中与函数标识相关联的消息体的配置信息,构造对应的函数名的函数体:
参阅本申请的典型实施例所述,实现类文件中的各个函数名相对应的函数体的构造,按照预设规则实现,其中,还利用所述消息体文件的描述信息中相应的消息体的配置信息,根据这些配置信息对函数体中的相关变量、属性进行赋值,以实现入参控制、返回值控制等目的。
本申请进一步具体化以提高所述协议适配器的集成度的实施例中,请参阅图7,所述协议适配器被进一步配置为在响应于所述计算机程序对访问接口的调用指令之后执行如下步骤:
步骤S1411、获取该调用指令对应的访问接口的函数名及参数:
所述计算机程序运行时,一旦发起所述实现类文件所定义的访问接口的调用指令,触发所述协议适配器处理该调用指令,该协议适配器合可获取该调用指令相对应的函数名及其参数,具体可包括函数ID、入参、返回值类型等。
步骤S1412、根据预设的转换规则将所述函数名及参数序列化转换为二进制数据:
协议适配器根据预设的转换规则,具体是与所述访问接口所在的远程服务器协议的转换规则,或者某种诸如ProtoBuf的格式化规范工具所支持的转换规则,根据这一转换规则对函数名及参数进行序列化,将其转换为便于高效传输的二进制数据。
步骤S1413、根据函数名包含的不同类型的关键字将二进制数据封装为相应类型的协议报文:
由于访问接口相关的函数,可能依据请求类型消息体或广播类型消息体而构造出来的请求类型或广播类型,适应两种不同类型有时候需要执行不同的业务逻辑,这些类型区别可以体现在函数名的关键字中,因此,在本步骤中,可以根据函数名所属的不同类型将所述二进制数据转换为相应格式的协议报文,以便本地对应处理以及远程服务器识别处理。
步骤S1414、将所述协议报文传输至远程服务器:
最后,便可将相应的协议报文传输至所述的远程服务器,实现对远程服务器的计算机网络资源的访问。
本申请一个具体实施例中,为提升开发效率,完全遵守ProtoBuf及Java的相关规范,具体而言,所述消息体文件采用ProtoBuf的结构化规范进行编制,所述接口类文件及实现类文件采用Java格式规范。
本申请提供的一种通信接口构造装置,在其典型实施例中,请参阅图8,其包括文件获取模块1100、接口类构造模块1200、实现类构造模块1300、运行预备模块1400。其中:所述文件获取模块1100,用于获取消息体文件,该消息体文件的描述信息对应每个通信类包括服务标识与结构体,该结构体包括多个函数标识及与函数标识相关联的多个消息体,每个消息体用于描述其所关联的函数标识的访问接口所需的配置信息;所述接口类构造模块1200,用于根据该消息体文件的描述信息构造相对应的接口类文件,其中,服务标识被转换为通信类的类名,函数标识被转换为通信类中访问接口的函数名,所述服务标识与函数标识被注解到该接口类文件的相应位置中;所述实现类构造模块1300,用于根据所述接口类文件构造所述访问接口的实现类文件,在实现类文件中引用所述类名、函数名并构造相关函数体,所述函数体根据其对应的函数标识所关联的消息体的配置信息生成;所述运行预备模块1400,用于为引用所述访问接口的计算机程序添加协议适配器,所述协议适配器被配置为当其随该计算机程序运行时,将该计算机程序对所述访问接口的调用指令序列化为二进制数据传输至远程服务器,以实现对相应的访问接口的远程调用。
一个具体化的实施例中,所述文件获取模块1100包括:文件请求子模块,用于以合法用户身份向远程服务器发起获取消息体文件的请求,该请求包含程序开发项目的项目标识;文件接收子模块,用于获取服务器验证合法用户身份后返回的与所述项目标识相对应的所述消息体文件。
另一具体化的实施例中,所述接口类构造模块1200包括:接口类文件创建子模块,用于创建接口类文件;服务标识处理子模块,用于将该消息体文件的描述信息中的服务标识转换为该接口类文件中的通信类的类名,将该服务标识添加为该类名的注解信息;函数标识处理子模块,用于将该消息体文件的描述信息中的函数标识转换为该接口类文件中的通信类的访问接口的函数名,将该函数标识添加为该函数名的注解信息。
再一具体化的实施例中,所述实现类构造模块1300包括:实现类文件创建子模块,用于创建实现类文件;类名处理子模块,用于根据所述接口类文件所注解的服务标识创建通信类在该实现类文件的类名;函数名处理子模块,用于根据所述接口类文件所注解的函数标识创建通信类在该实现类文件的函数名;函数体处理子模块,用于根据消息体文件的描述信息中与函数标识相关联的消息体的配置信息,构造对应的函数名的函数体。
又一具体化的实施例中,所述协议适配器被配置为响应于所述计算机程序对访问接口的调用指令,执行:获取该调用指令对应的访问接口的函数名及参数;根据预设的转换规则将所述函数名及参数序列化转换为二进制数据;根据函数名包含的不同类型的关键字将二进制数据封装为相应类型的协议报文;将所述协议报文传输至远程服务器。
较佳的实施例中,所述结构体包括请求类型消息体和响应类型消息体,分别用于转换为调用访问接口时的入参控制信息和响应访问接口调用时的返回值控制信息。
较佳的实施例中,所述消息体文件符合ProtoBuf的结构化规范,所述接口类文件及实现类文件符合Java格式规范。
为解决上述技术问题,本申请实施例还提供计算机设备。如图9所示,计算机设备的内部结构示意图。该计算机设备包括通过系统总线连接的处理器、非易失性存储介质、存储器和网络接口。其中,该计算机设备的非易失性存储介质存储有操作系统、数据库和计算机可读指令,数据库中可存储有控件信息序列,该计算机可读指令被处理器执行时,可使得处理器实现一种通信接口构造方法。该计算机设备的处理器用于提供计算和控制能力,支撑整个计算机设备的运行。该计算机设备的存储器中可存储有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器执行本申请的通信接口构造方法。该计算机设备的网络接口用于与终端连接通信。本领域技术人员可以理解,图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
本实施方式中处理器用于执行图8中的各个模块及其子模块的具体功能,存储器存储有执行上述模块或子模块所需的程序代码和各类数据。网络接口用于向用户终端或服务器之间的数据传输。本实施方式中的存储器存储有本申请的通信接口构造装置中执行所有模块/子模块所需的程序代码及数据,服务器能够调用服务器的程序代码及数据执行所有子模块的功能。
本申请还提供一种存储有计算机可读指令的存储介质,计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行本申请任一实施例的通信接口构造方法的步骤。
本领域普通技术人员可以理解实现本申请上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质,或随机存储记忆体(Random Access Memory,RAM)等。
综上所述,本申请深入理解RPC请求流程后,以一种优雅的方式降低RPC学习成本,使得调用者只需关心其接口逻辑,同时提供完善的可回溯路径反查请求的踪迹,有利于分布式集群下多服务间的相互调用,提高开发效率。同时能够对于传输过程中数据的序列化加密等技术补偿手段,能够很好提高网络传输的安全性和可靠性。交互方式简单,client/server间的交互协议容易统一。
本技术领域技术人员可以理解,本申请中已经讨论过的各种操作、方法、流程中的步骤、措施、方案可以被交替、更改、组合或删除。进一步地,具有本申请中已经讨论过的各种操作、方法、流程中的其他步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。进一步地,现有技术中的具有与本申请中公开的各种操作、方法、流程中的步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。
以上所述仅是本申请的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

Claims (10)

1.一种通信接口构造方法,其特征在于,包括如下步骤:
获取消息体文件,该消息体文件的描述信息对应每个通信类包括服务标识与结构体,该结构体包括多个函数标识及与函数标识相关联的多个消息体,每个消息体用于描述其所关联的函数标识的访问接口所需的配置信息;
根据该消息体文件的描述信息构造相对应的接口类文件,其中,服务标识被转换为通信类的类名,函数标识被转换为通信类中访问接口的函数名,所述服务标识与函数标识被注解到该接口类文件的相应位置中;
根据所述接口类文件构造所述访问接口的实现类文件,在实现类文件中引用所述类名、函数名并构造相关函数体,所述函数体根据其对应的函数标识所关联的消息体的配置信息生成;
为引用所述访问接口的计算机程序添加协议适配器,所述协议适配器被配置为当其随该计算机程序运行时,将该计算机程序对所述访问接口的调用指令序列化为二进制数据传输至远程服务器,以实现对相应的访问接口的远程调用。
2.根据权利要求1所述的通信接口构造方法,其特征在于,获取消息体文件,包括如下步骤:
以合法用户身份向远程服务器发起获取消息体文件的请求,该请求包含程序开发项目的项目标识;
获取服务器验证合法用户身份后返回的与所述项目标识相对应的所述消息体文件。
3.根据权利要求1所述的通信接口构造方法,其特征在于,根据该消息体文件的描述信息构造相对应的接口类文件,包括如下步骤:
创建接口类文件;
将该消息体文件的描述信息中的服务标识转换为该接口类文件中的通信类的类名,将该服务标识添加为该类名的注解信息;
将该消息体文件的描述信息中的函数标识转换为该接口类文件中的通信类的访问接口的函数名,将该函数标识添加为该函数名的注解信息。
4.根据权利要求1所述的通信接口构造方法,其特征在于,根据所述接口类文件构造所述访问接口的实现类文件,包括如下步骤:
创建实现类文件;
根据所述接口类文件所注解的服务标识创建通信类在该实现类文件的类名;
根据所述接口类文件所注解的函数标识创建通信类在该实现类文件的函数名;
根据消息体文件的描述信息中与函数标识相关联的消息体的配置信息,构造对应的函数名的函数体。
5.根据权利要求1所述的通信接口构造方法,其特征在于,所述协议适配器响应于所述计算机程序对访问接口的调用指令,执行如下步骤:
获取该调用指令对应的访问接口的函数名及参数;
根据预设的转换规则将所述函数名及参数序列化转换为二进制数据;
根据函数名包含的不同类型的关键字将二进制数据封装为相应类型的协议报文;
将所述协议报文传输至远程服务器。
6.根据权利要求1至5中任意一项所述的通信接口构造方法,其特征在于,所述结构体包括请求类型消息体和响应类型消息体,分别用于转换为调用访问接口时的入参控制信息和响应访问接口调用时的返回值控制信息。
7.根据权利要求1至5中任意一项所述的通信接口构造方法,其特征在于,所述消息体文件符合ProtoBuf的结构化规范,所述接口类文件及实现类文件符合Java格式规范。
8.一种通信接口构造装置,其特征在于,其包括:
文件获取模块,用于获取消息体文件,该消息体文件的描述信息对应每个通信类包括服务标识与结构体,该结构体包括多个函数标识及与函数标识相关联的多个消息体,每个消息体用于描述其所关联的函数标识的访问接口所需的配置信息;
接口类构造模块,用于根据该消息体文件的描述信息构造相对应的接口类文件,其中,服务标识被转换为通信类的类名,函数标识被转换为通信类中访问接口的函数名,所述服务标识与函数标识被注解到该接口类文件的相应位置中;
实现类构造模块,用于根据所述接口类文件构造所述访问接口的实现类文件,在实现类文件中引用所述类名、函数名并构造相关函数体,所述函数体根据其对应的函数标识所关联的消息体的配置信息生成;
运行预备模块,用于为引用所述访问接口的计算机程序添加协议适配器,所述协议适配器被配置为当其随该计算机程序运行时,将该计算机程序对所述访问接口的调用指令序列化为二进制数据传输至远程服务器,以实现对相应的访问接口的远程调用。
9.一种计算机设备,其特征在于,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行如权利要求1至7中任一项权利要求所述通信接口构造方法的步骤。
10.一种存储有计算机可读指令的存储介质,其特征在于,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如权利要求1至7中任一项权利要求所述通信接口构造方法的步骤。
CN202110743221.8A 2021-06-30 通信接口构造方法、装置以及计算机设备、存储介质 Active CN113467972B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110743221.8A CN113467972B (zh) 2021-06-30 通信接口构造方法、装置以及计算机设备、存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110743221.8A CN113467972B (zh) 2021-06-30 通信接口构造方法、装置以及计算机设备、存储介质

Publications (2)

Publication Number Publication Date
CN113467972A true CN113467972A (zh) 2021-10-01
CN113467972B CN113467972B (zh) 2024-05-24

Family

ID=

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114047982A (zh) * 2022-01-13 2022-02-15 中国人民解放军96901部队 一种基于描述规范的微内核组件集成方法
CN114090135A (zh) * 2021-11-24 2022-02-25 北京金堤科技有限公司 具有纠错功能且支持跨平台调用组件的方法和装置
CN116506523A (zh) * 2023-06-21 2023-07-28 之江实验室 一种适用于多协议的统一通信方法
CN114090135B (zh) * 2021-11-24 2024-05-24 北京金堤科技有限公司 具有纠错功能且支持跨平台调用组件的方法和装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080140759A1 (en) * 2006-03-21 2008-06-12 Conner Peter A Dynamic service-oriented architecture system configuration and proxy object generation server architecture and methods
CN103425462A (zh) * 2012-05-14 2013-12-04 阿里巴巴集团控股有限公司 一种工作流数据持久化的方法和装置
CN110300082A (zh) * 2018-03-21 2019-10-01 腾讯科技(深圳)有限公司 一种接口生成方法、装置及存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080140759A1 (en) * 2006-03-21 2008-06-12 Conner Peter A Dynamic service-oriented architecture system configuration and proxy object generation server architecture and methods
CN103425462A (zh) * 2012-05-14 2013-12-04 阿里巴巴集团控股有限公司 一种工作流数据持久化的方法和装置
CN110300082A (zh) * 2018-03-21 2019-10-01 腾讯科技(深圳)有限公司 一种接口生成方法、装置及存储介质

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114090135A (zh) * 2021-11-24 2022-02-25 北京金堤科技有限公司 具有纠错功能且支持跨平台调用组件的方法和装置
CN114090135B (zh) * 2021-11-24 2024-05-24 北京金堤科技有限公司 具有纠错功能且支持跨平台调用组件的方法和装置
CN114047982A (zh) * 2022-01-13 2022-02-15 中国人民解放军96901部队 一种基于描述规范的微内核组件集成方法
CN114047982B (zh) * 2022-01-13 2022-04-08 中国人民解放军96901部队 一种基于描述规范的微内核组件集成方法
CN116506523A (zh) * 2023-06-21 2023-07-28 之江实验室 一种适用于多协议的统一通信方法
CN116506523B (zh) * 2023-06-21 2023-09-19 之江实验室 一种适用于多协议的统一通信方法

Similar Documents

Publication Publication Date Title
CN102694866A (zh) 一种分布式网络环境中的服务请求代理系统
CN111290753A (zh) 前端开发环境的搭建方法、装置、设备及存储介质
CN101976199A (zh) 面向对象的中间件分布式系统开发平台
CN100511140C (zh) 构件化软件系统实现脚本语言调用多输出参数接口的方法
CN104852939A (zh) 一种部署能力接口的方法和系统
CN110109983B (zh) 一种操作Redis数据库的方法和装置
CN110647316A (zh) 通用业务对象的生成方法、装置、计算机设备及存储介质
CN113778545A (zh) 一种数据处理方法、装置、设备和存储介质
CN103473034A (zh) 一种动态发布Web 服务的方法和装置
CN114968192A (zh) 一种项目创建方法、装置、计算机设备及存储介质
Dennert et al. Advanced concepts for flexible data integration in heterogeneous production environments
WO2019043462A1 (en) SYSTEMS AND METHODS FOR CREATING AUTOMATED INTERFACE TRANSMISSION BETWEEN HETEROGENEOUS SYSTEMS IN A BUSINESS ECOSYSTEM
CN103561113B (zh) Web Service接口的生成方法及装置
US20200286012A1 (en) Model application method, management method, system and server
CN109005163B (zh) 一种http动态请求服务调用方法
CN113467972A (zh) 通信接口构造方法、装置以及计算机设备、存储介质
CN113467972B (zh) 通信接口构造方法、装置以及计算机设备、存储介质
CN109597611A (zh) 前端数据流控制组件开发系统、方法、设备及存储介质
CN114064685A (zh) 数据标准化访问方法及其装置、设备、介质、产品
CN114327383A (zh) 基于soa架构中间件的服务配置系统、方法及可读存储介质
CN109669793B (zh) 中间件进程内对象调用方法
CN113626001A (zh) 一种基于脚本的api动态编排方法及装置
CN112182083A (zh) 文件生成方法、装置、设备及存储介质
CN112445811A (zh) 基于sql配置的数据服务方法、装置、存储介质及组件
CN111488391A (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