CN117608875A - 跨路由的通信方法、系统和相关设备 - Google Patents
跨路由的通信方法、系统和相关设备 Download PDFInfo
- Publication number
- CN117608875A CN117608875A CN202311577222.5A CN202311577222A CN117608875A CN 117608875 A CN117608875 A CN 117608875A CN 202311577222 A CN202311577222 A CN 202311577222A CN 117608875 A CN117608875 A CN 117608875A
- Authority
- CN
- China
- Prior art keywords
- route
- target
- data carrier
- routes
- record
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 72
- 238000004891 communication Methods 0.000 title claims abstract description 49
- 230000009191 jumping Effects 0.000 claims abstract description 8
- 238000012545 processing Methods 0.000 claims description 26
- 230000015654 memory Effects 0.000 claims description 17
- 230000000903 blocking effect Effects 0.000 claims description 9
- 230000004083 survival effect Effects 0.000 claims description 7
- 230000002085 persistent effect Effects 0.000 claims description 3
- 230000006403 short-term memory Effects 0.000 claims description 2
- 230000008569 process Effects 0.000 abstract description 22
- 238000007726 management method Methods 0.000 description 46
- 238000013507 mapping Methods 0.000 description 10
- 230000007246 mechanism Effects 0.000 description 9
- 239000000243 solution Substances 0.000 description 9
- 238000012986 modification Methods 0.000 description 7
- 230000004048 modification Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 238000004590 computer program Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 239000000969 carrier Substances 0.000 description 4
- 238000011161 development Methods 0.000 description 4
- 238000012795 verification Methods 0.000 description 4
- 239000008186 active pharmaceutical agent Substances 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000002452 interceptive effect Effects 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 235000008694 Humulus lupulus Nutrition 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Human Computer Interaction (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请实施例公开了跨路由的通信方法、系统和相关设备,该方法包括:获取注入有数据载体的路由管理组;将目标应用包含的至少一对路由的信息存入路由管理组;在检测到从第二路由跳转至目标路由的请求时,将第二路由的替补路由对应的目标记录载入数据载体,以使目标记录被数据载体装载返回给目标路由。本数据载体,能针对性地传递替换路由的目标记录,节省了需区分目标路由接收的数据记录属于哪一路由,促使后续业务流的进程加快;数据载体的引用,可促使目标记录能跨多级路由地直接返回给目标路由,保障跨级路由间自由地实时通信,从而提高目标应用的性能和用户体验,以及路由的正常运行。
Description
技术领域
本申请实施例涉及互联网技术领域,尤其涉及跨路由的通信方法、系统和相关设备。
背景技术
路由可通俗理解为应用程序(APP)里用户具体可见的页面,路由的通信则可理解为路由之间的消息传递或事件传递等。Flutter框架下,有关联依赖关系的二级路由间的通信情况如下,从路由A(即上一页面)跳转到路由B(即下一页面)时会传递信息,在路由B修改完信息或被浏览完后,需要带消息返回到路由A时(即APP界面将再展示A页面),那么路由A和路由B就形成了有关联依赖的二级路由,这时它们之间的消息通信是支持的。
现有方案中,面对路由链A-B-C,路由A和路由B有关联依赖关系,路由B和路由C有关联依赖关系,路由C却因无法返回消息到路由A而与A无关联依赖关系,在这种情况下,若路由B出现故障,即使路由A和路由C都正常,也会导致路由A到路由C的通信链路断开,无法正常通信。
发明内容
本申请实施例提供了跨路由的通信方法、系统和相关设备,用于跨多级路由地直接回传数据记录。
本申请实施例第一方面提供一种跨路由的通信方法,包括:
获取注入有数据载体的路由管理组;所述数据载体用以将所述路由管理组内一路由的数据记录传递给另一路由;
将目标应用包含的至少一对路由的信息存入路由管理组;与每对路由中的第一路由配对的第二路由,为所述第一路由被跳转后接续展示的替补路由;
在检测到从所述第二路由跳转至目标路由的请求时,将所述第二路由的替补路由对应的目标记录载入所述数据载体,以使所述目标记录被所述数据载体装载返回给目标路由;所述目标路由包括任一被跳转的路由。
可选地,所述数据载体的配置过程包括:
依据所述目标应用的运行时间确定所述数据载体的存活期;
将所述数据载体在所述存活期内随路由间的跳转顺序,设置为指向替补路由,以供区分所述目标路由接收到的目标记录所属的路由。
可选地,所述数据载体的配置过程包括:
依据所述目标应用的运行时间确定所述数据载体的存活期;
限定所述数据载体在所述存活期内载有的目标记录携带路由的身份标识,以供区分所述目标路由接收到的所述目标记录所属的路由。
可选地,创建路由的过程包括:
校验待建路由对应的文件类名是否存在,及所述文件类名对应的身份标识是否已登记在册;
若所述文件类名和所述身份标识均存在,则对所述待建路由进行创建;
若所述文件类名和/或所述身份标识不存在,则针对所述待建路由的创建进行阻断和/或报错。
可选地,所述路由管理组为栈形式的容器时,所述将目标应用包含的至少一对路由的信息存入路由管理组,包括:
按各路由间的跳转顺序,将所述第一路由信息和所述第二路由信息先后入栈到所述容器,且所述第二路由信息较比所述第一路由信息置于所述容器的上层。
可选地,所述方法还包括:
基于所述第一路由接收到的所述目标记录刷新所述第一路由,以供所述目标应用展示所述目标记录对应产生的结果。
可选地,在检测到从第二路由跳转至目标路由的请求时,所述方法还包括:
将除所述目标路由之外至少一路由的信息从所述路由管理组内剔除。
可选地,所述数据载体用以广播而非装载所述目标记录时,所述方法还包括:
对所述目标路由设置监听程序,及对除所述目标路由之外的路由设置禁听程序,以使所述目标路由收听到所述数据载体广播的所述目标记录。
本申请第一方面所述的方法在具体实施时可采用本申请第二方面所述的内容实现。
本申请实施例第二方面提供一种跨路由的通信系统,包括:
获取单元,用于获取注入有数据载体的路由管理组;所述数据载体用以将所述路由管理组内一路由的数据记录传递给另一路由;
处理单元,用于将目标应用包含的至少一对路由的信息存入路由管理组;与每对路由中的第一路由配对的第二路由,为所述第一路由被跳转后接续展示的替补路由;
所述处理单元,用于在检测到从所述第二路由跳转至目标路由的请求时,将所述第二路由的替补路由对应的目标记录载入所述数据载体,以使所述目标记录被所述数据载体装载返回给目标路由;所述目标路由包括任一被跳转的路由。
本申请实施例第三方面提供一种电子设备,包括:
中央处理器,存储器以及输入输出接口;
所述存储器为短暂存储存储器或持久存储存储器;
所述中央处理器配置为与所述存储器通信,并执行所述存储器中的指令操作以执行本申请实施例第一方面或第一方面的任一具体实现方式所描述的方法。
本申请实施例第四方面提供一种计算机可读存储介质,包括指令,当所述指令在计算机上运行时,使得计算机执行如本申请实施例第一方面或第一方面的任一具体实现方式所描述的方法。
本申请实施例第五方面提供一种包含指令或计算机程序的计算机程序产品,当所述计算机程序产品在计算机上运行时,使得计算机执行如本申请实施例第一方面或第一方面的任一具体实现方式所描述的方法。
从以上技术方案可以看出,本申请实施例至少具有以下优点:
本申请实施例的数据载体,能针对性地传递替换路由的目标记录,节省了区分目标路由接收的数据记录属于哪一路由的流程,促使后续业务流的进程加快。此外,数据载体的引用,可促使目标记录能跨多级路由地直接返回给目标路由(如最初的第一路由),保障跨级路由间自由地实时通信,从而提高目标应用的性能,以及路由的正常运行。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
需要说明的是,虽然各实施例所涉及的流程性示意图(若存在)中各个步骤按照箭头的指示依次绘制,但除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
图1为本申请实施例跨路由的通信方法的一个系统架构示意图;
图2至图6为本申请实施例跨路由的通信方法的流程示意图;
图7为本申请实施例跨路由的通信系统的一个结构示意图;
图8为本申请实施例电子设备的一个结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在以下的描述中,涉及到“一个具体实施方式”或“一个具体示例”等类似表达,其描述了所有可能实施例的子集,但是可以理解,“一个具体实施方式”或“一个具体示例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。在以下的描述中,涉及到的术语多个是指至少两个。本申请所说的某数值达到阈值(如果存在),在一些具体示例中,可包括前者大于阈值后者的情况;若提及“任意”或“至少一”等类似表述,具体可指所列举示例中的任一种示例或这些示例之间的任意组合。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
请参阅图1,图1示出了一种适用于本申请实施例的应用环境示意图。本申请实施例提供的方法可应用于如图1所示的交互系统100,该交互系统100包括终端设备101以及服务器102,服务器102与终端设备101通信连接,其中,服务器102可以是传统服务器,也可以是云端服务器,在此不作具体限定。终端设备101可以是具有显示屏且支持数据输入的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机、台式计算机和可穿戴式电子设备等;具体的,数据输入可以是基于终端设备101上具有的语音模块输入语音、基于字符输入模块输入字符或基于图像输入模块输入图像等,还可以是基于终端设备101上安装有的手势识别模块,使得用户可以实现手势输入等交互方式。终端设备101上可以安装有客户端应用程序,用户可以阅览到应用程序(例如APP、小程序等)的路由链,或用户可以基于客户端应用程序与服务器102进行通信,或还可以基于客户端应用程序实现前述数据输入。
例如,终端设备101上的APP路由链可以为“首页-列表-详情-修改-结果-打印/分享”,此路由链指两个或多个路由按一定规律连接的物理或逻辑通道,符号“-”可表示前后两级路由间成跳转或替补关系,即该路由链内有多对存在跳转关系的路由对,“首页”与“打印/分享”之间跨有多级(如3级)路由充当中间路由。若“打印/分享”页面之后需返回到在先页面(如列表页或首页),则服务器102可以将“打印/分享”页面与在先页面间的中间路由从路由管理组内剔除,并协同数据载体直接将“返回到在先页面”这一事件(属于目标记录)一步到位地回传给在先页面,避免如本发明人发现的,需“详情-修改-结果”等中间路由一步步回传目标记录给在先页面(如首页或列表页),从而造成的通信延误(可见后文);相应的,从用户视角而言,到“打印/分享”页面之后可以回退到在先页面。作为另一种可能,目标记录可以是需传递或通知的某消息而非事件(该事件可为回调一函数等消息),如对某页面已进行修改的通知和/或对该页面的修改详情,此修改可称为对该页面的一种刷新,该通知可理解为对页面的一种状态(“已修改”)告知,相对的还可以是“未发生过修改”等状态。
上述的应用环境仅为方便理解所作的示例,可以理解的是,本申请实施例不仅局限于上述应用环境。
下面将对本申请的方法做进一步的详细说明。
请参阅图2,本申请第一方面提供一种跨路由的通信方法的一个具体实施例,该实施例包括如下操作步骤:
步骤21、获取注入有数据载体的路由管理组。
通俗的讲,路由:就是目标应用(如APP)里具体可见的页面,此路由可以扩展有跳转功能(即切换或打开其他页面)和返回信息(包含回退到在先页面)等功能;路由或可以理解为导航。数据载体(或称消息事件载体):用以将路由管理组内一路由的数据记录(如消息或事件)传递给另一路由,顾名思义,数据载体可起到装载数据的作用。路由管理组(或称数据管理组)指,按一定顺序存储、管理路由及其配置信息的容器,该路由管理组可以栈、堆或队列的形式呈现。
在一些具体示例中,路由管理组需早于路由创建,因为只有路由管理组先创建并存在了,那么路由创建后才能(第一时间)存入路由管理组被管理(如出栈),所以为保证路由管理组早于路由的创建,可以在任一路由创建前,先校验路由管理组是否存在,若不存在就先创建,若已存在则略过。
步骤22、将目标应用包含的至少一对路由的信息存入路由管理组。
其中,与每对路由中的第一路由配对的第二路由,为第一路由被跳转后接续展示的替补路由,即第一路由较比第二路由为先展示的页面,二者组成一组路由对。例如,上述路由链“首页-列表-详情-修改-结果-打印/分享”,当中有“首页-列表”、“列表-详情”等多对路由对,“列表”页面既充当第一路由(就“详情”页面而言),又充当第二路由(就“首页”页面而言),即用户可以通过“列表”页操作跳转出“详情”页。需说明的是,本申请实施例中,目标应用不仅包含成跳转关系的路由,还可以包含无跳转关系的路由,即构成目标应用的各页面之间也可以独立存在、无接续关系;跳转页面具体可以包含打开页面的含义。
步骤23、通过数据载体,将第二路由的替补路由对应的目标记录返回给目标路由。
具体的,在检测到从第二路由跳转至目标路由的请求时,将第二路由的替补路由对应的目标记录载入数据载体,以使目标记录被数据载体装载返回给目标路由;目标路由包括任一被跳转的路由。
本发明人在现有方案中发现:面对路由链A-B-C,可以从路由C先带消息并返回到路由B,由B再带消息返回到路由A,最后进行消息更新;但若还有路由D、路由E,甚至路由F,如此回传消息的做法,在不同的结果参数消息条件下,需要返回到路由D或路由A时,每一级路由都需要维护其消息链和状态,这基本上是无法区分和维护的;可见,现有方案如此一步步回传消息的做法有下述缺陷:
(1)由于框架的路由链限制,无法携带消息事件跨多级返回到指定路由,只能在有关联依赖关系的二级路由之间实现消息通信;跨多级指构成路由链的路由数量大于或等于三,如路由链A-B-C或A-B-B1-C,通信指各路由之间进行消息或事件等数据记录的传递。(2)逐级返回通信,但会造成整条链路异常繁杂,每个结点都得对其消息事件的维护,那是相当的困难以及混乱,特别是在某个结点有不同的条件触发路由返回时,更是无法区分;如有四级、五级、六级、十级甚至是更多级时,那将是成指数倍的维护难度,可以说是无法维护。(3)无法自由的回到指定路由(即目标路由)进行消息事件的通信。
针对上述缺陷,本申请实施例的数据载体,能针对性地传递替换路由的目标记录,节省了区分目标路由接收的数据记录属于哪一路由的流程,促使后续业务流的进程加快。此外,数据载体的引用,可促使目标记录能跨多级路由地直接返回给目标路由(如最初的第一路由),如面对上述路由链A-B-C,使得支持直接从路由C跨级地带消息返回到路由A,保障跨级路由间自由地实时通信,从而提高目标应用的性能和用户体验,以及路由的正常运行。补充说明的是,本申请示例的跨多级,就是指直接到指定的目标路由,如有条路由链上有路由A、B、C、D、E,需要从路由E回到目标路由A,那么就是从E直接回到A,不管E和A之间有多少级路由间隔。
在上述示例说明的基础上,下面将提供一些具体的可能实施示例,实际应用中,这些示例之间的实施内容可根据相应的功能原理、应用逻辑由需地结合或单独实施,具体可由实际场景而定。
请参阅图2至图6,本申请提供一种跨路由的通信方法的另一些具体实施例,该实施例包括如下操作步骤:
步骤21、获取注入有数据载体的路由管理组。
实际场景中,所注入的数据载体可以是全局性或局部性的载体,此全局载体指可供目标应用的任一路由(即使是不能构成路由对的路由)载入数据记录,即只要全局载体处于保活状态即存活期,则该全局载体均可以接收到任一路由的数据记录,如接收到某消息本身、某事件本身、对该消息或该事件的响应结果等,简言之,全局载体对各数据来者不拒。相对的,局部载体可仅供部分路由载入数据记录,无法接收其他路由的数据记录,但相比而言,为各路由分配局部载体的成本比全局载体的大,故分配或配置数据载体的具体过程(载体数量、是否为局部载体等)可由需自定,不做限制。下面以一全局载体为例,说明数据载体的配置过程,以及全局载体接收到目标记录时,如何区分该目标记录具体是哪个路由的。
作为一种可能的实施方式,数据载体的配置过程包括:依据目标应用的运行时间确定数据载体的存活期;限定数据载体在存活期内载有的目标记录携带路由身份标识,以供区分目标路由接收到的目标记录所属的路由。
例如,若选择注入的数据载体是全局的,则该生命周期(即存活期)可跟随着目标应用的运行和退出时间确定,如只要在目标应用的运行期间,该全局载体都处于保活状态(即有效、可用);那么,当目标应用跳转或历经的路由有多个时,则全局载体都能接收到各路由的数据记录,比如该目标应用的路由链上有A、B、C、D等路由,则全局载体都能接收到B、C、D等路由的数据记录,这样就会造成本意是只想接收路由D的数据记录,但同时也可能接收到路由C或B的数据记录。针对这个问题的其中一解法可以是:设置全局载体载有的目标记录携带路由的身份标识,具体的,携带目标记录对应的替补路由的身份标识(如唯一key),使得目标路由接收到目标记录时,能通过唯一key来区分该目标记录具体是哪个路由的数据记录;例如,可以配置if…else…等判断语句实施该区分操作。
但考虑到构成目标应用的路由众多,需要配置和维护的if…else…等判断语句繁多,容易漏写或错写一些判断语句,对代码运维人员等不够友好,同时容易加大运维过程中的失误率和成本。有鉴于此,本发明人经过研讨和试验总结出了另一解法,如图3所示:促使全局载体跟随路由跳转变化(随路由跳转),可理解为,全局载体协同或参考路由的跳转顺序,针对性地供跳转到的(替换)路由载入其消息记录,即全局载体指向路由管理组内(最新)跳转到的路由,即动态地指向当前路由或目标路由。故具体的,作为另一种可能的实施方式,数据载体的配置过程可包括:依据目标应用的运行时间确定数据载体的存活期(可如上说明);将数据载体在存活期内随路由间的跳转顺序,设置为指向替补路由,以供区分目标路由接收到的目标记录所属的路由。此种载体协同配置+剔除中间路由的机制,可统称为跨多级路由的协同通信机制。
例如,目标应用有A、B、C、D、E等路由组成的路由链时,此跳转顺序为路由A跳转到B,再跳转到C,再跳转到D,再跳转到E,那么全局的数据载体也跟随着路由的跳转动态地依次指向A、B、C、D、E,然后从路由E返回到路由A时,又动态地指向路由A;如此,在全局载体接收到目标记录时,就不再需要额外(如手动)通过if…else…语句来区分这是哪个路由的数据记录,转而可以是直接进行下一步的业务逻辑处理,从而加快整个业务流的进度。上述指向路由A可指,载体一并携带路由E的数据记录返回给路由A,该数据记录可供消费如展示于路由A,从而实现由路由E到路由A的跨多级通信,即直接回传需要传递的数据记录。
补充说明的是,若选择配置和注入局部性的数据载体,则该局部载体的存活期,可参考上述配置全局载体的存活期的过程实现,具体不作赘述。图3或图4所示的初始路由可以充当上述第一路由,当然也可以充当上述目标路由;此初始路由可以是APP的“首页”页面,或比“首页”更早展示给用户的页面(与“首页”有无跳转关系均可),具体不做限定。
步骤22、将目标应用包含的至少一对路由的信息存入路由管理组。
如图3或图4所示,在一些具体示例中,路由管理组为栈形式的容器时,步骤22的具体操作过程包括:按各路由间的跳转顺序,将第一路由信息和第二路由信息先后入栈到容器,且第二路由信息较比第一路由信息置于容器的上层。此处,入栈指将路由放入到路由管理组中,遵循后放入的在路由管理组中的上面或上层;相对的,出栈指将已有路由从路由管理组中释放、移除或销毁,遵循上面或上层的路由先被剔除,即整体遵循后入先出的栈管理机制。当然,路由管理组还可以是堆或队列等其他形式的容器,新建或替换路由可以不是放在路由管理组的上层或某一端。
步骤23、通过数据载体,将第二路由的替补路由对应的目标记录返回给目标路由。
在一些具体示例中,可以把最新跳转到的页面(即替补路由)的数据记录装载到数据载体。
作为一种可能的实施方式,在检测到从第二路由跳转至目标路由的请求时,本申请实施例还可以包括:将除目标路由之外至少一路由的信息从路由管理组内剔除。如此,可减少维护多级路由的成本(即此处可以不维护非目标路由),同时,促使目标记录能跨多级路由地直接返回给目标路由(如最初的第一路由),保障跨级路由间自由地实时通信,从而提高目标应用的时效性能和用户体验。例如,路由管理组为栈形式的容器时,可以出栈的形式剔除非目标路由,包括剔除第二路由和第二路由的替补路由,如对图3或图4的路由B、C、D、E进行批量出栈,使得路由E的数据记录(即目标记录)能被载体直接跨多级地返回给路由A。
作为一种可能的实施方式,本申请实施例还可以包括:基于第一路由接收到的目标记录刷新第一路由,以供目标应用展示目标记录对应产生的结果。如图6所示,以上述路由链“首页-列表-详情-修改-结果”为例,若页面“修改”发生了变更,“结果”页进而展示新内容,则可将此消息(页面状态为“已修改”和/或修改详情)返回给第一路由(如列表页或首页),并通知第一路由是否需要刷新页面,若选择刷新,则呈现的新版第一路由可展示有新内容(如列表内新增某联系人)。
作为一种可能的实施方式,创建上述路由的过程可包括:校验待建路由对应的文件类名是否存在,及文件类名对应的身份标识是否已登记在册;若文件类名和身份标识均存在,则对待建路由进行创建;若文件类名和/或身份标识不存在,则针对待建路由的创建进行阻断和/或报错。此过程可概述为使用命名路由,上述登记在册可指登记在路由映射表,该路由映射表是指各路由的(唯一)身份标识(或称字符串key)形成的集合,该key的命名可以与该key对应的文件类名相同或不同。下面为方便校验和说明路由是否构建成功,选择将该路由的身份标识与文件类名统一命名。
在项目开发过程中,预成功新建一个路由的过程可以是,给该路由打上一个唯一性的字符串key,该key可以理解为该路由的身份ID,并把它注册到路由映射表,如此才能成功新建一个路由。例如,需要构建一个用户可见、叫首页的真实页面(即路由)时,该页面在工程项目里的文件类名可为HomePage(即用户所看到的页面名叫“首页”),若在路由映射表中也有一个与前述HomePage对应的key(该key也名为“HomePage”),那便是可以创建该路由;简言之,对路由的创建或校验等管理流程,其实就是对其唯一字符串key的创建或校验等。
由于是使用命名路由,那么从路由映射表中,可能会查找不到所需的唯一字符串key,原因是工程项目里没有对应的文件类名,或是对应的文件类名没有注册到映射表中。因此,为保证命名路由能被正确创建,就需要在统一创建页面的方法里做统一的校验,以尝试通过字符串key去预创建对应的路由;简言之,可设置至少有两步校验流程的校验机制,如第一步先校验所需的文件类名是否存在,第二步再校验文件类名是否已注册到映射表,任一校验结果为假时,就会做出相应的报错或阻断,使得开发人员在开发阶段就有了明确的报错依据,且可以根据报错的提示做相应处理。
如图5所示,上述校验机制具体可为:a.校验路由唯一key关联对应的文件类名是否存在,这里可由系统框架提供的API来校验,API返回true,则进行下一步校验,API返回false,则进行阻断报错,开发人员可根据该报错信息进行相应处理;b.校验路由唯一key在路由映射表是否存在,遍历路由映射表,如果唯一key在映射表存在,则说明路由已注册,如果不存在则进行阻断报错,开发人员可根据报错信息进行处理;c.只有a、b项都通过了校验,才会进行该路由的创建和管理,否则可以提示对该路由的创建失败。上述校验机制作为辅助技术,为本申请实施例提供了一定的容错处理流程,如阻断报错等。当然,也可以先校验映射表里有无所需的key,再校验该key对应的文件类名是否存在,即对key和文件类名的校验顺序可不限。
本申请实施例中跨多级路由的通信流程,可以用于Flutter应用。Flutter是一套开源的跨平台UI框架,主要用于客户端应用app的开发;Flutter应用是单页面应用,也是单线程运行的,其能与用户直接可见并交互的一定是最前台或最上层(即居上)的路由。综上,以图3为例,上述跨多级路由的通信流程或场景,具体可包括:
a)可以预先创建路由管理组来管理路由,初始路由被创建并入栈路由管理组,入栈的机制是后入的在路由管理组的最上层。此a)项的实施前提可以是,当目标应用启动运行时就实施a)项操作。
b)创建初始路由的前、后或同时,注入用以承载数据记录的全局实体(即全局性数据载体)一并进行管理,该数据记录可以是对一个消息事件的回调,或是一个消息通知。其中,全局实体或称全局载体,该全局载体可随路由跳转变化,即协同路由的跳转顺序指向(最新)跳转到的替换路由。
c)当需要跳转(可含打开之义)下一个路由时,可根据此下一路由(即替换路由)对应的key创建该替换路由(涉及上述校验机制),并将建好的替换路由入栈到路由管理组的最上层。比如,在详情页面需要下一步修改时,可以在详情页面点击修改按钮,以创建接续的“修改”页面。
d)将(最新)跳转到的替换路由的目标记录(如消息和/或事件)载入上述全局载体,且剔除路由管理组内的非目标路由(含第二路由)的信息,以使得全局载体能装载目标记录由最新跳转到的替换路由直接返回给目标路由,实现跨多级路由的信息通信(回传)。如图3所示,最新跳转到的替换路由为路由E,目标路由为路由A,可以剔除Flutter应用中路由A之上的各路由(路由D、C、B,还可以包含路由E),即让无需展示的各路由批量出栈,同时,促使路由E的数据记录在全局载体的协同下,直接回传到路由A。当然,上述最新跳转到的替换路由实则是路由E时,也可以自行设置其他路由D或C等替代路由E作为预与路由A跨多级通信的路由,即此时可允许其他路由D或C的消息事件载入载体回传给路由A,具体可由实际情况自定。
e)可选地,目标路由(如图6通信交互图中的APage)接收到目标记录后,就可以处理下一步的业务逻辑(如消费该记录以便展示),完成必要的需求,以使一定程度上优化处理性能(如加快),提高用户对目标应用的实时体验感。
综上,本申请实施例中,路由管理组能统一管理路由的入栈和出栈,以及暂存路由的状态(已修改、未修改)等;可以在初始路由之前就注入数据载体,以便后续顺利进行跨多级路由的通信,而此跨多级路由的通信可指,当路由需要跨多级返回并传递消息事件时,把需要通信的消息事件载入之前注入的载体,然后跨多级路由地直接一并返回;校验机制的存在是因为,路由的创建需确保其对应的文件类名是存在的,以及该key(可与文件类名同名)在路由映射表中已注册。相比于现有方案,本申请实施例至少有下述优势:
1)实现了基于Flutter跨多级路由返回并进行消息事件的通信(现有技术方案只有二级);
2)支持替换路由到目标路由直接地传递消息事件;
3)整合整条通信链路且链路清晰,通信易于跟踪,与二级路由通信结构保持一致,不需要再维护多路由结点的消息事件,使用上与原来方式基本无异,使用方式简单,不需要额外的学习成本;
4)可以支持无限级地传递消息事件;
5)跨多级路由后,能实时传递消息事件,实现页面的数据有条件限制的实时更新,避免部分毫无意义的无效刷新(因为路由的刷新会消耗一定的性能,特别是数据量大的情况),提高应用性能和用户体验;
6)可以随意回到指定的目标路由并进行消息事件的通信,适应更多的(交互)场景,满足更多的业务需求;
7)有助于提高应用的开发效率以及更好的维护。
总言之,本申请实施例最终的效果是:使用此方案集成到Flutter应用开发中,可以很方便高效地对应用路由进行管理和导航,包括跨多级路由地将消息或事件返回到目标路由以完成通信,能实现应用业务的实时更新处理,能很好的提高应用性能和用户体验,还能随意回到指定的路由,满足更多的业务需求。
除了上述技术方案,面对(全局)广播的方式,在不考虑广播这一方式缺陷的情况下:很容易造成多点(路由)响应的情况且还不易发现、消息事件的传递难以跟踪或不易维护等,可以使用广播通知的方式替代协同配置出的全局载体,即一对多的进行全局广播,在需要消费消息的监听点或收信点(即路由)实时监听广播,使得一旦有广播,目标路由能收到广播结果并进行相应的业务逻辑处理。因此,作为一种可能的实施方式,数据载体用以广播而非装载目标记录时,本申请实施例的方法还可以包括如下操作:对目标路由设置监听程序,及对除目标路由之外的路由设置禁听程序,以使目标路由收听到数据载体广播的目标记录。如此,有助于阻拦非目标路由收听目标记录,避免目标记录被非目标路由消费,降低用户体验。或者可理解为,不设有监听程序的路由本身就是被禁听的对象。
请参阅图7,本申请第二方面提供一种跨路由的通信系统的一个具体实施例,该系统包括:
获取单元701,用于获取注入有数据载体的路由管理组;数据载体用以将路由管理组内一路由的数据记录传递给另一路由;
处理单元702,用于将目标应用包含的至少一对路由的信息存入路由管理组;与每对路由中的第一路由配对的第二路由,为第一路由被跳转后接续展示的替补路由;
处理单元702,用于在检测到从第二路由跳转至目标路由的请求时,将第二路由的替补路由对应的目标记录载入数据载体,以使目标记录被数据载体装载返回给目标路由;目标路由包括任一被跳转的路由。
可选地,处理单元702具体用于:
依据目标应用的运行时间确定数据载体的存活期;
将数据载体在存活期内随路由间的跳转顺序,设置为指向替补路由,以供区分目标路由接收到的目标记录所属的路由。
可选地,处理单元702具体用于:
依据目标应用的运行时间确定数据载体的存活期;
限定数据载体在存活期内载有的目标记录携带路由身份标识,以供区分目标路由接收到的目标记录所属的路由。
可选地,处理单元702具体用于:
校验待建路由对应的文件类名是否存在,及文件类名对应的身份标识是否已登记在册;
若文件类名和身份标识均存在,则对待建路由进行创建;
若文件类名和/或身份标识不存在,则针对待建路由的创建进行阻断和/或报错。
可选地,路由管理组为栈形式的容器时,处理单元702具体用于:
按各路由间的跳转顺序,将第一路由信息和第二路由信息先后入栈到容器,且第二路由信息较比第一路由信息置于容器的上层。
可选地,处理单元702还用于:
将除目标路由之外至少一路由的信息从路由管理组内剔除。
可选地,处理单元702还用于:
基于第一路由接收到的目标记录刷新第一路由,以供目标应用展示目标记录对应产生的结果。
可选地,数据载体用以广播而非装载目标记录时,处理单元702还用于:对目标路由设置监听程序,及对除目标路由之外的路由设置禁听程序,以使目标路由收听到数据载体广播的目标记录。
本申请实施例中,跨路由的通信系统各单元所执行的操作,与前述第一方面或第一方面的任一具体方法实施例所描述的操作类似,具体此处不再赘述。当然,本申请第一方面各操作的具体实现过程也可参见第二方面的相关描述实现。
请参阅图8,本申请实施例的电子设备800可以包括一个或一个以上中央处理器CPU(CPU,central processing units)801和存储器805,该存储器805中存储有一个或一个以上的应用程序或数据。
其中,存储器805可以是易失性存储或持久存储。存储在存储器805的程序可以包括一个或一个以上模块,每个模块可以包括对电子设备中的一系列指令操作。更进一步地,中央处理器801可以设置为与存储器805通信,在电子设备800上执行存储器805中的一系列指令操作。
电子设备800还可以包括一个或一个以上电源802,一个或一个以上有线或无线网络接口803,一个或一个以上输入输出接口804,和/或,一个或一个以上操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等。
该中央处理器801可以执行前述第一方面或第一方面的任一具体方法实施例所执行的操作,具体不再赘述。
本申请提供的一种计算机可读存储介质,包括指令,当所述指令在计算机上运行时,使得计算机执行如上述第一方面或第一方面的任一具体实现方式所描述的方法。
本申请提供的一种包含指令或计算机程序的计算机程序产品,当所述计算机程序产品在计算机上运行时,使得计算机执行如上述第一方面或第一方面的任一具体实现方式所描述的方法。
可以理解的是,在本申请的各种实施例中,各步骤的序号大小并不意味着执行顺序的先后,各步骤的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统(若存在)、装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统或装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品(计算机程序产品)存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,业务服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,read-only memory)、随机存取存储器(RAM,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (10)
1.一种跨路由的通信方法,其特征在于,包括:
获取注入有数据载体的路由管理组;所述数据载体用以将所述路由管理组内一路由的数据记录传递给另一路由;
将目标应用包含的至少一对路由的信息存入路由管理组;与每对路由中的第一路由配对的第二路由,为所述第一路由被跳转后接续展示的替补路由;
在检测到从所述第二路由跳转至目标路由的请求时,将所述第二路由的替补路由对应的目标记录载入所述数据载体,以使所述目标记录被所述数据载体装载返回给目标路由;所述目标路由包括任一被跳转的路由。
2.根据权利要求1所述的方法,其特征在于,所述数据载体的配置过程包括:
依据所述目标应用的运行时间确定所述数据载体的存活期;
将所述数据载体在所述存活期内随路由间的跳转顺序,设置为指向替补路由,以供区分所述目标路由接收到的目标记录所属的路由。
3.根据权利要求1所述的方法,其特征在于,所述数据载体的配置过程包括:
依据所述目标应用的运行时间确定所述数据载体的存活期;
限定所述数据载体在所述存活期内载有的目标记录携带路由身份标识,以供区分所述目标路由接收到的所述目标记录所属的路由。
4.根据权利要求1所述的方法,其特征在于,创建路由的过程包括:
校验待建路由对应的文件类名是否存在,及所述文件类名对应的身份标识是否已登记在册;
若所述文件类名和所述身份标识均存在,则对所述待建路由进行创建;
若所述文件类名和/或所述身份标识不存在,则针对所述待建路由的创建进行阻断和/或报错。
5.根据权利要求1所述的方法,其特征在于,所述路由管理组为栈形式的容器时,所述将目标应用包含的至少一对路由的信息存入路由管理组,包括:
按各路由间的跳转顺序,将所述第一路由信息和所述第二路由信息先后入栈到所述容器,且所述第二路由信息较比所述第一路由信息置于所述容器的上层。
6.根据权利要求1所述的方法,其特征在于,在检测到从第二路由跳转至目标路由的请求时,所述方法还包括:
将除所述目标路由之外至少一路由的信息从所述路由管理组内剔除。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述数据载体用以广播而非装载所述目标记录时,所述方法还包括:
对所述目标路由设置监听程序,及对除所述目标路由之外的路由设置禁听程序,以使所述目标路由收听到所述数据载体广播的所述目标记录。
8.一种跨路由的通信系统,其特征在于,包括:
获取单元,用于获取注入有数据载体的路由管理组;所述数据载体用以将所述路由管理组内一路由的数据记录传递给另一路由;
处理单元,用于将目标应用包含的至少一对路由的信息存入路由管理组;与每对路由中的第一路由配对的第二路由,为所述第一路由被跳转后接续展示的替补路由;
所述处理单元,用于在检测到从所述第二路由跳转至目标路由的请求时,将所述第二路由的替补路由对应的目标记录载入所述数据载体,以使所述目标记录被所述数据载体装载返回给目标路由;所述目标路由包括任一被跳转的路由。
9.一种电子设备,其特征在于,包括:
中央处理器,存储器以及输入输出接口;
所述存储器为短暂存储存储器或持久存储存储器;
所述中央处理器配置为与所述存储器通信,并执行所述存储器中的指令操作以执行权利要求1至7中任意一项所述的方法。
10.一种计算机可读存储介质,其特征在于,包括指令,当所述指令在计算机上运行时,使得计算机执行如权利要求1至7中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311577222.5A CN117608875A (zh) | 2023-11-22 | 2023-11-22 | 跨路由的通信方法、系统和相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311577222.5A CN117608875A (zh) | 2023-11-22 | 2023-11-22 | 跨路由的通信方法、系统和相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117608875A true CN117608875A (zh) | 2024-02-27 |
Family
ID=89957398
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311577222.5A Pending CN117608875A (zh) | 2023-11-22 | 2023-11-22 | 跨路由的通信方法、系统和相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117608875A (zh) |
-
2023
- 2023-11-22 CN CN202311577222.5A patent/CN117608875A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8464270B2 (en) | Dependency management with atomic decay | |
JP5042454B2 (ja) | 受信コンピューティングシステムのための方法とコンピュータプログラム、およびコンピューティングシステム | |
US9311286B2 (en) | Intelligent automatic expansion/contraction of abbreviations in text-based electronic communications | |
CN108289034B (zh) | 一种故障发现方法和装置 | |
US20130290347A1 (en) | Systems and methods for providing data-driven document suggestions | |
CN104462370A (zh) | 分布式任务调度系统及方法 | |
CN101802815A (zh) | 数据-驱动同步 | |
CN110784498B (zh) | 一种个性化数据容灾方法及装置 | |
CN113342472A (zh) | 微服务集群创建方法、装置、电子设备及可读存储介质 | |
US10423625B2 (en) | Exactly-once semantics for streaming analytics in non-idempotent output operations | |
CN111770002A (zh) | 测试数据转发控制方法、装置、可读存储介质和电子设备 | |
US20120124001A1 (en) | Increasing database availability during fault recovery | |
US20210027185A1 (en) | Parsing unlabeled computer security data logs | |
CN108958969B (zh) | 数据库灾备方法、装置及灾备系统 | |
CN113515317A (zh) | 数据恢复的方法、装置 | |
CN112860412B (zh) | 业务数据处理方法、装置、电子设备及存储介质 | |
CN115204889A (zh) | 文本处理方法、装置、计算机设备及存储介质 | |
CN114401187A (zh) | 灰度发布方法、装置、计算机设备和存储介质 | |
US10652322B2 (en) | Scalable parallel messaging process | |
CN117608875A (zh) | 跨路由的通信方法、系统和相关设备 | |
CN113297258B (zh) | 一种基于目标人群数据提取的定制化信息推送方法及装置 | |
CN108182241A (zh) | 一种数据交互的优化方法、装置、服务器及存储介质 | |
CN112559628A (zh) | 一种多集群消息的同步方法、装置、介质及电子设备 | |
CN110096874A (zh) | 程序页面安全告警方法、装置、计算机设备及存储介质 | |
CN114860349B (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 |