服务调用方法、装置、计算机设备和可读存储介质制造方法及图纸

技术编号:27486578 阅读:18 留言:0更新日期:2021-03-02 18:02
本申请提供了一种基于路由网关的服务调用方法、装置、计算机设备和可读存储介质。该方法包括:在编译期生成多个模块的模块元数据,并汇总所述模块元数据;对汇总的模块元数据执行完备性检查,并生成对应的汇总入口类;将所述汇总入口类向服务注册中心注册;以及响应于服务调用请求,通过所述服务注册中心发现所述服务调用请求所对应的目标服务,并调用所述目标服务。通过本申请,可以确保无环及对应的依赖存在,大大提高团队协作开发的效率。大大提高团队协作开发的效率。大大提高团队协作开发的效率。

【技术实现步骤摘要】
服务调用方法、装置、计算机设备和可读存储介质


[0001]本申请涉及应用发布
,尤其涉及基于路由网关的服务调用方法、装置、计算机设备和可读存储介质。

技术介绍

[0002]安卓(Android)是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由美国谷歌公司(Google)和开放手机联盟领导及开发。
[0003]程序的执行过程就是方法的调用过程,有方法调用,必然会促使对象跟对象之间产生依赖,除非一个对象不参与程序的运行,这样的对象就像一座孤岛,与其它对象没有任何交互,但是这样的对象也就没有任何存在价值。因此,在程序代码中,任何一个对象必然会与其它一个甚至更多个对象产生依赖关系。“方法调用”是最常见产生依赖的原因,一个对象与其它对象必然会通信(除非所有的代码逻辑全部写在了这个对象内部),通信通常情况下就意味着有方法的调用,亦即意味着这两个对象之间存在依赖关系(至少要有其它对象的引用才能调用方法),另外常见的一种产生依赖的原因是继承。
[0004]其中,若干个对象循环嵌套引用会产生循环依赖,而循环依赖的对象在运行时一直循环调用,直至内存溢出报错。为了衡量对象之间依赖程度的高低,人们引进了“耦合”这一概念,耦合度越高,说明对象之间的依赖程度越高。在多团队共同开发一个Android应用的情形下,需要一种通用技术降低团队之间的代码耦合度,最常用技术包括总线、路由、ServiceLoader(一种依赖倒置的开发方式)等,这几种方案最核心的思想,都是通过一个中间SDK来注册并分发消息、对象或者启动页面。
[0005]但是,尝试用针对路径或者约定的固定格式的key来分发所有内容,缺少强类型的约束,此外不能很好的处理URI(资源标识符),比如需要对HTTP URI进行映射或者转义;类似于ServiceLoader的依赖倒置的处理方式缺少生命周期以及服务之间的依赖检查,且十分繁琐。

技术实现思路

[0006]本申请的目的是提供一种基于路由网关的服务调用方法、装置、计算机设备和可读存储介质,用于解决现有技术中的上述技术问题。
[0007]一方面,为实现上述目的,本申请提供了一种服务调用方法。
[0008]该服务调用方法包括:在编译期生成多个模块的模块元数据,并汇总所述模块数据;对汇总的模块元数据执行完备性检查,并生成对应的汇总入口类;将所述汇总入口类向服务注册中心注册;以及响应于服务调用请求,通过所述服务注册中心发现所述服务调用请求所对应的目标服务,并调用所述目标服务。
[0009]进一步地,对汇总的模块元数据执行完备性检查,并生成对应的汇总入口类的步骤包括:对汇总的模块元数据执行完备性检查;若所述完备性检查被成功执行,生成对应的
汇总入口类。
[0010]进一步地,对汇总的模块元数据执行完备性检查的步骤包括:生成汇总的模块元数据对应的配置文件;基于所述配置文件对所述汇总的模块元数据执行完备性检查。
[0011]进一步地,所述完备性检查包括:依赖关系检查;循环依赖检查。
[0012]进一步地,响应于服务调用请求,通过所述服务注册中心发现所述服务调用请求所对应的目标服务,并调用所述目标服务的步骤包括:基于预设的路径规则对目标资源标识符执行匹配;跳转至匹配所得的目标页面,并加载第一模块;以及响应于所述第一模块的服务调用请求,通过所述服务注册中心发现所述服务调用请求所对应的目标服务,并调用所述目标服务。
[0013]进一步地,基于预设的路径规则对目标资源标识符执行匹配的步骤包括:确定目标资源标识符对应的路由类型;基于所述路由类型及预设的路径规则对目标资源标识符执行匹配。
[0014]进一步地,响应于服务调用请求,通过所述服务注册中心发现所述服务调用请求所对应的目标服务,并调用所述目标服务的步骤包括:响应于第一模块的服务调用请求,通过所述服务注册中心发现所述服务调用请求所对应的目标服务,并调用所述目标服务;其中所述目标服务由第二模块提供,所述第一模块与所述第二模块分别为Gradle模块并相互依赖;所述第一模块包含第一实现组件和第一接口组件,所述第二模块包含第二实现组件和第二接口组件,所述目标服务基于所述第二接口组件而被调用。
[0015]另一方面,为实现上述目的,本申请提供了一种基于路由网关的服务调用装置。
[0016]该基于路由网关的服务调用装置包括:元数据生成模块,用于在编译期生成多个模块的模块元数据,并汇总所述模块元数据;完备性检查模块,用于对汇总的模块元数据执行完备性检查,并生成对应的汇总入口类;注册模块,用于将所述汇总入口类向服务注册中心注册;以及服务调用模块,用于响应于服务调用请求,通过所述服务注册中心发现所述服务调用请求所对应的目标服务,并调用所述目标服务。
[0017]为实现上述目的,本申请还提供一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,该处理器执行计算机程序时实现上述方法的步骤。
[0018]为实现上述目的,本申请还提供计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法的步骤。
[0019]本申请提供的基于路由网关的服务调用方法、装置、计算机设备和可读存储介质,在编译期生成多个待调用服务的服务元数据,并汇总服务元数据;对汇总的服务元数据执行完备性检查,并生成待调用服务对应的汇总入口类;将汇总入口类向服务注册中心注册;响应于服务调用请求,通过服务注册中心发现服务调用请求所对应的目标服务,并调用目标服务;从而在编译期保障待调用服务模块的完备性,确保无环及对应的依赖存在,大大提高团队协作开发的效率。
附图说明
[0020]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请
的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0021]图1为本申请实施例一提供的服务调用方法的流程图;
[0022]图2a和图2b分别是现有技术中处理循环依赖的解决方案的示意;
[0023]图3为本申请一实施例中URI的路径匹配示意;
[0024]图4为本申请实施例二提供的服务调用装置的框图;
[0025]图5为本申请实施例三提供的计算机设备的硬件结构图。
具体实施方式
[0026]为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0027]就现有技术而言,降低团队之间的代码耦合度最常用的技术包括总线、路由、ServiceLoader(一种依赖倒置的开发方式)等,这本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于路由网关的服务调用方法,其特征在于,包括:在编译期生成多个模块的模块元数据,并汇总所述模块元数据;对汇总的模块元数据执行完备性检查,并生成对应的汇总入口类;将所述汇总入口类向服务注册中心注册;以及响应于服务调用请求,通过所述服务注册中心发现所述服务调用请求所对应的目标服务,并调用所述目标服务。2.根据权利要求1所述的服务调用方法,其特征在于,对汇总的模块元数据执行完备性检查,并生成对应的汇总入口类的步骤包括:对汇总的模块元数据执行完备性检查;若所述完备性检查被成功执行,生成对应的汇总入口类。3.根据权利要求2所述的服务调用方法,其特征在于,对汇总的模块元数据执行完备性检查的步骤包括:生成汇总的模块元数据对应的配置文件;基于所述配置文件对所述汇总的模块元数据执行完备性检查。4.根据权利要求3所述的服务调用方法,其特征在于,所述完备性检查包括:依赖关系检查;循环依赖检查。5.根据权利要求1至4中任一项所述的服务调用方法,其特征在于,响应于服务调用请求,通过所述服务注册中心发现所述服务调用请求所对应的目标服务,并调用所述目标服务的步骤包括:基于预设的路径规则对目标资源标识符执行匹配;跳转至匹配所得的目标页面,并加载第一模块;响应于所述第一模块的服务调用请求,通过所述服务注册中心发现所述服务调用请求所对应的目标服务,并调用所述目标服务。6.根据权利要求5所述的服务调用方法,其特征在于,基于预设的路径规则对目标资源标识符执行匹配的步骤包括:确定目标资源标识符...

【专利技术属性】
技术研发人员:耿万鹏
申请(专利权)人:上海哔哩哔哩科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1