服务注册及拦截方法、装置、电子设备及可读存储介质
文献发布时间:2023-06-19 10:27:30
技术领域
本发明涉及数据处理领域,尤其涉及一种服务注册及拦截方法、装置、电子设备及可读存储介质。
背景技术
随着科技的发展,通讯在人们生活中的运用越来越广泛。gRPC(Google RemoteProcedure Call,Google远程过程调用)框架是一个基础的网络通讯组件,在通讯过程中涉及到服务的注册、拦截器的注册及服务与拦截器的绑定,而现有的gRPC框架需要逐一编写对应的注册代码和绑定代码,难以扩展,若需要注册的服务较多,则会造成代码过于臃肿,难以维护,且现有的gRPC框架会拦截服务下的所有方法,不能拦截指定的方法,无法实现细粒化拦截。因此,亟需一种服务注册及拦截方法,以提高代码的可扩展性、可维护性,并实现细粒化拦截。
发明内容
鉴于以上内容,有必要提供一种服务注册及拦截方法,旨在提高代码的可扩展性、可维护性,并实现细粒化拦截。
本发明提供的服务注册及拦截方法,包括:
解析用户基于客户端发出的针对目标应用程序的服务注册请求,获取所述服务注册请求携带的待注册服务名称、待注册拦截器名称、所述待注册服务与待注册拦截器的绑定关系及所述待注册服务的待拦截方法名列表;
从数据库中获取预先确定的注解定义代码,基于所述待注册服务名称、待注册拦截器名称、所述待注册服务与待注册拦截器的绑定关系及所述待注册服务的待拦截方法名列表生成服务定义代码,所述服务定义代码包括注解标识;
将所述注解定义代码及服务定义代码填入所述目标应用程序对应的主程序代码中,扫描所述主程序代码中的注解标识,对所述待注册服务和待注册拦截器执行注册操作及绑定操作;
实时监控针对所述目标应用程序的调用请求,获取所述调用请求携带的一个或多个待调用服务名称及其待调用方法名称,基于所述待调用服务名称及其待调用方法名称对所述调用请求执行拦截处理。
可选的,所述服务注册请求还包括待拦截事务,所述基于所述待注册服务名称、待注册拦截器名称、所述待注册服务与待注册拦截器的绑定关系及所述待注册服务的待拦截方法名列表生成服务定义代码包括:
基于所述待注册拦截器名称及所述待拦截事务生成第一定义代码;
基于所述待注册服务名称、所述待注册服务与待注册拦截器的绑定关系及所述待注册服务的待拦截方法名列表生成第二定义代码;
合并所述第一定义代码及第二定义代码得到服务定义代码。
可选的,所述扫描所述主程序代码中的注解标识,对所述待注册服务和待注册拦截器执行注册操作及绑定操作,包括:
扫描所述主程序代码中携带注解标识的程序段,对所述程序段执行正确性校验;
当校验通过时,基于所述程序段生成拦截数据,基于所述拦截数据对所述待注册服务和待注册拦截器执行注册操作及绑定操作。
可选的,在对所述程序段执行正确性校验之后,所述方法还包括:
若校验不通过,则对所述程序段进行标识,并发送预警信息至所述客户端。
可选的,所述基于所述待调用服务名称及其待调用方法名称对所述调用请求执行拦截处理,包括:
判断各个待调用服务是否绑定了拦截器;
当判断某一指定待调用服务绑定了拦截器时,判断所述指定待调用服务的待调用方法是否存在于所述指定待调用服务的待拦截方法名列表中;
当判断存在于所述指定待调用服务的待拦截方法名列表中时,对所述调用请求执行拦截处理。
可选的,在判断各个待调用服务是否绑定了拦截器之后,所述方法还包括:
若判断每个待调用服务均未绑定拦截器或所述指定待调用服务的待调用方法不存在于所述指定待调用服务的待拦截方法名列表中,则执行所述调用请求对应的调用操作。
为了解决上述问题,本发明还提供一种服务注册及拦截装置,所述装置包括:
解析模块,用于解析用户基于客户端发出的针对目标应用程序的服务注册请求,获取所述服务注册请求携带的待注册服务名称、待注册拦截器名称、所述待注册服务与待注册拦截器的绑定关系及所述待注册服务的待拦截方法名列表;
生成模块,用于从数据库中获取预先确定的注解定义代码,基于所述待注册服务名称、待注册拦截器名称、所述待注册服务与待注册拦截器的绑定关系及所述待注册服务的待拦截方法名列表生成服务定义代码,所述服务定义代码包括注解标识;
扫描模块,用于将所述注解定义代码及服务定义代码填入所述目标应用程序对应的主程序代码中,扫描所述主程序代码中的注解标识,对所述待注册服务和待注册拦截器执行注册操作及绑定操作;
拦截模块,用于实时监控针对所述目标应用程序的调用请求,获取所述调用请求携带的一个或多个待调用服务名称及其待调用方法名称,基于所述待调用服务名称及其待调用方法名称对所述调用请求执行拦截处理。
可选的,所述扫描所述主程序代码中的注解标识,对所述待注册服务和待注册拦截器执行注册操作及绑定操作,包括:
扫描所述主程序代码中携带注解标识的程序段,对所述程序段执行正确性校验;
当校验通过时,基于所述程序段生成拦截数据,基于所述拦截数据对所述待注册服务和待注册拦截器执行注册操作及绑定操作。
为了解决上述问题,本发明还提供一种电子设备,所述电子设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的服务注册及拦截程序,所述服务注册及拦截程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述服务注册及拦截方法。
为了解决上述问题,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有服务注册及拦截程序,所述服务注册及拦截程序可被一个或者多个处理器执行,以实现上述服务注册及拦截方法。
相较现有技术,本发明首先获取注解定义代码,基于待注册服务名称、待注册拦截器名称、待注册服务与待注册拦截器的绑定关系及待注册服务的待拦截方法名列表生成服务定义代码,服务定义代码包括注解标识;接着,将注解定义代码及服务定义代码填入目标应用程序对应的主程序代码中,扫描主程序代码中的注解标识,对待注册服务和待注册拦截器执行注册操作及绑定操作;最后,基于调用请求携带的待调用服务名称及其待调用方法名称对调用请求执行拦截处理。本方案仅需在待注册服务对应的服务定义代码中打上注解标识,即可实现服务的注册、拦截器的注册及服务与拦截器的绑定,提高了代码的可扩展性、可维护性;通过在服务定义代码中添加服务的待拦截方法名列表,解决了现有gRPC只能拦截服务下的所有方法、而不能拦截服务下的指定方法的技术问题,实现了精细化拦截。因此,本发明提高了代码的可扩展性、可维护性,并实现了细粒化拦截。
附图说明
图1为本发明一实施例提供的服务注册及拦截方法的流程示意图;
图2为本发明一实施例提供的服务注册及拦截装置的模块示意图;
图3为本发明一实施例提供的实现服务注册及拦截方法的电子设备的结构示意图;
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
本发明提供一种服务注册及拦截方法。参照图1所示,为本发明一实施例提供的服务注册及拦截方法的流程示意图。该方法可以由一个电子设备执行,该电子设备可以由软件和/或硬件实现。
本实施例中,服务注册及拦截方法包括:
S1、解析用户基于客户端发出的针对目标应用程序的服务注册请求,获取所述服务注册请求携带的待注册服务名称、待注册拦截器名称、所述待注册服务与待注册拦截器的绑定关系及所述待注册服务的待拦截方法名列表。
所述目标应用程序可以是通讯类APP,该目标应用程序采用gRPC框架进行通讯。gRPC是一种通用的RPC框架,面向移动和HTTP/2设计,支持C、Java和Go语言版本,框架采用protobuf(protobuf是一种平台无关、语言无关、可扩展且轻便高效的序列化数据结构的协议,协议是以.proto后缀的文件保存)二进制消息的序列化与反序列化结构。
服务(即服务类),在.proto文件里是以service关键字定义的,通过.proto文件生成的JAVA版里是以继承了io.grpc.BindableService接口的类;服务可以简单理解为系统对外提供访问的接口。
拦截器(即拦截器类),在gRPC框架里拦截器有客户端拦截器与服务端拦截器,本实施例中的拦截器为服务端拦截器,实现了io.grpc.ServerInterceptor接口的类为服务端拦截器。拦截器可以理解为在调用服务前做前置检查工作(将调用请求拦截下来后拦截器要做的前置检查工作可根据业务场景具体设置),例如1、调用者在访问需要登录后才能访问的服务时,拦截器可以先把调用者的请求拦截下来,判断调用者否已登录,若未登陆则不允许访问相应服务;例如2、系统要求调用者的IP地址要在系统的IP白名单内才允许访问服务,则可以用拦截器先拦截调用者请求,然后判断调用者IP是否在系统白名单内,若不在白名单内则拒绝访问服务,否则允许访问。
方法是用来完成某件事情或者实现某一功能(比如,控制输入或计算数值)的,通常会有一个返回值用来作为处理结果或计算结果。
S2、从数据库中获取预先确定的注解定义代码,基于所述待注册服务名称、待注册拦截器名称、所述待注册服务与待注册拦截器的绑定关系及所述待注册服务的待拦截方法名列表生成服务定义代码,所述服务定义代码包括注解标识。
所述注解定义代码为自定义的gRPC服务注解代码,本实施例中,所述注解为@GrpcServer,@GrpcServer注解的属性有value(服务名,类型为String)、interceptor(拦截器类Class,须实现io.grpc.ServerInterceptor接口,如果不设置该属性,则表示该服务无拦截器绑定,否则表示该服务与拦截器绑定)、interceptMethods(待拦截的方法名列表,如果不设置该属性,则拦截服务类的所有方法,否则拦截服务类的待拦截的方法名列表中的方法;该属性必须要interceptor属性设置时才生效)。
本实施例中,所述服务注册请求还包括待拦截事务(例如,判断调用者IP是否在系统白名单内),所述基于所述待注册服务名称、待注册拦截器名称、所述待注册服务与待注册拦截器的绑定关系及所述待注册服务的待拦截方法名列表生成服务定义代码包括:
A11、基于所述待注册拦截器名称及所述待拦截事务生成第一定义代码;
本实施例中,根据待注册拦截器名称可确定拦截器类名称xxxServerInterceptor,xxxServerInterceptor拦截器类需继承io.grpc.ServerInterceptor接口类,根据待拦截事务可生成对应的拦截业务代码,汇总后得到第一定义代码。
A12、基于所述待注册服务名称、所述待注册服务与待注册拦截器的绑定关系及所述待注册服务的待拦截方法名列表生成第二定义代码;
根据待注册服务名称可确定服务类名称xxxServer,xxxServer服务类需继承io.grpc.BindableService接口类,在xxxServer服务类上添加注解标识@GrpcServer,并根据待注册服务与待注册拦截器的绑定关系及待注册服务的待拦截方法名列表设置相关属性,汇总后得到第二定义代码。
A13、合并所述第一定义代码及第二定义代码得到服务定义代码。
S3、将所述注解定义代码及服务定义代码填入所述目标应用程序对应的主程序代码中,扫描所述主程序代码中的注解标识,对所述待注册服务和待注册拦截器执行注册操作及绑定操作。
本实施例中,所述扫描所述主程序代码中的注解标识,对所述待注册服务和待注册拦截器执行注册操作及绑定操作,包括:
B11、扫描所述主程序代码中携带注解标识的程序段,对所述程序段执行正确性校验;
所述正确性校验包括校验程序段中的服务类是否继承了io.grpc.BindableService接口类、校验拦截器类是否继承了io.grpc.ServerInterceptor接口类以及语法正确性校验。
B12、当校验通过时,基于所述程序段生成拦截数据,基于所述拦截数据对所述待注册服务和待注册拦截器执行注册操作及绑定操作。
本实施例中,所述拦截数据样例如下:
//拦截数据的结构体定义
struct
serverClass,//服务类
i
interceptMethods//要拦截该服务类下的方法名列表
}
本实施例中,通过调用gRPC框架提供的serverBuilder.addService方法循环将拦截数据中的服务和拦截器注册并绑定到系统中。
现有的gRPC框架在需要增加注册服务及绑定拦截器时,需要逐步添加每个服务及拦截器的注册代码、绑定代码,当增加的服务较多时,代码量较为庞大,而本实施例中,注册及绑定操作对应的代码只有一行,当需要增加服务注册及绑定拦截器时,只需要在对应的服务定义代码前添加注解标识并设置相关属性,删除服务或解绑拦截器时只需将注解标识删除或删除注解中的属性即可,本实施例使得代码可维护性更强且更易扩展。
本实施例中,在对所述程序段执行正确性校验之后,所述方法还包括:
若校验不通过,则对所述程序段进行标识,并发送预警信息至所述客户端。
S4、实时监控针对所述目标应用程序的调用请求,获取所述调用请求携带的一个或多个待调用服务名称及其待调用方法名称,基于所述待调用服务名称及其待调用方法名称对所述调用请求执行拦截处理。
所述基于所述待调用服务名称及其待调用方法名称对所述调用请求执行拦截处理,包括:
C11、判断各个待调用服务是否绑定了拦截器;
本实施例可根据程序段生成的拦截数据判断待调用服务是否绑定了拦截器。
C12、当判断某一指定待调用服务绑定了拦截器时,判断所述指定待调用服务的待调用方法是否存在于所述指定待调用服务的待拦截方法名列表中;
C13、当判断存在于所述指定待调用服务的待拦截方法名列表中时,对所述调用请求执行拦截处理。
将调用请求拦截后,可根据待拦截事务对应的拦截业务代码执行相应的业务处理。不同于现有gRPC框架只能拦截到服务粒度(只能拦截服务下的所有方法),本步骤实现了精细化拦截,可拦截服务的待拦截方法名列表中的任一指定方法。
本实施例中,在判断各个待调用服务是否绑定了拦截器之后,所述方法还包括:
若判断每个待调用服务均未绑定拦截器或所述指定待调用服务的待调用方法不存在于所述指定待调用服务的待拦截方法名列表中,则执行所述调用请求对应的调用操作。
由上述实施例可知,本发明提出的服务注册及拦截方法,首先,获取注解定义代码,基于待注册服务名称、待注册拦截器名称、待注册服务与待注册拦截器的绑定关系及待注册服务的待拦截方法名列表生成服务定义代码,服务定义代码包括注解标识;接着,将注解定义代码及服务定义代码填入目标应用程序对应的主程序代码中,扫描主程序代码中的注解标识,对待注册服务和待注册拦截器执行注册操作及绑定操作;最后,基于调用请求携带的待调用服务名称及其待调用方法名称对调用请求执行拦截处理。本方案仅需在待注册服务对应的服务定义代码中打上注解标识,即可实现服务的注册、拦截器的注册及服务与拦截器的绑定,提高了代码的可扩展性、可维护性;通过在服务定义代码中添加服务的待拦截方法名列表,解决了现有gRPC只能拦截服务下的所有方法、而不能拦截服务下的指定方法的技术问题,实现了精细化拦截。因此,本发明提高了代码的可扩展性、可维护性,并实现了细粒化拦截。
如图2所示,为本发明一实施例提供的服务注册及拦截装置的模块示意图。
本发明所述服务注册及拦截装置100可以安装于电子设备中。根据实现的功能,所述服务注册及拦截装置100可以包括解析模块110、生成模块120、扫描模块130及拦截模块140。本发明所述模块也可以称之为单元,是指一种能够被电子设备处理器所执行,并且能够完成固定功能的一系列计算机程序段,其存储在电子设备的存储器中。
在本实施例中,关于各模块/单元的功能如下:
解析模块110,用于解析用户基于客户端发出的针对目标应用程序的服务注册请求,获取所述服务注册请求携带的待注册服务名称、待注册拦截器名称、所述待注册服务与待注册拦截器的绑定关系及所述待注册服务的待拦截方法名列表。
所述目标应用程序可以是通讯类APP,该目标应用程序采用gRPC框架进行通讯。gRPC是一种通用的RPC框架,面向移动和HTTP/2设计,支持C、Java和Go语言版本,框架采用protobuf(protobuf是一种平台无关、语言无关、可扩展且轻便高效的序列化数据结构的协议,协议是以.proto后缀的文件保存)二进制消息的序列化与反序列化结构。
服务(即服务类),在.proto文件里是以service关键字定义的,通过.proto文件生成的JAVA版里是以继承了io.grpc.BindableService接口的类;服务可以简单理解为系统对外提供访问的接口。
拦截器(即拦截器类),在gRPC框架里拦截器有客户端拦截器与服务端拦截器,本实施例中的拦截器为服务端拦截器,实现了io.grpc.ServerInterceptor接口的类为服务端拦截器。拦截器可以理解为在调用服务前做前置检查工作(将调用请求拦截下来后拦截器要做的前置检查工作可根据业务场景具体设置),例如1、调用者在访问需要登录后才能访问的服务时,拦截器可以先把调用者的请求拦截下来,判断调用者否已登录,若未登陆则不允许访问相应服务;例如2、系统要求调用者的IP地址要在系统的IP白名单内才允许访问服务,则可以用拦截器先拦截调用者请求,然后判断调用者IP是否在系统白名单内,若不在白名单内则拒绝访问服务,否则允许访问。
方法是用来完成某件事情或者实现某一功能(比如,控制输入或计算数值)的,通常会有一个返回值用来作为处理结果或计算结果。
生成模块120,用于从数据库中获取预先确定的注解定义代码,基于所述待注册服务名称、待注册拦截器名称、所述待注册服务与待注册拦截器的绑定关系及所述待注册服务的待拦截方法名列表生成服务定义代码,所述服务定义代码包括注解标识。
所述注解定义代码为自定义的gRPC服务注解代码,本实施例中,所述注解为@GrpcServer,@GrpcServer注解的属性有value(服务名,类型为String)、interceptor(拦截器类Class,须实现io.grpc.ServerInterceptor接口,如果不设置该属性,则表示该服务无拦截器绑定,否则表示该服务与拦截器绑定)、interceptMethods(待拦截的方法名列表,如果不设置该属性,则拦截服务类的所有方法,否则拦截服务类的待拦截的方法名列表中的方法;该属性必须要interceptor属性设置时才生效)。
本实施例中,所述服务注册请求还包括待拦截事务(例如,判断调用者IP是否在系统白名单内),所述基于所述待注册服务名称、待注册拦截器名称、所述待注册服务与待注册拦截器的绑定关系及所述待注册服务的待拦截方法名列表生成服务定义代码包括:
A21、基于所述待注册拦截器名称及所述待拦截事务生成第一定义代码;
本实施例中,根据待注册拦截器名称可确定拦截器类名称xxxServerInterceptor,xxxServerInterceptor拦截器类需继承io.grpc.ServerInterceptor接口类,根据待拦截事务可生成对应的拦截业务代码,汇总后得到第一定义代码。
A22、基于所述待注册服务名称、所述待注册服务与待注册拦截器的绑定关系及所述待注册服务的待拦截方法名列表生成第二定义代码;
根据待注册服务名称可确定服务类名称xxxServer,xxxServer服务类需继承io.grpc.BindableService接口类,在xxxServer服务类上添加注解标识@GrpcServer,并根据待注册服务与待注册拦截器的绑定关系及待注册服务的待拦截方法名列表设置相关属性,汇总后得到第二定义代码。
A23、合并所述第一定义代码及第二定义代码得到服务定义代码。
扫描模块130,用于将所述注解定义代码及服务定义代码填入所述目标应用程序对应的主程序代码中,扫描所述主程序代码中的注解标识,对所述待注册服务和待注册拦截器执行注册操作及绑定操作。
本实施例中,所述扫描所述主程序代码中的注解标识,对所述待注册服务和待注册拦截器执行注册操作及绑定操作,包括:
B21、扫描所述主程序代码中携带注解标识的程序段,对所述程序段执行正确性校验;
所述正确性校验包括校验程序段中的服务类是否继承了io.grpc.BindableService接口类、校验拦截器类是否继承了io.grpc.ServerInterceptor接口类以及语法正确性校验。
B22、当校验通过时,基于所述程序段生成拦截数据,基于所述拦截数据对所述待注册服务和待注册拦截器执行注册操作及绑定操作。
本实施例中,所述拦截数据样例如下:
//拦截数据的结构体定义
struct
serverClass,//服务类
i
interceptMethods//要拦截该服务类下的方法名列表
}
本实施例中,通过调用gRPC框架提供的serverBuilder.addService方法循环将拦截数据中的服务和拦截器注册并绑定到系统中。
现有的gRPC框架在需要增加注册服务及绑定拦截器时,需要逐步添加每个服务及拦截器的注册代码、绑定代码,当增加的服务较多时,代码量较为庞大,而本实施例中,注册及绑定操作对应的代码只有一行,当需要增加服务注册及绑定拦截器时,只需要在对应的服务定义代码前添加注解标识并设置相关属性,删除服务或解绑拦截器时只需将注解标识删除或删除注解中的属性即可,本实施例使得代码可维护性更强且更易扩展。
本实施例中,在对所述程序段执行正确性校验之后,所述扫描模块130还用于:
若校验不通过,则对所述程序段进行标识,并发送预警信息至所述客户端。
拦截模块140,用于实时监控针对所述目标应用程序的调用请求,获取所述调用请求携带的一个或多个待调用服务名称及其待调用方法名称,基于所述待调用服务名称及其待调用方法名称对所述调用请求执行拦截处理。
所述基于所述待调用服务名称及其待调用方法名称对所述调用请求执行拦截处理,包括:
C21、判断各个待调用服务是否绑定了拦截器;
本实施例可根据程序段生成的拦截数据判断待调用服务是否绑定了拦截器。
C22、当判断某一指定待调用服务绑定了拦截器时,判断所述指定待调用服务的待调用方法是否存在于所述指定待调用服务的待拦截方法名列表中;
C23、当判断存在于所述指定待调用服务的待拦截方法名列表中时,对所述调用请求执行拦截处理。
将调用请求拦截后,可根据待拦截事务对应的拦截业务代码执行相应的业务处理。不同于现有gRPC框架只能拦截到服务粒度(只能拦截服务下的所有方法),本步骤实现了精细化拦截,可拦截服务的待拦截方法名列表中的任一指定方法。
本实施例中,在判断各个待调用服务是否绑定了拦截器之后,所述拦截模块140还用于:
若判断每个待调用服务均未绑定拦截器或所述指定待调用服务的待调用方法不存在于所述指定待调用服务的待拦截方法名列表中,则执行所述调用请求对应的调用操作。
如图3所示,为本发明一实施例提供的实现服务注册及拦截方法的电子设备的结构示意图。
所述电子设备1是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。所述电子设备1可以是计算机、也可以是单个网络服务器、多个网络服务器组成的服务器组或者基于云计算的由大量主机或者网络服务器构成的云,其中云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。
在本实施例中,电子设备1包括,但不仅限于,可通过系统总线相互通信连接的存储器11、处理器12、网络接口13,该存储器11中存储有服务注册及拦截程序10,所述服务注册及拦截程序10可被所述处理器12执行。图3仅示出了具有组件11-13以及服务注册及拦截程序10的电子设备1,本领域技术人员可以理解的是,图3示出的结构并不构成对电子设备1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
其中,存储器11包括内存及至少一种类型的可读存储介质。内存为电子设备1的运行提供缓存;可读存储介质可为如闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等的非易失性存储介质。在一些实施例中,可读存储介质可以是电子设备1的内部存储单元,例如该电子设备1的硬盘;在另一些实施例中,该非易失性存储介质也可以是电子设备1的外部存储设备,例如电子设备1上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。本实施例中,存储器11的可读存储介质通常用于存储安装于电子设备1的操作系统和各类应用软件,例如存储本发明一实施例中的服务注册及拦截程序10的代码等。此外,存储器11还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器12在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器12通常用于控制所述电子设备1的总体操作,例如执行与其他设备进行数据交互或者通信相关的控制和处理等。本实施例中,所述处理器12用于运行所述存储器11中存储的程序代码或者处理数据,例如运行服务注册及拦截程序10等。
网络接口13可包括无线网络接口或有线网络接口,该网络接口13用于在所述电子设备1与客户端(图中未画出)之间建立通信连接。
可选的,所述电子设备1还可以包括用户接口,用户接口可以包括显示器(Display)、输入单元比如键盘(Keyboard),可选的用户接口还可以包括标准的有线接口、无线接口。可选的,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在电子设备1中处理的信息以及用于显示可视化的用户界面。
应该了解,所述实施例仅为说明之用,在专利申请范围上并不受此结构的限制。
所述电子设备1中的所述存储器11存储的服务注册及拦截程序10是多个指令的组合,在所述处理器12中运行时,可以实现:
解析用户基于客户端发出的针对目标应用程序的服务注册请求,获取所述服务注册请求携带的待注册服务名称、待注册拦截器名称、所述待注册服务与待注册拦截器的绑定关系及所述待注册服务的待拦截方法名列表;
从数据库中获取预先确定的注解定义代码,基于所述待注册服务名称、待注册拦截器名称、所述待注册服务与待注册拦截器的绑定关系及所述待注册服务的待拦截方法名列表生成服务定义代码,所述服务定义代码包括注解标识;
将所述注解定义代码及服务定义代码填入所述目标应用程序对应的主程序代码中,扫描所述主程序代码中的注解标识,对所述待注册服务和待注册拦截器执行注册操作及绑定操作;
实时监控针对所述目标应用程序的调用请求,获取所述调用请求携带的一个或多个待调用服务名称及其待调用方法名称,基于所述待调用服务名称及其待调用方法名称对所述调用请求执行拦截处理。
具体地,所述处理器12对上述服务注册及拦截程序10的具体实现方法可参考图1对应实施例中相关步骤的描述,在此不赘述。
进一步地,所述电子设备1集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。所述计算机可读介质可以是非易失性的,也可以是非易失性的。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)。
所述计算机可读存储介质上存储有服务注册及拦截程序10,所述服务注册及拦截程序10可被一个或者多个处理器执行,本发明计算机可读存储介质具体实施方式与上述服务注册及拦截方法各实施例基本相同,在此不作赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的设备,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。
因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附关联图标记视为限制所涉及的权利要求。
此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第二等词语用来表示名称,而并不表示任何特定的顺序。
最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。
- 服务注册及拦截方法、装置、电子设备及可读存储介质
- 设备注册方法、装置、电子设备、服务器及可读存储介质