组件化应用程序通信方法、装置、设备及介质与流程

文档序号:25090316发布日期:2021-05-18 20:02阅读:121来源:国知局
组件化应用程序通信方法、装置、设备及介质与流程

1.本申请涉及组件化技术领域,尤其涉及组件化应用程序通信方法、装置、设备及介质。


背景技术:

2.随着应用程序的业务越来越复杂,例如,安卓系统的应用工程越来越多,对于每个工程如果稍加改动,则需要重新编译。这种高耦合的开发模式,导致程序开发效率较低。
3.组件化开发是将应用程序的业务功能进行拆分,每一业务功能是一个单独的工程,每个工程作为一个独立组件可以独立运行,然后将多个独立开发的组件,根据业务需求构建成多个应用程序。
4.但是,目前基于组件化开发的应用程序面临许多亟待解决的问题。


技术实现要素:

5.鉴于现有技术中的上述缺陷或不足,期望提供一种组件化应用程序通信方法、装置、设备及介质,来解决组件化开发的不同的应用程序之间的通信问题。
6.一方面,本申请实施例提供了一种组件化应用程序通信方法,该应用程序至少包括源路由总线组件,该方法包括:
7.源路由总线组件接收路由消息;
8.源路由总线组件通过绑定远程服务建立外部绑定路由,该外部绑定路由是源路由总线组件和与路由消息对应的目标应用程序内的目标消息分发服务组件之间的消息传输通路;
9.源路由总线组件通过外部绑定路由将路由消息发送至目标消息分发服务组件,以使目标应用程序内的第一目标组件获得路由消息。
10.一方面,本申请实施例提供了一种组件化应用程序通信方法,该应用程序包括目标路由总线组件和目标消息分发服务组件,该方法包括:
11.目标消息分发服务组件接收到源应用程序的源路由总线组件发送的绑定远程服务请求;
12.响应绑定远程服务请求,在目标消息分发服务组件和源路由总线组件之间建立外部绑定路由,该外部绑定路由是源路由总线组件和与路由消息对应的目标应用程序内的目标消息分发服务组件之间的消息传输通路;
13.在接收到外部绑定路由发送的路由消息时,目标消息分发服务组件通过内部绑定路由发送路由消息至目标路由总线组件,该内部绑定路由是目标消息分发服务组件和目标路由总线组件之间的消息传输通路;
14.目标路由总线组件将路由消息发送至应用程序内的第一目标组件。
15.一方面,本申请实施例提供了一种组件化应用程序通信装置,该装置包括源路由总线组件,其中,
16.源路由总线组件,用于接收路由消息;并通过绑定远程服务建立外部绑定路由,该外部绑定路由是源路由总线组件和与路由消息对应的目标应用程序内的目标消息分发服务组件之间的消息传输通路;
17.源路由总线组件,还用于将路由消息通过外部绑定路由发送至目标消息分发服务组件,以使目标应用程序内的第一目标组件获得路由消息。
18.一方面,本申请实施例提供了一种组件化应用程序通信装置,该应用程序包括目标路由总线组件和目标消息分发服务组件,该装置包括:
19.目标消息分发服务组件,用于接收到源应用程序的源路由总线组件发送的绑定远程服务请求;响应绑定远程服务请求,在目标消息分发服务组件和源路由总线组件之间建立外部绑定路由,该外部绑定路由是源路由总线组件和与路由消息对应的目标应用程序内的目标消息分发服务组件之间的消息传输通路;
20.目标消息分发服务组件,用于在接收到外部绑定路由发送的路由消息时,通过内部绑定路由发送路由消息至目标路由总线组件,该内部绑定路由是目标消息分发服务组件和目标路由总线组件之间的消息传输通路;
21.目标路由总线组件,用于将路由消息发送至应用程序内的第一目标组件
22.一方面,本申请实施例提供了一种电子设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,该处理器执行所述程序时实现如本申请实施例描述的方法。
23.第六方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序用于实现本申请实施例描述的方法。
24.本申请实施例提供了组件化应用程序通信方法、装置、设备及介质,该方法通过应用程序内的源路由总线组件接收路由消息;源路由总线组件通过绑定远程服务建立外部绑定路由,然后,源路由总线组件通过外部绑定路由将路由消息发送至目标消息分发服务组件,以使目标应用程序内的第一目标组件获得路由消息。本申请实施例通过应用程序内路由总线组件建立外部绑定路由,来实现不同应用程序内的组件间的通信,其有效地解决不同应用程序内的组件通信的问题。
附图说明
25.通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
26.图1示出了本申请实施例提供的组件化应用程序通信方法的应用场景示意图;
27.图2示出了本申请实施例提供的基于组件化开发的多个应用程序的结构示意图;
28.图3示出了本申请实施例提出的组件化应用程序通信方法的流程示意图;
29.图4示出了本申请实施例提供的又一组件化应用程序通信方法的流程示意图;
30.图5示出了本申请实施例提供的另一组件化应用程序通信方法的流程示意图;
31.图6示出了本申请实施例提供的再一组件化应用程序通信方法的流程示意图;
32.图7示出了本申请实施例提供的应用程序间的交互通信示意图;
33.图8示出了本申请实施例提供的应用外消息的交互示意图;
34.图9示出了本申请实施例提供的应用程序内的交互通信示意图;
35.图10示出了本申请实施例提供的应用内消息的交互示意图;
36.图11示出了本申请实施例提供的组件化应用程序通信装置的结构示意图;
37.图12示出了本申请实施例提供的又一组件化应用程序通信装置的结构示意图;
38.图13示出了本申请实施例提供终端设备或服务器的处理系统的结构示意图。
具体实施方式
39.下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关公开,而非对该公开的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与公开相关的部分。
40.需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
41.请参考图1,图1示出了本申请实施例提供的组件化应用程序通信方法的场景示意图。如图1所示,用户可以通过终端设备101实现组件源代码的编写,然后将编写完成的组件源代码通过网络102存储至服务器103。随着应用程序的发展,特别是移动应用程序的组件化,模块化发展,不同的用户可以将重复的源代码合并成一个组件,不同功能的模块可以调用底层存储的组件来形成功能模块,进一步地,通过模块之间的调用来构建应用程序。
42.组件化是指解耦复杂系统时将多个功能模块进行拆分、重组的过程,有多种属性、状态反映其内部特性。可以采用模块式开发方式,单个组件包括模板,数据结构,程序,样式四部份。组件的接口表达了由该组件提供的功能和调用它时所需要的参数。组件是可以单独开发、测试。允许多人同时协作,编写及开发、研究不同的功能模块。
43.例如,在组件化的应用程序构建的应用平台上,开发人员通过终端设备101实现对组件源代码的编写,或者对已经编写完的组件源代码进行访问和查询,或者自定义创建移动应用程序。
44.例如,通过预先安装在终端设备101上的组件管理平台实现对组件的查询、编辑操作等,或者对基于组件开发多个应用程序的编辑、访问、调用等功能。
45.如图1所示,在服务器103中可以存储多个组件源代码、或者组件包、应用信息及其详情,并为应用程序提供业务数据。
46.终端设备101包括但不限于台式电脑、笔记本电脑、具有计算处理能力的移动计算设备等。
47.网络2可以包括无线网络或有线网络,通过无线网络或者有线网络使用标准通信技术和/或协议。网络通常为因特网,也可以是任何网络,包括但不限于局域网(local area network,lan)、城域网(metropolitan area network,man)、广域网(wide area network,wan)、移动、有线或者无线网络、专用网络或者虚拟专用网络的任何组合。
48.服务器103包括但不限于独立的物理服务器,多个物理服务器构成的服务器集群或者分布式系统,提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、cdn、以及大数据和人工智能平台等基础云计算服务的云服务器。
49.如图2所示,图2示出了本申请实施例提供的基于组件化开发的多个应用程序的结构示意图。在如图1所示的应用场景中,基于终端设备101编写开发的多个应用程序可以作
为应用矩阵,其通过网络连接方式将构建参数传输给应用矩阵中的应用程序。该应用程序可以是预先安装在智能终端上的软件,即一个独立的软件。该应用程序也可以是软件中的部分功能的复合组件。复合组件是指用于实现部分程序功能的组件集合,部分程序功能例如,“扫一扫”功能,“摇一摇”功能等。
50.假设应用程序a包括一个或多个组件,如组件a1、组件a2,组件a
n
等。应用程序b可以包括一个或多个组件,如组件b1、组件b2,组件b
n
等,复合组件可以包括一个或多个组件,如组件d1、组件d2。为了实现应用程序正常运行,应用程序内部的多个组件之间需要进行数据通信,从而实现应用程序的功能。两个应用程序(例如应用程序a和应用程序b)之间也可能需要进行数据通信,例如应用程序a的某个组件会需要与应用程序b内的某个组件进行通信,因为随着应用程序发展的多样化,应用程序内包含的多个组件可能受到内存占用条件的限制,使得部分组件需要进行复用,这就使得多个应用程序均可能需要与用于实现某种功能的复合组件之间存在应用外通信。在基于组件化框架开发的应用程序中如何实现组件间的通信是亟待解决的重要问题。
51.在本申请实施例中,应用内通信是指基于组件化开发的同一个应用程序内部包含的多个组件之间的通信。例如,图2中应用程序a内部的组件a1和组件a2之间的通信可以称为应用内通信。
52.应用外通信是指基于组件化开发的不同的应用程序之间的通信。例如,图2中应用程序a的组件a1和应用程序b的组件b1之间的通信可以称为应用外通信。
53.本申请为了解决上述问题,提出了一种应用程序通信方法,可以有效地解决组件化框架开发的应用程序之间的自由通信。
54.下面请参考图3,图3示出了本申请实施例提出的组件化应用程序通信方法的流程示意图。如图3所示,该方法可以由应用程序通信装置执行,该应用程序通信装置可以是基于某种操作系统的源应用程序内包含的一个或多个组件,该组件包括但不限于独立安装的应用程序,或者实现应用程序中某种功能的复合组件,该组件包括但不限于活动(activity)或者服务(service)。该源应用程序至少包括源路由总线组件,该方法包括:
55.步骤301,源路由总线组件接收路由消息。
56.步骤302,源路由总线组件通过绑定远程服务建立外部绑定路由,该外部绑定路由是源路由总线组件和与路由消息对应的目标应用程序内的目标消息分发服务组件之间的消息传输通路;
57.步骤303,源路由总线组件将路由消息通过外部绑定路由发送至目标消息分发服务组件,以使目标应用程序内的第一目标组件获得路由消息。
58.在上述步骤中,源路由总线组件是指源应用程序中用于实现路由消息传递和发布的组件。源应用程序是指路由消息的发送端。目标应用程序是指路由消息的接收端。
59.路由消息是指实现组件为实现某种功能发送的消息,该功能包括但不限于调用页面、调用服务、获取数据、传送消息等。其中传送消息的内容包括但不限于文件内容等。
60.为了实现源应用程序与目标应用程序之间的通信,本申请实施例提出通过源应用程序内的源路由总线组件向目标应用程序的目标消息分发服务组件请求建立路由通路,例如通过远程服务建立外部绑定路由,该外部绑定路由是指源路由总线组件和与路由消息对应的目标应用程序内的目标消息分发服务组件之间的消息传输通路。在源路由总线组件接
收路由消息时,源路由组件根据路由消息的消息类型确定是否需要建立外部绑定路由。在源路由组件根据路由消息的消息类型,确定路由消息为应用外消息时,通过绑定远程服务来建立外部绑定路由。
61.在建立外部绑定路由之后,源应用程序的组件发送的路由消息,经过源路由总线组件的处理之后,分发至外部绑定路由,由于目标应用程序的目标消息分发服务组件与源路由总线组件之间已经建立了外部绑定路由,使得目标应用程序的目标消息分发服务组件实现源路由总线组件和目标路由总线组件之间的消息中转。
62.在上述实施例基础上,在源路由总线组件确定路由消息的消息类型为应用外消息时,源路由总线组件通过远程服务建立外部绑定路由,同时还向目标应用程序的目标消息分发服务组件请求注册回调接口。源路由总线组件通过远程服务绑定目标消息分发组件,并请求向目标消息分发服务组件注册回调接口,从而建立源路由总线组件与目标消息分发服务组件之间的双向通道,当目标应用程序返回路由消息的响应结果时,直接通过回调接口将响应消息回传至源路由总线组件,并经由源路由总线组件将响应消息反馈至发送路由消息的组件。
63.本申请实施例通过在不同应用程序之间存在通信需求时,建立源路由总线组件与目标消息分发服务组件之间外部绑定路由,来实现不同应用程序之间的通信,可以有效地提高不同应用程序之间的通信效率。
64.在上述实施例基础上,如图4所示,图4示出了本申请实施例提供的又一组件化应用程序通信方法的流程示意图。该方法可以由应用程序通信装置执行,该应用程序通信装置可以是基于某种操作系统的源应用程序内包含的一个或多个组件,该组件包括但不限于独立安装的应用程序,或者实现应用程序中某种功能的复合组件,该组件包括但不限于活动(activity)或者服务(service)。该源应用程序至少包括源路由总线组件,该方法包括:
65.步骤401,源路由总线组件接收路由消息;
66.步骤402,在源路由总线组件确定路由消息的消息类型为应用外消息时,源路由总线组件通过绑定远程服务建立外部绑定路由,源路由总线组件向目标应用程序的目标消息分发服务组件请求注册回调接口。
67.步骤403,调用消息处理器识别路由消息是否包括目标类型数据;
68.步骤403a,若包括目标类型数据,将路由消息进行格式转换处理,得到符合跨应用传输格式的路由消息;
69.步骤404,将符合跨应用传输格式的路由消息通过外部绑定路由发送至目标消息分发服务组件;
70.步骤403b,若不包括目标类型数据,则直接将路由消息通过外部绑定路由发送至目标消息分发服务组件。
71.在上述实施例基础上,本申请实施例提出的源路由总线组件还可以确定路由消息为应用外消息时,调用消息处理器识别路由消息是否包括目标类型数据。目标类型数据是指数据类型符合预设条件的数据。例如数据类型为图片、音频、音视频、短视频等多媒体数据,即大数据块。源路由总线组件可以通过apkcommunicationmanager类调用datawrapper(即消息处理器)对路由消息进行格式转换处理,将经过转换处理后的结果通过binder传输方式进行传输。例如路由消息包含json字符串格式的目标类型数据,将目标类型数据按照
数据转换格式转换成符合跨应用传输格式的路由消息,符合跨应用传输格式包括但不限于二进制字节流格式。本申请实施例提出的将目标类型数据进行格式转换处理,可以有效地解决大数据块传输存在的问题,有效地提升了应用外消息传输的速度。
72.在一些实施例中,在源路由总线组件确定路由消息的消息类型为应用内消息时,则可以根据路由消息的目标对象确定组件服务信息;然后根据组件服务信息确定源应用程序内的第二目标组件;将路由消息发送至第二目标组件,以使得第二目标组件根据路由消息进行操作处理。
73.本申请实施例通过源路由总线组件对应用内消息和应用外消息进行识别,来提高路由消息的传输准确率。
74.在上述实施例基础上,如图5所示,图5示出了本申请实施例提供的另一组件化应用程序通信方法的流程示意图。该方法可以由应用程序通信装置执行,该应用程序通信装置可以是基于某种操作系统的源应用程序内包含的一个或多个组件,该组件包括但不限于独立安装的应用程序,或者实现应用程序中某种功能的复合组件,该组件包括但不限于活动(activity)或者服务(service)。该源应用程序至少包括源路由总线组件,该方法包括:
75.步骤501,消息发起组件向源路由总线组件发送调用请求;
76.步骤502,源路由总线组件按照消息类型对调用请求进行消息封装,得到路由消息,该路由消息包括消息类型字段。
77.步骤503,源路由总线组件获取路由消息的消息类型字段;
78.步骤504,源路由总线组件根据消息类型字段确定路由消息属于应用内消息,还是属于应用外消息;
79.步骤504a,在源路由总线组件确定路由消息的消息类型为应用外消息时,源路由总线组件通过远程服务建立外部绑定路由;
80.步骤505,源路由总线组件通过外部绑定路由将路由消息发送至与目标消息分发服务组件,以使目标应用程序内的第一目标组件获得路由消息。
81.步骤504b,在源路由总线组件确定路由消息的消息类型为应用内消息时,获取路由消息的消息操作类型字段;
82.步骤506,根据消息操作类型对路由消息执行与消息操作类型对应的操作处理。
83.在上述步骤中,源路由总线组件接收到消息发起组件发送的调用请求时,根据消息类型对调用请求进行消息封装,得到路由消息,该路由消息包括消息类型字段。消息类型例如包括但不限应用内消息、应用外消息等。消息类型字段是指用于指示消息类型的字段。例如,应用内消息可以00标识,应用外消息可以用11标识。
84.当源路由总线组件封装完成之后,可以获取路由消息的消息类型字段,然后通过apkcommunicationmanger类对消息类型字段进行识别处理。
85.在识别到消息类型字段为应用内消息时:
86.源路由总线组件通过自动注册组件registerlibrary扫描收集到的组件服务信息,对路由消息对应的目标组件进行查询,或者对路由消息对应的目标组件服务进行查询,然后在查询得到目标组件之后,目标组件可以在注册过的信息管理服务中收到路由消息,并对该路由消息进行解析;
87.目标组件解析得到路由消息包含的消息操作类型字段,然后根据操作类型字段来
确定与操作类型字段对应的操作类型(actiontype)。例如,操作类型包括但不限于调用页面(page),调用服务(service)以及自定义操作(custom)。其中自定义操作是指预留的空白操作,可以根据用户需求设置的操作。
88.当确定操作类型字段表示为调用页面时,通过对android系统自带的页面调用服务对路由消息进行封装,同时在路由消息中保留对所调用的页面的原始引用,便于回调时进行响应消息的回传。
89.当确定操作类型字段表示为调用服务时,根据自动组件注册扫描组件内的服务表内存储的信息,根据服务表中服务的相应功能将服务信息自动在组件中进行注册,并声明对应的服务节点信息,然后通过将对应的服务信息封装在api类中执行回调。具体的服务方法都可以封装在api类中。当在服务方法执行有结果后,会触发当前的回调callback。callback的来源可以是同一个应用程序内的另一组件,或者是其他应用程序远程绑定的目标消息分发服务组件dispatchservice。
90.在识别到消息类型字段为应用外消息时:
91.在apkcommunicationmanger类中进行远程服务的目标消息分发服务组件dispatchservice绑定操作,同时请求在目标消息分发服务组件dispatchservice中注册回调接口。在完成绑定、注册后,将路由消息发送至建立的外部绑定路由。
92.apkcommunicationmanager类通过调用消息处理器(datawrapper)对路由消息进行转化和处理,通过binder传递的方式将经过转换处理后的路由消息进行传输。
93.经过转换处理之后,目标消息分发服务组件dispatchservice收到路由消息后,对路由消息进行解析,得到目标路由总线可识别的消息模式(bmessage),并在解析过程中注入新的消息回调,此消息回调用于在目标应用程序内实现对应用内消息的处理;
94.目标路由总线接收到目标消息分发服务组件发送的经过解析处理后的路由消息,按照应用内消息的通信流程,在目标应用程序内部执行组件间通信流程,从而实现对路由消息对应的操作处理。
95.在目标应用程序完成上述处理之后,触发目标消息分发服务组件dispatchservice封装响应消息至callback回调方法,此回调方法中会触发绑定目标消息分发服务组件dispatchservice时注册的回调接口,源应用程序的源路由总线组件将响应消息经由应用内消息的处理方式传送至源应用程序中的发起组件。
96.本申请实施例中,无论是应用内通信,还是应用外通信,都可以通过callback消息回调来获取回调结果。
97.在调用处理完成时,执行回调。例如,当属于应用外通信时,在本地的源路由总线组件中通过绑定远程服务方式绑定目标消息分发服务组件dispatchservice时,注册的接口回调方法被触发,接口回调方法会收到消息处理的响应消息,在接口回调方法中收到响应消息后,会触发响应消息通过回调接口返回源路由总线组件。
98.当属于应用内通信时,在本地的源路由总线组件中,直接执行bmessage中持有的callback消息回调,从而可以接收返回响应消息。
99.本申请实施例提出的组件化应用程序通信方法,可以通过源路由总线组件识别消息类型,并根据消息类型来确定路由通路,来实现不同应用程序之间的通信和同一应用程序内的组件间通信的自由切换,有效地提高了路由消息传输的效率。
100.在上述实施例基础上,如图6所示,图6示出了本申请实施例提供的再一组件化应用程序通信方法的流程示意图。该方法可以由应用程序通信装置执行,该应用程序通信装置可以是基于某种操作系统的目标应用程序内包含的一个或多个组件,该组件包括但不限于独立安装的应用程序,或者实现应用程序中某种功能的复合组件,该组件包括但不限于活动(activity)或者服务(service)。该目标应用程序包括目标路由总线组件和目标消息分发服务组件。该方法包括:
101.步骤601,目标消息分发服务组件接收到源应用程序的源路由总线组件发送的绑定远程服务请求;
102.步骤602,响应绑定远程服务请求,在目标消息分发服务组件和源路由总线组件之间建立外部绑定路由;该外部绑定路由是源路由总线组件和与路由消息对应的目标应用程序内的目标消息分发服务组件之间的消息传输通路;
103.步骤603,在接收到外部绑定路由发送的路由消息时,目标消息分发服务组件通过内部绑定路由发送路由消息至目标路由总线组件,该内部绑定路由是目标消息分发服务组件和目标路由总线组件之间的消息传输通路;
104.步骤604,目标路由总线组件将路由消息发送至应用程序内的第一目标组件。
105.在上述步骤中,目标应用程序在与源应用程序之间建立了外部绑定路由之后,目标应用程序的目标消息分发服务组件接收到源路由总线组件发送的绑定请求,响应绑定请求,在目标消息分发服务组件和源路由总线组件之间建立外部绑定路由。
106.例如,通过在源应用程序中点击绑定远程服务,可以将目标应用程序内的目标消息分发服务组件的接口文件的扩展名改为.aidl文件,实现服务的onbind方法,继承bander和实现aidl定义的接口,从而将目标消息分发服务组件的接口提供给调用接口的方法。
107.在上述实施例基础上,该方法还包括:
108.在目标应用程序启动时,调用目标应用程序内的组件管理类的初始化方法建立目标路由总线组件和目标消息分发服务组件之间的内部绑定路由,并请求注册目标路由总线组件到目标消息分发服务组件的回调接口。
109.本申请实施例,通过绑定远程服务将目标消息分发服务组件作为目标应用程序的对外访问接口,实现了应用程序通信的内外功能分化,提高了路由消息的传输效率。
110.下面以图7

9为例,假设基于安卓系统的源应用程序为应用程序a,应用程序a包括消息发起组件a1,源路由总线组件a2,源消息分发服务组件a3;基于安卓系统的目标应用程序为应用程序b,应用程序b包括消息处理组件b1,目标路由总线组件b2,目标消息分发服务组件b3。消息发起组件a1包括但不限于实现某种功能的复合组件。
111.如图7和图8所示,其中图6示出了本申请实施例提出的应用程序之间的通信路径的示意图。
112.(1)消息发起组件a1向源路由总线组件a2发送调用请求,例如是请求调用消息处理组件b1提供的页面;
113.(2)源路由总线组件a2按照消息类型对调用请求进行消息封装,得到路由消息,该路由消息包括消息类型字段。
114.源路由总线组件a2获取路由消息的消息类型字段,并根据消息类型字段确定路由消息属于应用内消息,还是属于应用外消息;
115.(3)在源路由总线组件a2确定路由消息的消息类型为应用外消息时,源路由总线组件a2通过绑定远程服务建立外部绑定路由,并向目标应用程序b的目标消息分发服务组件b3请求注册回调接口。其中,外部绑定路由是源路由总线组件a2和目标应用程序b内的目标消息分发服务组件b3之间的消息传输通路。
116.源路由总线组件a2通过外部绑定路由将路由消息发送至目标消息分发服务组件b3。
117.(4)目标消息分发服务组件b3通过其与目标路由总线组件b2之间的内部绑定路由,发送路由消息至目标路由总线组件b2;再经由目标路由总线组件b2将路由消息发送至目标应用程序内的消息处理组件b1。
118.(5)消息处理组件b1将路由消息的响应消息返回至目标路由总线组件b2。
119.(6)目标路由总线组件b2将响应消息封装处理成目标消息分发服务组件b3可识别的消息,通过回调接口返回至目标消息分发服务组件b3。
120.(7)目标消息分发服务组件b3将响应消息通过源路由总线组件a2和目标消息分发服务组件b3之间注册的回调接口,回传至源路由总线组件a2。
121.(8)源路由总线组件a2将响应消息反馈至发起组件a1。
122.经过上述步骤的处理,完成了应用程序a的发起组件a1与应用程序b的消息处理组件b1之间的一次完整的通信。
123.如图9和图10所示,(1)源路由总线组件a2接收组件1发送的路由消息;
124.在源路由总线组件a2确定路由消息的消息类型为应用内消息时,源路由总线组件a2根据路由消息的目标对象获取扫描得到的组件服务信息;
125.(2)源路由总线组件a2根据组件服务信息确定源应用程序内的目标组件a4;
126.源路由总线组件a2将路由消息发送至目标组件a4,以使得目标组件根据路由消息进行操作处理。
127.(3)目标组件a4获取路由消息的消息操作类型字段,根据消息操作类型对路由消息执行与消息操作类型对应的操作处理,并将相应的操作处理结果作为响应消息返回路由总线组件a2;
128.在消息操作类型为页面调用操作时,调用页面调用服务封装路由消息来执行页面调用;
129.在消息操作类型为服务调用操作时,根据注册组件扫描信息表内存储的服务信息,将路由消息路由到接口类回调中执行。
130.在消息操作类型为自定义操作时,根据自定义操作参数,将路由消息发送到对应的目标组件。例如自定义操作是获取数据,则通过目标组件根据查询参数获取对应的数据,作为响应消息。例如传送数据,则获取目标组件的标识参数,根据标识参数将待传输数据通过内部绑定路由发送至相同应用程序内的目标组件。
131.(4)源路由总线组件a2将响应消息返回至组件a1。
132.本申请实施例,通过源路由总线组件实现应用程序内部的路由消息的转发,有效地提高了应用程序内部各个组件的通信效率。
133.附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代
表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
134.下面请参考图11,图11示出了本申请实施例提供的组件化应用程序通信装置的结构示意图。该装置是基于某种操作系统的应用程序内包含的一个或多个组件,该组件包括但不限于独立安装的应用程序,或者实现应用程序中某种功能的复合组件,该组件包括但不限于活动(activity)或者服务(service)。该装置包括:源路由总线组件,其中,
135.源路由总线组件901,用于接收路由消息;通过远程服务建立外部绑定路由,该外部绑定路由是源路由总线组件和与路由消息对应的目标应用程序内的目标消息分发服务组件之间的消息传输通路;
136.该源路由总线组件901,还用于将路由消息通过外部绑定路由发送至目标消息分发服务组件,以使目标应用程序内的第一目标组件获得路由消息。
137.可选地,源路由总线组件901还用于在源路由总线组件通过绑定远程服务建立外部绑定路由时,向目标应用程序的目标消息分发服务组件请求注册回调接口,该回调接口用于将目标应用程序的第一目标组件反馈的消息传输至源路由总线组件。
138.可选地,源路由总线组件用于:
139.调用消息处理器识别路由消息是否包括目标类型数据;
140.若包括目标类型数据,将路由消息进行格式转换处理,得到符合跨应用传输格式的路由消息;
141.将符合跨应用传输格式的路由消息通过外部绑定路由发送至目标消息分发服务组件;
142.若不包括目标类型数据,则直接将路由消息通过外部绑定路由发送至目标消息分发服务组件。
143.该装置还包括源消息分发服务组件,
144.源路由总线组件用于在所述应用程序启动时,调用组件管理类的初始化方法建立所述源路由总线组件和源消息分发服务组件之间的内部绑定路由,以及请求注册所述源路由总线组件到所述源消息分发服务组件的回调接口。
145.可选地,该装置还包括消息发起组件,
146.源路由总线组件用于接收消息发起组件发送的调用请求;
147.按照消息类型对调用请求进行消息封装,得到路由消息,该路由消息包括消息类型字段。
148.源路由总线组件用于:
149.获取路由消息的消息类型字段;
150.根据消息类型字段确定路由消息属于应用内消息,还是属于应用外消息。
151.源路由总线组件用于在确定路由消息的消息类型为应用内消息时,根据路由消息
的目标对象获取扫描得到的组件服务信息;
152.根据组件服务信息确定应用程序内的第二目标组件;
153.将路由消息发送至第二目标组件,以使得第二目标组件根据路由消息进行操作处理。
154.获取路由消息的消息操作类型字段,根据消息操作类型对路由消息执行与消息操作类型对应的操作处理。
155.下面请参考图12,图12示出了本申请实施例提供的又一组件化应用程序通信装置的结构示意图。该装置是基于某种操作系统的应用程序内包含的一个或多个组件,该组件包括但不限于独立安装的应用程序,或者实现应用程序中某种功能的复合组件,该组件包括但不限于活动(activity)或者服务(service)。该装置包括:目标路由总线组件1001和目标消息分发服务组件1002,
156.目标消息分发服务组件1001,用于接收到源应用程序的源路由总线组件发送的绑定远程服务请求;响应绑定远程服务请求,在目标消息分发服务组件和源路由总线组件之间建立外部绑定路由;
157.目标消息分发服务组件1001,还用于在接收到外部绑定路由发送的路由消息时,通过目标消息分发服务组件和目标路由总线组件之间的内部绑定路由,传输路由消息至目标路由总线组件;
158.目标路由总线组件1002,用于将路由消息发送至目标应用程序的第一目标组件。
159.可选地,目标路由总线组件1002用于:在目标应用程序启动时,调用目标应用程序内的组件管理类的初始化方法建立内部绑定路由,并请求注册从目标路由总线组件到目标消息分发服务组件的回调接口。
160.应当理解,上述装置中记载的诸单元或模块与参考图3描述的方法中的各个步骤相对应。由此,上文针对方法描述的操作和特征同样适用于上述装置及其中包含的单元,在此不再赘述。上述装置可以预先实现在电子设备的浏览器或其他安全项目中,也可以通过下载等方式而加载到电子设备的浏览器或其安全项目中。上述装置中的相应单元可以与电子设备中的单元相互配合以实现本申请实施例的方案。
161.在上文详细描述中提及的若干模块或者单元,这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
162.本申请一些实施例还提供了一种组件化应用程序通信系统,该系统可以包括图11和图12示出的组件化应用程序通信装置。
163.下面参考图13,图13示出了本申请实施例提供终端设备或服务器的处理系统的结构示意图。
164.如图13所示,计算机系统包括中央处理单元(cpu)1101,其可以根据存储在只读存储器(rom)1102中的程序或者从存储部分1108加载到随机访问存储器(ram)1103中的程序而执行各种适当的动作和处理。在ram1103中,还存储有操作所需的各种程序和数据。cpu 1101、rom 1102以及ram 1103通过总线1104彼此相连。输入/输出(i/o)接口1105也连接至总线1104。
165.以下部件连接至i/o接口1105:包括键盘、鼠标等的输入部分1106;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分1107;包括硬盘等的存储部分1108;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分1109。通信部分1109经由诸如因特网的网络执行通信处理。驱动器1110也根据需要连接至i/o接口1105。可拆卸介质1111,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1110上,以便于从其上读出的计算机程序根据需要被安装入存储部分1108。
166.特别地,根据本公开的实施例,上文参考流程图图3

5描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在机器可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1109从网络上被下载和安装,和/或从可拆卸介质1111被安装。在该计算机程序被中央处理单元(cpu)1101执行时,执行本申请的系统中限定的上述功能。
167.需要说明的是,本公开所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd

rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。
168.附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,前述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
169.描述于本申请实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,可以描述为:一种处理器包括源路由总线组件模块等。其中,这些单元或模块的名称在某种情况下并不
构成对该单元或模块本身的限定,例如,源路由总线组件模块还可以被描述为“用于接收路由消息的模块”。
170.作为另一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中的。上述计算机可读存储介质存储有一个或者多个程序,当上述前述程序被一个或者一个以上的处理器用来执行描述于本申请的组件化应用程序通信的方法。
171.以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离前述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1