CN111629014B - 请求代理实现方法、实现装置、服务器和存储介质 - Google Patents
请求代理实现方法、实现装置、服务器和存储介质 Download PDFInfo
- Publication number
- CN111629014B CN111629014B CN201910147482.6A CN201910147482A CN111629014B CN 111629014 B CN111629014 B CN 111629014B CN 201910147482 A CN201910147482 A CN 201910147482A CN 111629014 B CN111629014 B CN 111629014B
- Authority
- CN
- China
- Prior art keywords
- data
- request
- mock
- service request
- rule
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明提供了一种请求代理实现方法、实现装置、服务器和存储介质,包括:响应于接收到的由客户端通过传输控制协议发送的服务请求,向对应的目的服务器发送连接请求;在目的服务器响应连接请求的情况下,根据服务请求的类型,确定对应的mock配置规则,以根据mock配置规则修改服务请求中的指定入参数据;将修改后的服务请求发送至目的服务器,并接收目的服务器根据服务请求反馈的第一结果数据。通过本发明技术方案,能够降低单纯采用打桩的方式进行远程调用的实施复杂度与实施成本。
Description
技术领域
本发明涉及远程调用领域,具体而言,涉及一种请求代理实现方法,一种请求代理实现方式、一种服务器与一种计算机可读存储介质。
背景技术
在互联网技术中,应用服务的一种模式为每个服务独立开发测试,独立发布部署。
相关技术中,服务之间通过RPC(Remote Procedure Call,远程过程调用)方式进行调用时,通过mock(即打桩,使用一个虚拟的对象代替不易构造或者不易获取的原对象)方式,打桩需要在调用之前根据需要打桩的类mock object,还需要将所有返回数据进行mock,当数据层级较多或者数据量级较大时,实施复杂度与实施成本都比较高。
发明内容
本发明旨在至少解决现有技术或相关技术中存在的技术问题之一。
为此,本发明的一个目的在于提供一种请求代理实现方法。
本发明的另一个目的在于提供一种请求代理实现装置。
本发明的再一个目的在于提供一种服务器。
本发明的又一个目的在于提供一种计算机可读存储介质。
有鉴于此,本发明第一方面的技术方案提出了一种请求代理实现方法,包括:响应于接收到的由客户端通过传输控制协议发送的服务请求,向对应的目的服务器发送连接请求;在目的服务器响应连接请求的情况下,根据服务请求的类型,确定对应的mock配置规则,以根据mock配置规则修改服务请求中的指定入参数据;将修改后的服务请求发送至目的服务器,并接收目的服务器根据服务请求反馈的第一结果数据。
在上述技术方案中,优选地,还包括:在目的服务器未响应连接请求的情况下,检测是否预设有第一mock处理规则;在检测到预设有第一mock处理规则的情况下,根据第一mock处理规则处理服务请求,以通过对指定返回数据进行修改,生成服务请求的第二结果数据,并将第二结果数据发送至客户端。
在上述任一项技术方案中,优选地,还包括:在检测到未预设第一mock处理规则的情况下,直接将服务请求返回至客户端。
在上述任一项技术方案中,优选地,根据服务请求的类型,确定对应的mock配置规则,以根据mock配置规则修改服务请求中的指定入参数据服务请求,具体包括:在检测到服务请求为超文本传输协议调用请求的情况下,采用对应的请求接口;根据预设格式配置mock配置规则,以根据mock配置规则修改指定入参数据,并生成中间请求数据。
在上述任一项技术方案中,优选地,根据预设格式配置mock配置规则,以根据mock配置规则修改指定入参数据,并生成中间请求数据,具体包括:检测服务请求中是否具有指定格式的入参数据;在检测到具有指定格式的入参数据的情况下,对入参数据配置json规则;在检测到不具有指定格式的入参数据的情况下,添加入参数据,以对入参数据配置json规则;对配置完毕的入参数据执行key值修改操作,以生成中间请求数据。
在上述任一项技术方案中,优选地,根据服务请求的类型,确定对应的mock配置规则,以根据mock配置规则修改服务请求中的指定入参数据,具体包括:在检测到服务请求为thrift远程调用的情况下,根据thrift服务确定对应的mock配置规则,以根据mock配置规则处理服务请求,并生成中间请求数据。
在上述任一项技术方案中,优选地,还包括:对中间请求数据执行编码操作,以生成可传输处理数据。
在上述任一项技术方案中,优选地,对中间请求数据执行编码操作,以生成可传输处理数据,具体包括:将中间请求数据编码为二进制的可传输处理数据,以将可传输处理数据发送至目的服务器。
在上述任一项技术方案中,优选地,将修改后的服务请求发送至目的服务器,并接收目的服务器根据服务请求反馈的第一结果数据,还包括:在接收到第一结果数据后,检测是否具有与第一结果数据匹配的第二mock处理规则;在检测到具有第二mock处理规则的情况下,根据第二mock处理规则修改第一结果数据,并将修改后的结果数据发送至客户端;在检测到不具有第二mock处理规则的情况下,直接将第一结果数据发送至客户端。
本发明第二方面的技术方案提出了一种请求代理实现装置,包括:存储器和处理器;存储器,用于存储存储器用于存储程序代码;处理器,用于调用程序代码执行:响应于接收到的由客户端通过传输控制协议发送的服务请求,向对应的目的服务器发送连接请求;在目的服务器响应连接请求的情况下,根据服务请求的类型,确定对应的mock配置规则,以根据mock配置规则修改服务请求中的指定入参数据;将修改后的服务请求发送至目的服务器,并接收目的服务器根据服务请求反馈的第一结果数据。
在上述技术方案中,优选地,处理器,具体用于:在目的服务器未响应连接请求的情况下,检测是否预设有第一mock处理规则;在检测到预设有第一mock处理规则的情况下,根据第一mock处理规则处理服务请求,以通过对指定返回数据进行修改,生成服务请求的第二结果数据,并将第二结果数据发送至客户端。
在上述任一项技术方案中,优选地,处理器,具体用于:在检测到未预设第一mock处理规则的情况下,直接将服务请求返回至客户端。
在上述任一项技术方案中,优选地,处理器,具体用于:在检测到服务请求为超文本传输协议调用请求的情况下,采用对应的请求接口;根据预设格式配置mock配置规则,以根据mock配置规则修改指定入参数据,并生成中间请求数据。
在上述任一项技术方案中,优选地,处理器,具体用于:检测服务请求中是否具有指定格式的入参数据;在检测到具有指定格式的入参数据的情况下,对入参数据配置json规则;在检测到不具有指定格式的入参数据的情况下,添加入参数据,以对入参数据配置json规则;对配置完毕的入参数据执行key值修改操作,以生成中间请求数据。
在上述任一项技术方案中,优选地,处理器,具体用于:在检测到服务请求为thrift远程调用的情况下,根据thrift服务确定对应的mock配置规则,以根据mock配置规则处理服务请求,并生成中间请求数据。
在上述任一项技术方案中,优选地,处理器,具体用于:对中间请求数据执行编码操作,以生成可传输处理数据。
在上述任一项技术方案中,优选地,处理器,具体用于:将中间请求数据编码为二进制的可传输处理数据,以将可传输处理数据发送至目的服务器。
在上述任一项技术方案中,优选地,处理器,具体用于:在接收到第一结果数据后,检测是否具有与第一结果数据匹配的第二mock处理规则;在检测到具有第二mock处理规则的情况下,根据第二mock处理规则修改第一结果数据,并将修改后的结果数据发送至客户端;在检测到不具有第二mock处理规则的情况下,直接将第一结果数据发送至客户端。
本发明的第三方面的技术方案提供了一种服务器,包括:本发明的第二方面提供的请求代理实现装置。
本发明的第四方面的技术方案提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述任一项请求代理实现方法的步骤。
根据本申请的技术方案,代理服务器接收到客户端发送的TCP包服务请求后,首先检测是否能够与目的服务器建立间接,以在能够建立连接的情况下确定目的服务器是否能够提供服务,并且在确定目的服务能够提供服务的情况下,根据不同的配置规则,对服务请求进行处理,以通过mock配置规则修改服务请求中的指定入参数据,即只对影响服务进程处理的入参进行处理,并在处理之后发送至对应的目的服务器,以接收目的服务器根据服务请求反馈的处理结果,以实现通过代理服务器的请求代理,与现有技术中的mock打桩的处理方式相比,只需要对指定的入参数据进行修改,而不需要将所有数据进行mock处理,能够简化处理过程以及降低处理成本。
本发明的优点将在下面的描述部分中给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
图1示出了根据本发明的一个实施例的请求代理实现方法的示意流程图;
图2示出了根据本发明的一个实施例的请求代理实现方案的数据传输示意图;
图3示出了根据本发明的另一个实施例的请求代理实现方法的示意流程图;
图4示出了根据本发明的实施例的请求代理实现装置的示意框图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用第三方不同于在此描述的第三方方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
图1示出了根据本发明的一个实施例的请求代理实现方法的示意框图。
如图1所示,根据本发明的一个实施例的请求代理实现方法,包括:
步骤102,响应于接收到的由客户端通过传输控制协议发送的服务请求,向对应的目的服务器发送连接请求;
步骤104,在目的服务器响应连接请求的情况下,根据服务请求的类型,确定对应的mock配置规则,以根据mock配置规则修改服务请求中的指定入参数据;
步骤106,将修改后的服务请求发送至目的服务器,并接收目的服务器根据服务请求反馈的第一结果数据。
在该实施例中,代理服务器接收到客户端发送的TCP包服务请求后,首先检测是否能够与目的服务器建立间接,以在能够建立连接的情况下确定目的服务器是否能够提供服务,并且在确定目的服务能够提供服务的情况下,根据不同的配置规则,对服务请求进行处理,以通过mock配置规则修改服务请求中的指定入参数据,即只对影响服务进程处理的入参进行处理,并在处理之后发送至对应的目的服务器,以接收目的服务器根据服务请求反馈的第一结果数据,以实现通过代理服务器的请求代理,与现有技术中的mock打桩的处理方式相比,只需要对指定的入参数据进行修改,而不需要将所有数据进行mock处理,能够简化处理过程以及降低处理成本。其中,本领域的技术人员能够理解的是,mock是用来模拟在应用中不容易构造或者比较复杂的对象,以保证对需要远程调用的数据的mock实现,mock对象即对真实对象在远程调用期间的代替品,以保证远程调用的顺利执行。
在上述实施例中,优选地,还包括:在目的服务器未响应连接请求的情况下,检测是否预设有第一mock处理规则;在检测到预设有第一mock处理规则的情况下,根据第一mock处理规则处理服务请求,以通过对指定返回数据进行修改,生成服务请求的第二结果数据,并将第二结果数据发送至客户端。
在该实施例中,在目的服务器未响应连接请求的情况下,对服务请求的处理过程需要在代理服务器端完成,此时需要检测代理服务器端是否预设有第一mock处理规则,以在检测到预设有该第一mock处理规则的情况下,通过进行mock处理,在代理服务器端完成请求代理操作,以实现对服务请求的处理,通过根据预设的第一mock处理规则执行数据修改操作,即代理服务器将服务请求中与业务相关的代码进行mock操作,以形成mock服务,进而生成第二结果数据,从而实现在相应场景中对对服务请求的处理,一方面,实现了与通过数据传输控制协议传输的服务请求匹配的场景需求,从而降低该处理结果对后续处理的不良影响,另一方面,通过mock处理规则的设置,实现部分数据的修改,以实现远程调用的数据的mock实现,以及结果数据的优化处理,并保证返回的处理结果的完整性。
在上述任一实施例中,优选地,还包括:在检测到未预设第一mock处理规则的情况下,直接将服务请求返回至客户端。
在该实施例中,在未检测到具有第一mock处理规则的情况下,即在无法连接至目的服务器,在代理服务器端又无法对服务请求进行处理的情况下,直接将服务请求返回至客户端,以放置服务请求在无法处理的状态下对处理资源的占用,从而在服务请求无法获取数据的情况下实现了处理兼容。
在上述任一实施例中,优选地,根据服务请求的类型,确定对应的mock配置规则,以根据mock配置规则修改服务请求中的指定入参数据服务请求,具体包括:在检测到服务请求为超文本传输协议调用请求的情况下,采用对应的请求接口;根据预设格式配置mock配置规则,以根据mock配置规则修改指定入参数据,并生成中间请求数据。
在该实施例中,在配置规则为http(超文本传输协议)调用,即接收到的为HTTP请求,这种情况下,对应一个http请求接口调用以约定格式的配置请求参数处理规则,以将服务请求配置为对应的配置格式,以通过配置操作将服务请求转变为中间请求数据,从而方便后续的数据处理与对应的远程调用操作。
在上述任一项实施例中,优选地,根据预设格式配置mock配置规则,以根据mock配置规则修改指定入参数据,并生成中间请求数据,具体包括:检测服务请求中是否具有指定格式的入参数据;在检测到具有指定格式的入参数据的情况下,对入参数据配置json规则;在检测到不具有指定格式的入参数据的情况下,添加入参数据,以对入参数据配置json规则;对配置完毕的入参数据执行key值修改操作,以生成中间请求数据。
在该实施例中,json格式为一种轻量级的数据交换格式,采用完全独立于编程语言的文本来存储和表示数据,易于用户阅读与编写,并且易于机器解析和生成,从而在采用该格式进行数据传输时,能够提升传输效率,支持配置json格式的处理规则。首先通过编解码将传输流数据转换为可供处理的数据,并在请求之前或者接收返回结果之后通过配置处理规则得到理想数据。一方面,在环境依赖服务不通的情况下,可以通过代理将服务打通,同时通过配置规则的方式获取多种场景的数据。
在上述任一项实施例中,优选地,根据服务请求的类型,确定对应的mock配置规则,以根据mock配置规则修改服务请求中的指定入参数据,具体包括:在检测到服务请求为thrift远程调用的情况下,根据thrift服务确定对应的mock配置规则,以根据mock配置规则处理服务请求,并生成中间请求数据。
在该实施例中,thrift为一种跨语言的远程过程调用框架,在配置规则为thrift远程调用,即接收到的为thrift远程访问请求的情况下,采用对应的服务进行配置处理,从而使代理服务器在进行TCP包请求处理的基础上,实现代理服务的通用性,从而能够支持多协议扩展。
在已支持THRIFT和HTTP协议之外,还可以可支持扩展redis、mysql连接等。
在上述任一项实施例中,优选地,还包括:对中间请求数据执行编码操作,以生成可传输处理数据。
在该实施例中,通过将中间请求数据进行编码操作,以通过编码操作将中间请求数据转换为能够传输的可传输处理数据,从而能够将可传输处理数据发送至对应的目的服务器,以获取远程访问结果。
在上述任一项实施例中,优选地,对中间请求数据执行编码操作,以生成可传输处理数据,具体包括:将中间请求数据编码为二进制的可传输处理数据,以将可传输处理数据发送至目的服务器。
在该实施例中,通过对二进制的反馈结果进行解码操作,以解析为可处理结果数据,从而能够使代理服务器根据mock处理规则对处理结果进行修改,以实现远程访问数据的完整性。
在上述任一项实施例中,优选地,将修改后的服务请求发送至目的服务器,并接收目的服务器根据服务请求反馈的第一结果数据,还包括:在接收到第一结果数据后,检测是否具有与第一结果数据匹配的第二mock处理规则;在检测到具有第二mock处理规则的情况下,根据第二mock处理规则修改第一结果数据,并将修改后的结果数据发送至客户端;在检测到不具有第二mock处理规则的情况下,直接将第一结果数据发送至客户端。
在该实施例中,代理服务器在接收到目的服务器反馈的第一结果数据之后,还能够对第一结果数据进行进一步mock处理,以实现远程调用的数据的mock实现,以及结果数据的优化处理,进而保证数据的完整性。
进一步地,基于TCP请求的代理实现,对建立在TCP请求上的服务具有通用性。
图2示出了客户端、代理服务器与目的服务器之间的数据传输示意图。
如图2所示,在目的服务器206能够提供服务的情况下,代理服务器204在接收到服务请求后,对服务请求中的参数执行部分修改,以生成向目的服务器206发送虚拟构造的mock请求,并接收目的服务器206反馈的反馈结果,进一步地,在接收到目的服务器206反馈的反馈结果之后,根据mock处理规则对反馈结果执行部分修改,以对反馈结果进行优化,并将优化的结果反馈给客户端202。
在目的服务器206不能够提供服务的情况下,代理服务器204在接收到服务请求后,则可以修改服务请求,以根据修改后的服务请求创建虚拟mock对象,并根据虚拟mock对象向客户端202反馈处理结果。
如图3所示,根据本发明的另一个实施例的请求代理实现方法,包括:
步骤302,客户端将TCP请求设置转发;
步骤304,TCP服务请求发送到代理服务器;
步骤306,代理服务器接收TCP服务请求;
步骤308,检测目的服务器是否提供服务,在检测结果为“是”时,进入步骤310,在检测结果为“否”时;进入步骤326;
步骤310,根据请求类型对服务请求进行数据解码;
步骤312,以约定格式配置请求参数处理规则;
步骤314,对服务请求进行处理;
步骤316,对处理后的数据进行数据编码;
步骤318,将编码后的请求发送到目的服务器;
步骤320,接收服务器返回的结果数据;
步骤322,对结果数据进行数据解码;
步骤324,客户端数据转发;
步骤326,检测是否设置了处理规则,在检测结果为“是”时,进入步骤328,在检测结果为“否”时;进入步骤330;
步骤328,对数据进行处理,并进入步骤330;
步骤330,返回数据给客户端。
如图4所示,根据本发的实施例的请求代理实现装置40,包括:存储器402和处理器404;存储器402,用于存储存储器402用于存储程序代码;处理器404,用于调用程序代码执行:响应于接收到的由客户端通过传输控制协议发送的服务请求,向对应的目的服务器发送连接请求;在目的服务器响应连接请求的情况下,根据服务请求的类型,确定对应的mock配置规则,以根据mock配置规则修改服务请求中的指定入参数据;将修改后的服务请求发送至目的服务器,并接收目的服务器根据服务请求反馈的第一结果数据。
在该实施例中,代理服务器接收到客户端发送的TCP包服务请求后,首先检测是否能够与目的服务器建立间接,以在能够建立连接的情况下确定目的服务器是否能够提供服务,并且在确定目的服务能够提供服务的情况下,根据不同的配置规则,对服务请求进行处理,以通过mock配置规则修改服务请求中的指定入参数据,即只对影响服务进程处理的入参进行处理,并在处理之后发送至对应的目的服务器,以接收目的服务器根据服务请求反馈的第一结果数据,以实现通过代理服务器的请求代理,与现有技术中的mock打桩的处理方式相比,只需要对指定的入参数据进行修改,而不需要将所有数据进行mock处理,能够简化处理过程以及降低处理成本。其中,本领域的技术人员能够理解的是,mock是用来模拟在应用中不容易构造或者比较复杂的对象,以保证对需要远程调用的数据的mock实现,mock对象即对真实对象在远程调用期间的代替品,以保证远程调用的顺利执行。
在上述实施例中,优选地,处理器404,具体用于:在目的服务器未响应连接请求的情况下,检测是否预设有第一mock处理规则;在检测到预设有第一mock处理规则的情况下,根据第一mock处理规则处理服务请求,以通过对指定返回数据进行修改,生成服务请求的第二结果数据,并将第二结果数据发送至客户端。
在该实施例中,在目的服务器未响应连接请求的情况下,对服务请求的处理过程需要在代理服务器端完成,此时需要检测代理服务器端是否预设有第一mock处理规则,以在检测到预设有该第一mock处理规则的情况下,通过进行mock处理,在代理服务器端完成请求代理操作,以实现对服务请求的处理,通过根据预设的第一mock处理规则执行数据修改操作,即代理服务器将服务请求中与业务相关的代码进行mock操作,以形成mock服务,进而生成第二结果数据,从而实现在相应场景中对对服务请求的处理,一方面,实现了与通过数据传输控制协议传输的服务请求匹配的场景需求,从而降低该处理结果对后续处理的不良影响,另一方面,通过mock处理规则的设置,实现部分数据的修改,以实现远程调用的数据的mock实现,以及结果数据的优化处理,并保证返回的处理结果的完整性。
在上述任一项实施例中,优选地,处理器404,具体用于:在检测到未预设第一mock处理规则的情况下,直接将服务请求返回至客户端。
在该实施例中,在未检测到具有第一mock处理规则的情况下,即在无法连接至目的服务器,在代理服务器端又无法对服务请求进行处理的情况下,直接将服务请求返回至客户端,以放置服务请求在无法处理的状态下对处理资源的占用,从而在服务请求无法获取数据的情况下实现了处理兼容。
在上述任一项实施例中,优选地,处理器404,具体用于:在检测到服务请求为超文本传输协议调用请求的情况下,采用对应的请求接口;根据预设格式配置mock配置规则,以根据mock配置规则修改指定入参数据,并生成中间请求数据。
在该实施例中,在配置规则为http(超文本传输协议)调用,即接收到的为HTTP请求,这种情况下,对应一个http请求接口调用以约定格式的配置请求参数处理规则,以将服务请求配置为对应的配置格式,以通过配置操作将服务请求转变为中间请求数据,从而方便后续的数据处理与对应的远程调用操作。
在上述任一项实施例中,优选地,处理器404,具体用于:检测服务请求中是否具有指定格式的入参数据;在检测到具有指定格式的入参数据的情况下,对入参数据配置json规则;在检测到不具有指定格式的入参数据的情况下,添加入参数据,以对入参数据配置json规则;对配置完毕的入参数据执行key值修改操作,以生成中间请求数据。
在该实施例中,json格式为一种轻量级的数据交换格式,采用完全独立于编程语言的文本来存储和表示数据,易于用户阅读与编写,并且易于机器解析和生成,从而在采用该格式进行数据传输时,能够提升传输效率,支持配置json格式的处理规则。首先通过编解码将传输流数据转换为可供处理的数据,并在请求之前或者接收返回结果之后通过配置处理规则得到理想数据。一方面,在环境依赖服务不通的情况下,可以通过代理将服务打通,同时通过配置规则的方式获取多种场景的数据。
在上述任一项实施例中,优选地,处理器404,具体用于:在检测到服务请求为thrift远程调用的情况下,根据thrift服务确定对应的mock配置规则,以根据mock配置规则处理服务请求,并生成中间请求数据。
在该实施例中,thrift为一种跨语言的远程过程调用框架,在配置规则为thrift远程调用,即接收到的为thrift远程访问请求的情况下,采用对应的服务进行配置处理,从而使代理服务器在进行TCP包请求处理的基础上,实现代理服务的通用性,从而能够支持多协议扩展。
在已支持THRIFT和HTTP协议之外,还可以可支持扩展redis、mysql连接等。
在上述任一项实施例中,优选地,处理器404,具体用于:对中间请求数据执行编码操作,以生成可传输处理数据。
在该实施例中,通过将中间请求数据进行编码操作,以通过编码操作将中间请求数据转换为能够传输的可传输处理数据,从而能够将可传输处理数据发送至对应的目的服务器,以获取远程访问结果。
在上述任一项实施例中,优选地,处理器404,具体用于:将中间请求数据编码为二进制的可传输处理数据,以将可传输处理数据发送至目的服务器。
在该实施例中,通过对二进制的反馈结果进行解码操作,以解析为可处理结果数据,从而能够使代理服务器根据mock处理规则对处理结果进行修改,以实现远程访问数据的完整性。
在上述任一项实施例中,优选地,处理器404,具体用于:在接收到第一结果数据后,检测是否具有与第一结果数据匹配的第二mock处理规则;在检测到具有第二mock处理规则的情况下,根据第二mock处理规则修改第一结果数据,并将修改后的结果数据发送至客户端;在检测到不具有第二mock处理规则的情况下,直接将第一结果数据发送至客户端。
在该实施例中,代理服务器在接收到目的服务器反馈的第一结果数据之后,还能够对第一结果数据进行进一步mock处理,以实现远程调用的数据的mock实现,以及结果数据的优化处理,进而保证数据的完整性。
进一步地,基于TCP请求的代理实现,对建立在TCP请求上的服务具有通用性。
根据本发明的实施例提供的服务器,包括:上述任一实施例所述的请求代理实现装置40。
根据本发明的实施例提供的计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述任一项请求代理实现:
响应于接收到的由客户端通过传输控制协议发送的服务请求,向对应的目的服务器发送连接请求;在目的服务器响应连接请求的情况下,根据服务请求的类型,确定对应的mock配置规则,以根据mock配置规则修改服务请求中的指定入参数据;将修改后的服务请求发送至目的服务器,并接收目的服务器根据服务请求反馈的第一结果数据。
在该实施例中,代理服务器接收到客户端发送的TCP包服务请求后,首先检测是否能够与目的服务器建立间接,以在能够建立连接的情况下确定目的服务器是否能够提供服务,并且在确定目的服务能够提供服务的情况下,根据不同的配置规则,对服务请求进行处理,以通过mock配置规则修改服务请求中的指定入参数据,即只对影响服务进程处理的入参进行处理,并在处理之后发送至对应的目的服务器,以接收目的服务器根据服务请求反馈的第一结果数据,以实现通过代理服务器的请求代理,与现有技术中的mock打桩的处理方式相比,只需要对指定的入参数据进行修改,而不需要将所有数据进行mock处理,能够简化处理过程以及降低处理成本。其中,本领域的技术人员能够理解的是,mock是用来模拟在应用中不容易构造或者比较复杂的对象,以保证对需要远程调用的数据的mock实现,mock对象即对真实对象在远程调用期间的代替品,以保证远程调用的顺利执行。
在上述实施例中,优选地,还包括:在目的服务器未响应连接请求的情况下,检测是否预设有第一mock处理规则;在检测到预设有第一mock处理规则的情况下,根据第一mock处理规则处理服务请求,以通过对指定返回数据进行修改,生成服务请求的第二结果数据,并将第二结果数据发送至客户端。
在该实施例中,在目的服务器未响应连接请求的情况下,对服务请求的处理过程需要在代理服务器端完成,此时需要检测代理服务器端是否预设有第一mock处理规则,以在检测到预设有该第一mock处理规则的情况下,通过进行mock处理,在代理服务器端完成请求代理操作,以实现对服务请求的处理,通过根据预设的第一mock处理规则执行数据修改操作,即代理服务器将服务请求中与业务相关的代码进行mock操作,以形成mock服务,进而生成第二结果数据,从而实现在相应场景中对对服务请求的处理,一方面,实现了与通过数据传输控制协议传输的服务请求匹配的场景需求,从而降低该处理结果对后续处理的不良影响,另一方面,通过mock处理规则的设置,实现部分数据的修改,以实现远程调用的数据的mock实现,以及结果数据的优化处理,并保证返回的处理结果的完整性。
在上述任一实施例中,优选地,还包括:在检测到未预设第一mock处理规则的情况下,直接将服务请求返回至客户端。
在该实施例中,在未检测到具有第一mock处理规则的情况下,即在无法连接至目的服务器,在代理服务器端又无法对服务请求进行处理的情况下,直接将服务请求返回至客户端,以放置服务请求在无法处理的状态下对处理资源的占用,从而在服务请求无法获取数据的情况下实现了处理兼容。
在上述任一实施例中,优选地,根据服务请求的类型,确定对应的mock配置规则,以根据mock配置规则修改服务请求中的指定入参数据服务请求,具体包括:在检测到服务请求为超文本传输协议调用请求的情况下,采用对应的请求接口;根据预设格式配置mock配置规则,以根据mock配置规则修改指定入参数据,并生成中间请求数据。
在该实施例中,在配置规则为http(超文本传输协议)调用,即接收到的为HTTP请求,这种情况下,对应一个http请求接口调用以约定格式的配置请求参数处理规则,以将服务请求配置为对应的配置格式,以通过配置操作将服务请求转变为中间请求数据,从而方便后续的数据处理与对应的远程调用操作。
在上述任一项实施例中,优选地,根据预设格式配置mock配置规则,以根据mock配置规则修改指定入参数据,并生成中间请求数据,具体包括:检测服务请求中是否具有指定格式的入参数据;在检测到具有指定格式的入参数据的情况下,对入参数据配置json规则;在检测到不具有指定格式的入参数据的情况下,添加入参数据,以对入参数据配置json规则;对配置完毕的入参数据执行key值修改操作,以生成中间请求数据。
在该实施例中,json格式为一种轻量级的数据交换格式,采用完全独立于编程语言的文本来存储和表示数据,易于用户阅读与编写,并且易于机器解析和生成,从而在采用该格式进行数据传输时,能够提升传输效率,支持配置json格式的处理规则。首先通过编解码将传输流数据转换为可供处理的数据,并在请求之前或者接收返回结果之后通过配置处理规则得到理想数据。一方面,在环境依赖服务不通的情况下,可以通过代理将服务打通,同时通过配置规则的方式获取多种场景的数据。
在上述任一项实施例中,优选地,根据服务请求的类型,确定对应的mock配置规则,以根据mock配置规则修改服务请求中的指定入参数据,具体包括:在检测到服务请求为thrift远程调用的情况下,根据thrift服务确定对应的mock配置规则,以根据mock配置规则处理服务请求,并生成中间请求数据。
在该实施例中,thrift为一种跨语言的远程过程调用框架,在配置规则为thrift远程调用,即接收到的为thrift远程访问请求的情况下,采用对应的服务进行配置处理,从而使代理服务器在进行TCP包请求处理的基础上,实现代理服务的通用性,从而能够支持多协议扩展。
在已支持THRIFT和HTTP协议之外,还可以可支持扩展redis、mysql连接等。
在上述任一项实施例中,优选地,还包括:对中间请求数据执行编码操作,以生成可传输处理数据。
在该实施例中,通过将中间请求数据进行编码操作,以通过编码操作将中间请求数据转换为能够传输的可传输处理数据,从而能够将可传输处理数据发送至对应的目的服务器,以获取远程访问结果。
在上述任一项实施例中,优选地,对中间请求数据执行编码操作,以生成可传输处理数据,具体包括:将中间请求数据编码为二进制的可传输处理数据,以将可传输处理数据发送至目的服务器。
在该实施例中,通过对二进制的反馈结果进行解码操作,以解析为可处理结果数据,从而能够使代理服务器根据mock处理规则对处理结果进行修改,以实现远程访问数据的完整性。
在上述任一项实施例中,优选地,将修改后的服务请求发送至目的服务器,并接收目的服务器根据服务请求反馈的第一结果数据,还包括:在接收到第一结果数据后,检测是否具有与第一结果数据匹配的第二mock处理规则;在检测到具有第二mock处理规则的情况下,根据第二mock处理规则修改第一结果数据,并将修改后的结果数据发送至客户端;在检测到不具有第二mock处理规则的情况下,直接将第一结果数据发送至客户端。
在该实施例中,代理服务器在接收到目的服务器反馈的第一结果数据之后,还能够对第一结果数据进行进一步mock处理,以实现远程调用的数据的mock实现,以及结果数据的优化处理,进而保证数据的完整性。
进一步地,基于TCP请求的代理实现,对建立在TCP请求上的服务具有通用性。
本发明实施例的方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
本发明实施例的防盗制动控制装置的单元模块可以根据实际需要进行合并、划分和删减。
进一步地,可以理解的是,流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在本发明的描述中,术语“第一”、“第二”和“第三”仅用于描述的目的,而不能理解为指示或暗示相对重要性,对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明实施例中的具体含义。
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (20)
1.一种请求代理实现方法,适用于代理服务器,其特征在于,包括:
响应于接收到的由客户端通过传输控制协议发送的服务请求,向对应的目的服务器发送连接请求;
在所述目的服务器响应所述连接请求的情况下,根据所述服务请求的类型,确定对应的mock配置规则,以根据所述mock配置规则修改所述服务请求中的指定入参数据;
将修改后的所述服务请求发送至所述目的服务器,并接收所述目的服务器根据所述服务请求反馈的第一结果数据。
2.根据权利要求1所述的请求代理实现方法,其特征在于,还包括:
在所述目的服务器未响应所述连接请求的情况下,检测是否预设有第一mock处理规则;
在检测到预设有所述第一mock处理规则的情况下,根据所述第一mock处理规则处理所述服务请求,以通过对指定返回数据进行修改,生成所述服务请求的第二结果数据,并将所述第二结果数据发送至所述客户端。
3.根据权利要求2所述的请求代理实现方法,其特征在于,还包括:
在检测到未预设所述第一mock处理规则的情况下,直接将所述服务请求返回至所述客户端。
4.根据权利要求1所述的请求代理实现方法,其特征在于,所述根据所述服务请求的类型,确定对应的mock配置规则,以根据所述mock配置规则修改所述服务请求中的指定入参数据,具体包括:
在检测到所述服务请求为超文本传输协议调用请求的情况下,采用对应的请求接口;
根据预设格式配置所述mock配置规则,以根据所述mock配置规则修改所述指定入参数据,并生成中间请求数据。
5.根据权利要求4所述的请求代理实现方法,其特征在于,所述根据预设格式配置所述mock配置规则,以根据所述mock配置规则修改所述指定入参数据,并生成中间请求数据,具体包括:
检测所述服务请求中是否具有指定格式的入参数据;
在检测到具有所述指定格式的入参数据的情况下,对所述入参数据配置json规则;
在检测到不具有所述指定格式的入参数据的情况下,添加所述入参数据,以对所述入参数据配置所述json规则;
对配置完毕的所述入参数据执行key值修改操作,以生成所述中间请求数据。
6.根据权利要求1所述的请求代理实现方法,其特征在于,所述根据所述服务请求的类型,确定对应的mock配置规则,以根据所述mock配置规则修改所述服务请求中的指定入参数据,具体包括:
在检测到所述服务请求为thrift远程调用的情况下,根据thrift服务确定对应的所述mock配置规则,以根据所述mock配置规则处理所述服务请求,并生成中间请求数据。
7.根据权利要求4或6所述的请求代理实现方法,其特征在于,还包括:
对所述中间请求数据执行编码操作,以生成可传输处理数据。
8.根据权利要求7所述的请求代理实现方法,其特征在于,所述对所述中间请求数据执行编码操作,以生成可传输处理数据,具体包括:
将所述中间请求数据编码为二进制的所述可传输处理数据,以将所述可传输处理数据发送至所述目的服务器。
9.根据权利要求1至6中任一项所述的请求代理实现方法,其特征在于,所述将修改后的所述服务请求发送至所述目的服务器,并接收所述目的服务器根据所述服务请求反馈的第一结果数据,还包括:
在接收到所述第一结果数据后,检测是否具有与所述第一结果数据匹配的第二mock处理规则;
在检测到具有所述第二mock处理规则的情况下,根据所述第二mock处理规则修改所述第一结果数据,并将修改后的结果数据发送至所述客户端;
在检测到不具有所述第二mock处理规则的情况下,直接将所述第一结果数据发送至所述客户端。
10.一种请求代理实现装置,适用于代理服务器,其特征在于,包括:存储器和处理器;
所述存储器,用于存储所述存储器用于存储程序代码;
所述处理器,用于调用所述程序代码执行:
响应于接收到的由客户端通过传输控制协议发送的服务请求,向对应的目的服务器发送连接请求;
在所述目的服务器响应所述连接请求的情况下,根据所述服务请求的类型,确定对应的mock配置规则,以根据所述mock配置规则修改所述服务请求中的指定入参数据;
将修改后的所述服务请求发送至所述目的服务器,并接收所述目的服务器根据所述服务请求反馈的第一结果数据。
11.根据权利要求10所述的请求代理实现装置,其特征在于,所述处理器,具体用于:
在所述目的服务器未响应所述连接请求的情况下,检测是否预设有第一mock处理规则;
在检测到预设有所述第一mock处理规则的情况下,根据所述第一mock处理规则处理所述服务请求,以通过对指定返回数据进行修改,生成所述服务请求的第二结果数据,并将所述第二结果数据发送至所述客户端。
12.根据权利要求11所述的请求代理实现装置,其特征在于,所述处理器,具体用于:
在检测到未预设所述第一mock处理规则的情况下,直接将所述服务请求返回至所述客户端。
13.根据权利要求10所述的请求代理实现装置,其特征在于,所述处理器,具体用于:
在检测到所述服务请求为超文本传输协议调用请求的情况下,采用对应的请求接口;
根据预设格式配置所述mock配置规则,以根据所述mock配置规则修改所述指定入参数据,并生成中间请求数据。
14.根据权利要求13所述的请求代理实现装置,其特征在于,所述处理器,具体用于:
检测所述服务请求中是否具有指定格式的入参数据;
在检测到具有所述指定格式的入参数据的情况下,对所述入参数据配置json规则;
在检测到不具有所述指定格式的入参数据的情况下,添加所述入参数据,以对所述入参数据配置所述json规则;
对配置完毕的所述入参数据执行key值修改操作,以生成所述中间请求数据。
15.根据权利要求10所述的请求代理实现装置,其特征在于,所述处理器,具体用于:
在检测到所述服务请求为thrift远程调用的情况下,根据thrift服务确定对应的所述mock配置规则,以根据所述mock配置规则处理所述服务请求,并生成中间请求数据。
16.根据权利要求13或15所述的请求代理实现装置,其特征在于,所述处理器,具体用于:
对所述中间请求数据执行编码操作,以生成可传输处理数据。
17.根据权利要求16所述的请求代理实现装置,其特征在于,所述处理器,具体用于:
将所述中间请求数据编码为二进制的所述可传输处理数据,以将所述可传输处理数据发送至所述目的服务器。
18.根据权利要求10至15中任一项所述的请求代理实现装置,其特征在于,所述处理器,具体用于:
在接收到所述第一结果数据后,检测是否具有与所述第一结果数据匹配的第二mock处理规则;
在检测到具有所述第二mock处理规则的情况下,根据所述第二mock处理规则修改所述第一结果数据,并将修改后的结果数据发送至所述客户端;
在检测到不具有所述第二mock处理规则的情况下,直接将所述第一结果数据发送至所述客户端。
19.一种服务器,其特征在于,包括:
如权利要求10至18中任一项所述的请求代理实现装置。
20.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至9中任一项所述的请求代理实现方法限定的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910147482.6A CN111629014B (zh) | 2019-02-27 | 2019-02-27 | 请求代理实现方法、实现装置、服务器和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910147482.6A CN111629014B (zh) | 2019-02-27 | 2019-02-27 | 请求代理实现方法、实现装置、服务器和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111629014A CN111629014A (zh) | 2020-09-04 |
CN111629014B true CN111629014B (zh) | 2023-03-24 |
Family
ID=72273029
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910147482.6A Active CN111629014B (zh) | 2019-02-27 | 2019-02-27 | 请求代理实现方法、实现装置、服务器和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111629014B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113746851B (zh) * | 2021-09-08 | 2023-08-18 | 上海幻电信息科技有限公司 | 一种支持实时解析grpc请求的代理系统和方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2831746A1 (fr) * | 2001-10-30 | 2003-05-02 | Activia Networks | Procede, systeme et commutateur pour associer un serveur auxiliaire d'un reseau d'acheminement de contenus a un equipement d'un reseau informatique |
CN106648945A (zh) * | 2016-09-30 | 2017-05-10 | 北京金山安全软件有限公司 | 一种接口数据测试方法、装置及电子设备 |
CN107179984A (zh) * | 2016-03-10 | 2017-09-19 | 北京京东尚科信息技术有限公司 | 一种接口mock方法及接口测试方法 |
CN107733866A (zh) * | 2017-09-12 | 2018-02-23 | 阿里巴巴集团控股有限公司 | Rpc请求、rpc请求处理方法、装置以及设备 |
TW201828093A (zh) * | 2017-01-23 | 2018-08-01 | 阿里巴巴集團服務有限公司 | 訪問請求轉換的方法和裝置 |
CN108733554A (zh) * | 2017-04-21 | 2018-11-02 | 北京京东尚科信息技术有限公司 | Mock方法和装置 |
-
2019
- 2019-02-27 CN CN201910147482.6A patent/CN111629014B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2831746A1 (fr) * | 2001-10-30 | 2003-05-02 | Activia Networks | Procede, systeme et commutateur pour associer un serveur auxiliaire d'un reseau d'acheminement de contenus a un equipement d'un reseau informatique |
CN107179984A (zh) * | 2016-03-10 | 2017-09-19 | 北京京东尚科信息技术有限公司 | 一种接口mock方法及接口测试方法 |
CN106648945A (zh) * | 2016-09-30 | 2017-05-10 | 北京金山安全软件有限公司 | 一种接口数据测试方法、装置及电子设备 |
TW201828093A (zh) * | 2017-01-23 | 2018-08-01 | 阿里巴巴集團服務有限公司 | 訪問請求轉換的方法和裝置 |
CN108733554A (zh) * | 2017-04-21 | 2018-11-02 | 北京京东尚科信息技术有限公司 | Mock方法和装置 |
CN107733866A (zh) * | 2017-09-12 | 2018-02-23 | 阿里巴巴集团控股有限公司 | Rpc请求、rpc请求处理方法、装置以及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111629014A (zh) | 2020-09-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10009303B2 (en) | Message push method and apparatus | |
CN109815025B (zh) | 一种业务模型调用方法、装置及存储介质 | |
CN109445968A (zh) | 不同协议的服务请求处理方法、装置、设备及存储介质 | |
CN108833510B (zh) | 消息处理方法和装置 | |
CN101854371A (zh) | JavaScript对象的调用及处理的方法、装置 | |
CN112615822A (zh) | 一种消息处理方法、装置、计算设备及可读存储介质 | |
CN111770052B (zh) | 一种云游戏支付方法、装置、设备及介质 | |
CN114298284A (zh) | 网络模型的转换方法、装置、系统、存储介质及电子装置 | |
CN111787054B (zh) | 一种云游戏输入方法、装置、设备及介质 | |
US20210124591A1 (en) | Data processing method and system for intercepting signals between a peripheral device and a software application | |
CN109067860B (zh) | 一种移动端消息处理方法及相关装置 | |
CN112532673A (zh) | 消息发送方法及装置、计算机可读存储介质、电子设备 | |
CN107295003B (zh) | 一种数据传输方法、装置及系统 | |
CN106407061B (zh) | 一种北向接口测试装置和北向接口的测试方法 | |
CN111629014B (zh) | 请求代理实现方法、实现装置、服务器和存储介质 | |
CN108512889B (zh) | 一种基于http的应用响应推送方法及代理服务器 | |
CN106454403A (zh) | 数据显示方法、设备及系统 | |
CN115756771B (zh) | 微服务化的前置系统、工作流调度方法及装置 | |
CN111158661A (zh) | 系统接口对接方法、装置、介质及电子设备 | |
JPH08212180A (ja) | プロセス間通信処理装置 | |
CN110548285B (zh) | 游戏通信控制方法及装置、介质及电子设备 | |
CN106874004A (zh) | 低版本软件兼容高版本文件的方法以及客户端和服务器 | |
CN116132214B (zh) | 基于事件总线模型的事件传输方法、装置、设备及介质 | |
CA3176864A1 (en) | General-purpose processing method and apparatus for data exchange | |
CN117201577B (zh) | 基于pisa的跨平台api和spi的通讯方法和系统 |
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 |