掌桥专利:专业的专利平台
掌桥专利
首页

一种多链路路由管理方法和装置

文献发布时间:2023-06-19 16:06:26



技术领域

本发明涉及计算机技术领域,尤其涉及一种多链路路由管理方法和装置。

背景技术

在大型APP的开发过程中,为了有效的维护代码,保证代码的可读性和健壮性,需按照单一职责的设计原则,将可复用的通用模块或具有相同业务属性的模块抽离封装成SDK,并按照数据流向分层划分,从而形成组件化的设计架构。

在组件化设计架构中,路由设计是其重要的一环,路由作为SDK的中介,负责SDK间的方法调用和数据传递,避免SDK间直接调用,从而达到代码耦合作用。在实现本发明的过程中,发明人发现现有大多路由设计方案至少存在如下问题:不支持动态配置单个路由,也不支持配置多个路由依次执行,更不支持配置多链路路由;在路由的注册和解析部分设计不足,影响应用加载速度,未考虑升降级路由策略。

发明内容

有鉴于此,本发明实施例提供一种多链路路由管理方法和装置,至少能够解决现有技术中不支持配置路由、硬编码注册方式影响应用加载速度、以及没有考虑升降级路由策略的现象。

为实现上述目的,根据本发明实施例的一个方面,提供了一种多链路路由管理方法,包括:

接收跳转到目标页面的指令,在执行页面跳转逻辑之前,确定与所述目标页面对应的路由表,获取所述路由表中的链路结构、以及位于所述链路结构中的每个路由的路由信息;

遍历所述链路结构,按照遍历顺序依次根据所述路由信息,判断当前遍历到的路由是否存在下一路由;其中,下一路由为子路由和/或兄弟路由;

在判断结果为存在的情况下,执行路由查找引擎业务逻辑;在判断结果不为存在的情况下执行页面跳转逻辑,以跳转到所述目标页面。

可选的,所述遍历所述链路结构,包括:

根据所述链路结构,按序将每个路由的路由信息存储到二叉树的数据结构上,以生成路由二叉树,遍历所述路由二叉树。

可选的,路由信息包括路由跳转链接字段;

所述执行路由查找引擎业务逻辑,包括:

获取当前遍历到的路由的信息,解析所述路由信息中的跳转链接字段,得到类协议字段、目标类标识字段、方法标识字段;

使用运行时机制查找与所述目标类标识字段对应的目标类对象,以及查找所述目标类对象中与所述方法标识字段对应的执行方法;

在查找所述目标类对象和所述执行方法的结果为存在的情况下,使用运行时机制,基于所述目标类标识字段和所述方法标识字段,执行页面跳转或方法调用的业务逻辑。

可选的,在所述查找与所述目标类标识字段对应的目标类对象之前,还包括:

判断所述目标类标识字段是否为空,在判断结果为空的情况下,基于类协议字段,使用预设规则,生成新目标类标识字段。

可选的,路由信息包括路由标识字段;

所述判断所述目标类标识字段是否为空,包括:

根据所述路由标识字段,校验是否注册有新类协议字段和新目标类标识字段;

在校验结果为存在的情况下,获取新类协议字段和新目标类标识字段,否则判断所述目标类标识字段是否为空。

可选的,所述路由信息还包括路由降级链接字段;

所述方法还包括:

在查找所述目标类对象或所述执行方法的结果为不存在的情况下,打开与所述路由降级链接字段对应的降级页面。

可选的,在所述确定与所述目标页面对应的路由表之前,还包括:

接收对路由表的配置操作,并存储配置后的路由表。

可选的,所述接收对路由表的配置操作,包括:

在路由配置中心接收对路由表进行配置操作,配置后的路由表存储在路由配置中心;以及

发送获取路由表请求至路由配置中心,并接收路由配置中心根据所述路由表请求返回的所述配置后的路由表。

可选的,所述接收路由配置中心根据所述路由表请求返回的所述配置后的路由表,包括:

接收路由配置中心返回的对象,解析所述对象得到所述路由表;其中,所述对象包含提示信息字段、标识码字段和数据字段,所述数据字段包括多级数组,所述数组包括一个或多个元素,每个所述元素用以存储父路由的路由信息,所述路由信息包括子路由表字段,所述子路由表字段用以存储子路由的路由信息。

为实现上述目的,根据本发明实施例的另一方面,提供了一种多链路路由管理装置,包括:

获取模块,用于接收跳转到目标页面的指令,在执行页面跳转逻辑之前,确定与所述目标页面对应的路由表,获取所述路由表中的链路结构、以及位于所述链路结构中的每个路由的路由信息;

遍历模块,用于遍历所述链路结构,按照遍历顺序依次根据所述路由信息,判断当前遍历到的路由是否存在下一路由;其中,下一路由为子路由和/或兄弟路由;

执行模块,用于在判断结果为存在的情况下,执行路由查找引擎业务逻辑;在判断结果不为存在的情况下执行页面跳转逻辑,以跳转到所述目标页面。

可选的,所述遍历模块,用于:

根据所述链路结构,按序将每个路由的路由信息存储到二叉树的数据结构上,以生成路由二叉树,遍历所述路由二叉树。

可选的,路由信息包括路由跳转链接字段;

所述执行模块,用于:

获取当前遍历到的路由的信息,解析所述路由信息中的跳转链接字段,得到类协议字段、目标类标识字段、方法标识字段;

使用运行时机制查找与所述目标类标识字段对应的目标类对象,以及查找所述目标类对象中与所述方法标识字段对应的执行方法;

在查找所述目标类对象和所述执行方法的结果为存在的情况下,使用运行时机制,基于所述目标类标识字段和所述方法标识字段,执行页面跳转或方法调用的业务逻辑。

可选的,所述执行模块,还用于:

判断所述目标类标识字段是否为空,在判断结果为空的情况下,基于类协议字段,使用预设规则,生成新目标类标识字段。

可选的,路由信息包括路由标识字段;

所述执行模块,用于:

根据所述路由标识字段,校验是否注册有新类协议字段和新目标类标识字段;

在校验结果为存在的情况下,获取新类协议字段和新目标类标识字段,否则判断所述目标类标识字段是否为空。

可选的,所述路由信息还包括路由降级链接字段;

所述执行模块,还用于:

在查找所述目标类对象或所述执行方法的结果为不存在的情况下,打开与所述路由降级链接字段对应的降级页面。

可选的,还包括配置模块,用于:

接收对路由表的配置操作,并存储配置后的路由表。

可选的,所述配置模块,用于:

在路由配置中心接收对路由表进行配置操作,配置后的路由表存储在路由配置中心;以及

发送获取路由表请求至路由配置中心,并接收路由配置中心根据所述路由表请求返回的所述配置后的路由表。

可选的,所述配置模块,用于:

接收路由配置中心返回的对象,解析所述对象得到所述路由表;其中,所述对象包含提示信息字段、标识码字段和数据字段,所述数据字段包括多级数组,所述数组包括一个或多个元素,每个所述元素用以存储父路由的路由信息,所述路由信息包括子路由表字段,所述子路由表字段用以存储子路由的路由信息。

为实现上述目的,根据本发明实施例的再一方面,提供了一种多链路路由管理电子设备。

本发明实施例的电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述任一所述的多链路路由管理方法。

为实现上述目的,根据本发明实施例的再一方面,提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现上述任一所述的多链路路由管理方法。

根据本发明所述提供的方案,上述发明中的一个实施例具有如下优点或有益效果:针对多链路路由解析的复杂业务场景,在路由管理系统配置每个路由的子路由以及后置路由,从而形成多链路的路由结构,APP端在收到多链路的路由结构后,将其解析生成路由二叉树,然后通过二叉树的前序深度遍历算法遍历执行路由解析和跳转,解决了无法配置多个路由以及多链路路由的问题,满足了更复杂的路由解析场景。

上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。

附图说明

附图用于更好地理解本发明,不构成对本发明的不当限定。其中:

图1是根据本发明实施例的一种多链路路由管理方法的主要流程示意图;

图2(a)是配置的路由表示意图;

图2(b)是二叉树路由表示意图;

图2(c)是二叉树遍历路由表示意图;

图3是根据本发明实施例的一种可选的多链路路由管理方法的流程示意图;

图4是根据本发明实施例的另一种可选的多链路路由管理方法的流程示意图;

图5是多链路路由流程图;

图6(a)是路由配置中心结构示意图;

图6(b)是移动端应用结构示意图;

图7是根据本发明实施例的一种多链路路由管理装置的主要模块示意图;

图8是本发明实施例可以应用于其中的示例性系统架构图;

图9是适于用来实现本发明实施例的移动设备或服务器的计算机系统的结构示意图。

具体实施方式

以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

在大型APP的开发过程中,随着业务复杂度和开发人员的增多,代码量会急剧增加,业务模块耦合度也随之增高,传统的MVC(Model-View-Controller,模型-视图-控制器)或MVVM(Model-View-ViewModel,模型-视图-视图模型)架构已无法高效管理代码。为了有效的维护代码,保证代码的可读性和健壮性,需按照单一职责的设计原则,将可复用的通用模块或具有相同业务属性的模块抽离封装成SDK(Software Development Kit,软件开发工具包),并按照数据流向分层划分,从而形成组件化的设计架构。

对于当前iOS App的开发,较为流行的路由设计框架有三种,分别为URL Router方案、Protocol-Class方案和Target-Action方案:

1、URL Router方案借鉴iOS系统以及H5页面的路由设计思想,将路由看作一个URL,参照URL的语法定义路由信息,包括路由名称和路由参数对。在APP缓存中维护一个路由键值对列表,键值对以路由名称为key,value中存储路由信息和路由执行方法。APP收到路由请求后,通过遍历路由键值对列表,获得路由执行方法和路由参数,然后调用方法并传入参数执行。

2、Protocol-Class方案,是为解决URL Router方案中路由键值对列表难以维护的缺点而设计的一种路由方案。其设计有路由中心,可以对路由进行注册和分发。APP启动时,通过Protocol-Class键值对的方式在路由中心注册。APP收到路由请求后,通过路由中心查询Protocol对应的Class,然后执行Class下的方法。

3、Target-Action方案,是为了解决前两个方案需要在APP启动时注册路由,从而影响APP启动速度而设计的一种路由方案。此方案不需要注册路由,并引入SDK中介层统一处理路由的分发。在收到路由请求后,由SDK中介层负责查找路由并执行。

对于本方案涉及的词语,做解释如下:

Objective-C:用于iOS APP开发的面向对象编程语言,其具有强大的动态特性。

runtime:运行时,Objective-C语言的一种动态特性,可以完成APP中方法的注册、查找和执行。

target:runtime中类对象的标识。

action:runtime中函数或方法的标识。

protocol:Objective-C语言中的一个关键字,在protocol中声明一些方法,而方法的实现取决于实现此protocol的类,结合runtime机制可以完成方法拦截和方法替换。在Java语言中相类似的是interface。

class:面向对象语言中的一个关键字,用于标识一个对象。class可以继承class,也可以实现protocol。

API(Application Programming Interface,应用程序接口):是一些预先定义的接口(如函数、HTTP接口),或指软件系统不同组成部分衔接的约定。

SDK(Software Development Kit,软件开发工具包):是开发人员用于为特定平台创建应用程序的一组软件工具和程序。

webView:是一个基于webkit的引擎,可以解析DOM元素,展示html页面的控件,它和浏览器展示页面的原理是相同的,所以可以把它当做浏览器看待。

H5:是按照HTML5标准实现的功能及页面。

scheme:统一资源定位的协议,在iOS系统中,使用其来做APP间跳转,在此方案中,用它来标识一个页面或方法,scheme标识APP,name标识模块,k1、k2为参数,v1、v2为参数值。

URL:一种统一资源定位的协议,是因特网的万维网服务程序上用于指定信息位置的表示方法。在本方案中,用于标识一个页面的HTML地址。

JSON:一种轻量级的数据交换格式,常用类型有JSON对象和JSON数组,其可以相互嵌套。JSON对象是使用{}包裹起来的内容,数据结构为{k1:v1,k2:v2,...}的键值对结构。JSON数组是[]包裹起来的内容,数据结构为["v1","v2","v3",...]的索引结构。

键值对:一种数据存储格式,以key为索引,value为值,key和value是配对的,可根据一个键值获得对应的一个值。

二叉树:一种经典的数据结构,属于树形结构的一种重要类型,其特点是每个结点最多只能有两棵子树,且有左右之分。遍历是对树的一种最基本的运算,所谓遍历二叉树,就是按一定的规则和顺序走遍二叉树的所有结点,使每一个结点都被访问一次,而且只被访问一次。遍历方式有深度遍历和广度遍历,深度遍历有前序遍历、中序遍历和后序遍历,其中前序遍历是指先访问根结点,然后前序遍历左子树,再前序遍历右子树。

此处对现有技术存在的问题做详细阐述:

1、不支持动态配置单个路由,也不支持配置多个路由依次执行,更不支持配置多链路路由。对于一些复杂的业务场景,如在打开某个页面或执行某个方法前,需校验登录态、授权态、实名态等前置条件,且前置条件下也可能有子条件,可能涉及4个路由及子路由,大部分路由方案是无法满足的。

2、在路由的注册和解析部分设计的不够完美。大多是在App的加载方法中,按照业务的需求,通过硬编码的方式注册路由信息表或路由分发队列,此种方案不仅会影响App的加载速度,还需额外维护路由相关的文档,增加了开发人员的开发成本。

3、没有考虑升降级策略,路由一旦定义便无法或很难更改。另外,路由无法找到时,也没有做友好处理,可能会导致APP无响应甚至崩溃,影响体验。

参见图1,示出的是本发明实施例提供的一种多链路路由管理方法的主要流程图,包括如下步骤:

S101:接收跳转到目标页面的指令,在执行页面跳转逻辑之前,确定与所述目标页面对应的路由表,获取所述路由表中的链路结构、以及位于所述链路结构中的每个路由的路由信息;

S102:遍历所述链路结构,按照遍历顺序依次根据所述路由信息,判断当前遍历到的路由是否存在下一路由;其中,下一路由为子路由和/或兄弟路由;

S103:在判断结果为存在的情况下,执行路由查找引擎业务逻辑;

S104:在判断结果为不存在的情况下,执行页面跳转逻辑,以跳转到所述目标页面。

上述实施方式中,对于步骤S101,目标页面可以是App(Application,应用程序)端中的某一页面,也可以是某一第三方应用中的首页面或特定页面,本方案在此不做限制。

以跳转第三方应用为例,详述其业务逻辑。在跳转第三方应用之前,需要校验登录态(A)、校验实名状态(B)、校验授权态(C)、校验用户信息完整度(D)等。其中校验登录态包括手机号快捷登录页面(A)、添加用户密码页面(A1),校验实名状态包括实名授权页面(B)、姓名身份证实名页面(B1)、人脸核身页面(B2),校验授权状态包括授权协议确认页面(C)、授权页面(C1),校验用户信息完整度包括补全用户信息页面(D),示例图参见图2(a)所示,最后黑点在UML(Unified Model Language,统一建模语言)图或流程图中代表结束。

被选择的第三方应用可以位于第三方应用列表中,点击其中任一个应用,即可跳转至第三方应用,这取决于业务层面的设计,且跳转第三方应用是路由的最终结果,其他逻辑处理都是前置条件。

移动端APP在执行跳转到目标页面之前,通过API请求路由配置中心,以获取与该目标页面对应的路由表,路由配置中心返回路由表。路由表包括多个路由的路由信息以及由多个路由组成的链路结构。

对于步骤S102~S104,链路结构存储有每个路由与相邻路由之间的父子关系或兄弟关系,因此可以直接遍历链路结构。按照父路由-子路由-兄弟路由的遍历顺序,依次判断当前遍历到的路由是否有下一步路由,若有,则执行路由查找引擎业务逻辑。若无则跳转至目标页面。

实际操作中,直接遍历链路结构主要适用于路由数量较少的情况,对于一些复杂的业务场景,为方便插入和和删除节点,提高查找效率,优选使用二叉树。按照路由链路结构,按序使用二叉树的数据结构存储路由表中每个路由的路由信息,以生成路由二叉树;其中,每个二叉树结点仅代表一个路由信息,参见图2(b)所示。

需要说明的是,二叉树每个节点可以存储一个对象,在编程中万物皆对象。路由ID是一个字符串,路由信息是一个键值对对象,此处虽可以仅存储路由ID,但后续需去其他位置存储路由信息,且需与二叉树建立关联关系,然后再依据关联关系、路由ID查找具体路由信息,消耗较大,因此本方案优选将路由信息直接存储至结点上。

由于路由信息是按照二叉树的数据结构存储的,按照父路由-子路由-兄弟路由的遍历顺序,是二叉树的前序遍历算法。使用二叉树的前序深度遍历算法,遍历路由二叉树,并按照遍历顺序依次判断是否有下一步路由,若有,则执行路由查找引擎业务逻辑。若无则跳转至目标页面。

以图2(b)为例,遍历顺序为A-A1-B-B1-B2-C-C1-D-结束,遍历示例图参见图2(c)所示,其中实弧线为遍历路线,虚线为子结点遍历完毕后返回父结点。

上述实施例所提供的方法,APP端在收到多链路的路由结构后,将其解析生成路由二叉树,然后通过二叉树的前序深度遍历算法遍历执行路由解析和跳转,解决了多链路路由的问题,满足了更复杂的路由解析场景。

参见图3,示出了根据本发明实施例的一种可选的多链路路由管理方法流程示意图,包括如下步骤:

S301:在路由配置中心接收对路由表进行配置操作,配置后的路由表存储在路由配置中心;

S302:接收跳转到目标页面的指令,在执行页面跳转逻辑之前,发送获取路由表请求至路由配置中心;

S303:接收路由配置中心返回的对象,解析所述对象得到所述路由表;其中,所述对象包含提示信息字段、标识码字段和数据字段,所述数据字段包括多级数组,所述数组包括一个或多个元素,每个所述元素用以存储父路由的路由信息,所述路由信息包括子路由表字段,所述子路由表字段用以存储子路由的路由信息;

S304:获取所述路由表中的链路结构、以及位于所述链路结构中的每个路由的路由信息;

S305:遍历所述链路结构,按照遍历顺序依次根据所述路由信息,判断当前遍历到的路由是否存在下一路由;其中,下一路由为子路由和/或兄弟路由;

S306:在判断结果为存在的情况下,执行路由查找引擎业务逻辑;

S307:在判断结果不为存在的情况下,执行页面跳转逻辑,以跳转到所述目标页面。

上述实施方式中,对于步骤S304~S307,可参见图1所示描述,在此不再赘述。

上述实施方式中,对于步骤S301~S303,路由配置中心包括路由管理系统和路由服务层。开发者按照产品或业务需求,在路由管理系统中配置与目标页面对应的多级路由表,如图2(a)所示。开发者配置完成后,将路由表上传至路由服务层。路由服务层在收到路由表后,将其存储至数据库中。

需要说明的是,子路由和后置路由的区别是关系不同。对于存在子路由和后置路由的当前路由,子路由和当前路由的关系是父子关系,在业务逻辑上是包含关系。后置路由和当前路由是兄弟关系,在业务逻辑上是衔接关系。

移动端APP在跳转到目标页面之前,通过API请求路由服务层获取路由表。路由服务层将路由表以JSON对象形式返回,移动端在收到JSON对象后,对其解析得到路由表;其中,JSON是一种轻量级的数据交换格式,其优点为语法易于使用、兼容性广泛,解析速度快等。

返回的JSON对象包含message、code、data3个字段,其中,message是提示信息。code是标识码,用于标识接口请求是否成功,一般情况下200代表成功,其他情况为失败,如果失败,则给用户提示message中的内容。

data是一个多维的JSON数组(或多级数组),数组由一个或多个元素组成,每个数组元素仅用于存储一个父路由的信息,该路由信息包括子路由表字段,子路由表字段用以存储子路由的路由信息。JSON对象的结构示例如下:

由此可知,每个路由信息包括路由id号rId字段、路由跳转链接scheme、路由降级链接URL字段以及子路由表subRouter字段。subRouter其值也是一个JSON数组,此数组存储了子路由的信息,以此类推。参见上述0{4}部分,存储有父路由信息,0{3}部分存储有子路由信息,位于父路由的subRouter[1]中。而对于1{4}部分的subRouter[2],则表示有两个子路由信息,这两个子路由为兄弟路由关系;3{4}部分的subRouter[0],则表示不存在子路由。

上述实施例所提供的方法,在路由管理中心配置每个路由的子路由以及后置路由,从而形成多链路的路由结构,解决了无法配置多个路由的问题。

参见图4,示出了根据本发明实施例的另一种可选的多链路路由管理方法流程示意图,包括如下步骤:

S401:获取当前遍历到的路由的信息,解析路由信息中的scheme字段,得到类协议protocol字段、目标类标识target字段、目标类中的方法标识action字段;其中,路由信息包括路由标识ID字段、降级链接URL字段;

S402:根据所述ID字段,校验是否注册有新protocol字段和新target字段;

S403:若校验结果为存在,则获取新protocol字段和新target字段;

S404:否则,判断所述target字段是否为空;

S405:若为空,则基于protocol字段,使用预设规则,生成新target字段;

S406:基于scheme字段中的target字段或新target字段,查找对应的target类对象;

S407:若查询结果为存在,则查找所述target类对象中与所述action字段对应的执行方法;

S408:若查询结果为存在,则使用运行时机制,基于所述target字段和所述action字段,执行页面跳转或方法调用的业务逻辑;

S409:在查找所述target类对象或所述执行方法的结果为不存在的情况下,使用webView打开与所述URL字段对应的降级页面。

上述实施方式中,对于步骤S401~S409,此处讲述路由查找引擎的业务逻辑、和路由升降级机制的业务引擎。

1、路由查找引擎解析路由信息中的scheme字段,得到protocol字段、target字段和action字段;其中,路由信息还包括路由id号rId字段、路由降级链接URL字段以及子路由表subRouter字段;

2.路由升降级机制根据rId字段,校验是否注册了新的protocol-target,一般情况下会提供一个注册机制,将已注册的protocol-target列表存储下来。根据rId遍历该列表一判断是否注册了某个protocol-target:

1)若有,则执行升级策略,返回新的protocol-target给路由查找引擎;这种一般发生在组件化架构设计中,如主工程中的target替代SDK中的target;

2)若无,则判断原scheme中的target字段是否为空:

a)若不为空,则返回原target字段给路由查找引擎;

b)若为空,则按照一定规则生成新的target并返回给路由查找引擎;其中,规则取决于业务设计,比较简单的是字符匹配,比如protocol名称为myProtocol,那么target必然为myTarget。

3、路由查找引擎,基于scheme字段中的target字段或新target字段,通过runtime查找target类对象:

1)若查找结果为存在,则通过runtime查找target类对象中,与action字段对应的action方法;

a)若查找到action方法,则通过runtime,传入参数target和action,以执行页面跳转或方法调用的业务逻辑;

b)若查找不到action方法,则执行路由降级策略,通过路由升降级机制,使用webView打开URL,webView中的业务逻辑执行完毕后,继续执行图1所示路由解析引擎业务逻辑,以判断下一遍历到的路由是否存在下一路由。

2)若查找结果为不存在,则执行路由降级策略,通过路由升降级机制,使用webView打开URL,webView中的业务逻辑执行完毕后,继续执行图1所示路由解析引擎业务逻辑,以判断下一遍历到的路由是否存在下一路由。

4、页面或所调用的方法中的业务逻辑执行完毕后,继续执行图1所示路由解析引擎业务逻辑,以判断下一遍历到的路由是否存在下一路由。

上述实施例所提供的方法,提供了一种路由查找方法,结合当前流行的三种路由方案,通过Objective-C的runtime机制,使得路由能够自注册和自发现,解决了将路由信息硬编码至代码中,从而使路由信息难以维护以及代码可读性不高的问题。还提供了一种路由升降级机制,通过注册protocol的方式,灵活处理路由拦截以及路由无法找到的情况下导致APP无响应或崩溃的问题。

参见图5,示出了本发明实施例提供的多链路路由流程图,包括路由配置中心、路由解析引擎、路由查找引擎和路由升降级机制;

1、路由配置中心,参见图6(a)所示

1)路由服务层,部署在服务端,用于路由表的增删改查。

2)路由管理系统,部署在PC端,用于配置多级路由表,包括链路结构以及每个路由的子路由链路,并将路由表上传至路由服务层。

2、APP端,参见图6(b)所示,App一般安装在手机、电脑等移动端,移动端需要做简易的改造,集成路由SDK即可,非常简单,工作量很小。

1)路由解析引擎,用于获取与待跳转的目标页面对应的最新路由表、解析路由表和遍历执行路由操作。

2)路由查找引擎,按照约定好的语法,解析路由的scheme字段,查找路由中的页面或方法,然后跳转页面或执行方法。

3)路由升降级机制,用于在某种场景下执行升级或降级操作。升级一般发生在组件化架构设计中,通过路由拦截,将主工程的target替换为SDK中的target。降级一般发生在页面或方法无法找到的情况下,按照某种策略执行某种方案,比如打开路由信息中的URL。

本发明实施例所提供的方法,使用场景包括但不限于组件化架构中SDK间的数据和消息传递、SDK间或SDK内方法或页面的相互调用或跳转、跳转某个应用或页面前多个前置条件页面或多级前置条件页面的跳转等,相对于现有技术,其有益效果至少如下:

1、引入多链路路由的设计。通过在路由配置中心配置,APP端解析并使用二叉树的数据结构进行存储和遍历执行,从而能够完成多个页面以及多级页面的跳转需求。操作环境不限制iOS系统,在其他系统中如Android系统或H5页面中也可以满足。

2、实现了一种路由解析方案,结合Objective-C的runtime机制实现路由的自注册和自发现,避免维护特定路由注册文件,解决了路由信息难以管理的问题,使代码易于维护、易于扩展,从而提高了代码质量并缩减了App启动时间。相比当前流行的路由方案,可缩减代码量20%以上,能提升代码复用率25%以上,人效提升约35%以上。

3、提供了一种升降级机制,通过注册protocol并结合Objective-C的runtime机制,灵活处理路由拦截以及路由无法找到的情况,避免出现APP无响应或崩溃的问题,从而提升了用户体验。

参见图7,示出了本发明实施例提供的一种多链路路由管理装置700的主要模块示意图,包括:

获取模块701,用于接收跳转到目标页面的指令,在执行页面跳转逻辑之前,确定与所述目标页面对应的路由表,获取所述路由表中的链路结构、以及位于所述链路结构中的每个路由的路由信息;

遍历模块702,用于遍历所述链路结构,按照遍历顺序依次根据所述路由信息,判断当前遍历到的路由是否存在下一路由;其中,下一路由为子路由和/或兄弟路由;

还包括:根据所述链路结构,按序将每个路由的路由信息存储到二叉树的数据结构上,以生成路由二叉树,遍历所述路由二叉树。

执行模块,用于在判断结果为存在的情况下,执行路由查找引擎业务逻辑;在判断结果不为存在的情况下,执行页面跳转逻辑,以跳转到所述目标页面。

路由信息包括路由跳转链接字段;所述执行模块,用于:

获取当前遍历到的路由的信息,解析所述路由信息中的跳转链接字段,得到类协议字段、目标类标识字段、方法标识字段;

使用运行时机制查找与所述目标类标识字段对应的目标类对象,以及查找所述目标类对象中与所述方法标识字段对应的执行方法;

在查找所述目标类对象和所述执行方法的结果为存在的情况下,使用运行时机制,基于所述目标类标识字段和所述方法标识字段,执行页面跳转或方法调用的业务逻辑。以及判断所述目标类标识字段是否为空,在判断结果为空的情况下,基于类协议字段,使用预设规则,生成新目标类标识字段。

路由信息包括路由标识字段;所述执行模块,用于:根据所述路由标识字段,校验是否注册有新类协议字段和新目标类标识字段;

在校验结果为存在的情况下,获取新类协议字段和新目标类标识字段,否则判断所述目标类标识字段是否为空。

所述路由信息还包括路由降级链接字段;所述执行模块,还用于:在查找所述目标类对象或所述执行方法的结果为不存在的情况下,打开与所述路由降级链接字段对应的降级页面。

本发明实施装置包括配置模块,用于:

接收对路由表的配置操作,并存储配置后的路由表。

本发明实施装置中,所述配置模块,用于:

在路由配置中心接收对路由表进行配置操作,配置后的路由表存储在路由配置中心;以及

发送获取路由表请求至路由配置中心,并接收路由配置中心根据所述路由表请求返回的所述配置后的路由表。

以及接收路由配置中心返回的对象,解析所述对象得到所述路由表;其中,所述对象包含提示信息字段、标识码字段和数据字段,所述数据字段包括多级数组,所述数组包括一个或多个元素,每个所述元素用以存储父路由的路由信息,所述路由信息包括子路由表字段,所述子路由表字段用以存储子路由的路由信息。

另外,在本发明实施例中所述装置的具体实施内容,在上面所述方法中已经详细说明了,故在此重复内容不再说明。

图8示出了可以应用本发明实施例的示例性系统架构800,包括终端设备801、802、803,网络804和服务器805(仅仅是示例)。

终端设备801、802、803可以是具有显示屏并且支持网页浏览的各种电子设备,安装有各种通讯客户端应用,用户可以使用终端设备801、802、803通过网络804与服务器805交互,以接收或发送消息等。

网络804用以在终端设备801、802、803和服务器805之间提供通信链路的介质。网络804可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。

服务器805可以是提供各种服务的服务器,需要说明的是,本发明实施例所提供的方法一般由服务器805执行,相应地,装置一般设置于服务器805中。

应该理解,图8中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。

下面参考图9,其示出了适于用来实现本发明实施例的终端设备的计算机系统900的结构示意图。图9示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图9所示,计算机系统900包括中央处理单元(CPU)901,其可以根据存储在只读存储器(ROM)902中的程序或者从存储部分908加载到随机访问存储器(RAM)903中的程序而执行各种适当的动作和处理。在RAM 903中,还存储有系统900操作所需的各种程序和数据。CPU 901、ROM 902以及RAM 903通过总线904彼此相连。输入/输出(I/O)接口905也连接至总线904。

以下部件连接至I/O接口905:包括键盘、鼠标等的输入部分906;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分907;包括硬盘等的存储部分908;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分909。通信部分909经由诸如因特网的网络执行通信处理。驱动器910也根据需要连接至I/O接口905。可拆卸介质911,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器910上,以便于从其上读出的计算机程序根据需要被安装入存储部分908。

特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分909从网络上被下载和安装,和/或从可拆卸介质911被安装。在该计算机程序被中央处理单元(CPU)901执行时,执行本发明的系统中限定的上述功能。

需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。

附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括获取模块、遍历模块、执行模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,获取模块还可以被描述为“结构遍历模块”。

作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备执行多链路路由管理方法。

上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

技术分类

06120114700848