CN114327466A - 一种车载app模块间消息解耦的实现方法及系统 - Google Patents
一种车载app模块间消息解耦的实现方法及系统 Download PDFInfo
- Publication number
- CN114327466A CN114327466A CN202210114675.3A CN202210114675A CN114327466A CN 114327466 A CN114327466 A CN 114327466A CN 202210114675 A CN202210114675 A CN 202210114675A CN 114327466 A CN114327466 A CN 114327466A
- Authority
- CN
- China
- Prior art keywords
- service
- message
- calling
- layer
- notification
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 31
- 238000012544 monitoring process Methods 0.000 claims abstract description 35
- 238000012545 processing Methods 0.000 claims description 8
- 239000000203 mixture Substances 0.000 claims description 3
- 239000002994 raw material Substances 0.000 claims description 3
- 238000012986 modification Methods 0.000 abstract description 5
- 230000004048 modification Effects 0.000 abstract description 5
- 238000011161 development Methods 0.000 description 14
- 238000005457 optimization Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 239000012141 concentrate Substances 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 239000007858 starting material Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种车载APP模块间消息解耦的实现方法及系统,包括S1、将车载APP分为UI层和业务逻辑层;S2、在UI层和业务逻辑层之间搭设消息调用框架;S3、业务逻辑层向消息调用框架注册其提供的服务;S4、UI层向消息调用框架注册各服务的消息监听;S5、调用服务;S6、消息监听。本发明在模块间调用时,可以通过同一个接口不同的参数完成具体的调用,最大程度的保证接口调用的可扩展性,避免多人合作开发时模块间的修改而造成大量编译问题。
Description
技术领域
本发明属于车载APP技术领域,更具体涉及一种车载APP模块间消息解耦的实现方法及系统。
背景技术
车载系统是用户和车载硬件的接口,同时也是车载硬件和上层软件的接口。车机操作系统的功能包括管理车载系统的硬件、软件及数据资源,控制程序运行,改善人机界面,为上层软件提供支持。而车载APP利用车载系统的资源,将接收到数据、信号、音频、视频最大限度地发挥作用,提供各种形式的用户界面(UI),使驾驶员有一个良好的驾驶环境,并有效的提供辅助驾驶、半自动驾驶、甚至自动驾驶。
目前,因车载系统的特殊性,方便用户快速找到各种操作的入口,大量业务功能都集成Launcher APP(安卓系统桌面启动器)中。因此同一个APP中会集成车载系统的大部分功能,大量业务代码集成在一个APP中,且需要大量开发人员同时开发,因此有必要对APP进行分层分模块开发设计,需要避免其他人的修改,影响当前模块的编译,降低开发效率。
目前软件开发领域已有模块间解耦的各种实践,根据中国发明CN202110532547.6《APP数据处理方法、装置及移动终端》、 CN201810847825.5 《一种用于家政APP开发的方法》和CN201610559480.4《业务组件化方法及系统》所述,目前已有的模块间解耦的开发方案,更多的是使用组件化技术实现Android开发中模块间解耦问题,组件间通信采用的技术是依赖倒置或者是URI(统一资源定位符)的方式实现。但模块间使用统一接口进行消息分发,通过参数完成消息传递,以此实现解耦的方式,目前还没有相关的技术。
发明内容
为解决上述问题,本发明提供了一种车载APP模块间消息解耦的实现方法及系统,在模块间调用时,可以通过同一个接口不同的参数完成具体的调用,最大程度的保证接口调用的可扩展性,避免多人合作开发时模块间的修改而造成大量编译问题。
为了解决上述技术问题,本发明采用的技术方案是这样的:一种车载APP模块间消息解耦的实现方法,包括以下步骤,
S1、将车载APP分为供用户操作的UI层和用于提供多种服务的业务逻辑层;
S2、在UI层和业务逻辑层之间搭设消息调用框架;
S3、业务逻辑层向消息调用框架注册其提供的服务;
S4、UI层向消息调用框架注册各服务的消息监听;
S5、调用服务:用户通过操作UI层调用所需服务时,向消息调用框架发送调用消息,所述消息调用框架将该调用消息转发至业务逻辑层中的对应服务进行处理,并将处理完成后的数据通过消息调用框架返回UI层,完成服务调用;
S6、消息监听:当业务逻辑层的服务数据发生变更时,向消息调用框架发送通知,消息调用框架将该通知发送给UI层的所有监听者,完成UI层的消息监听。
作为优化,所述消息调用框架包括,
服务中心,包括服务注册模块、取消服务注册模块、判断模块、调用服务模块和服务接口模块,分别用于服务注册、取消服务注册、判断服务是否存在、调用服务和提供服务接口;
消息中心,包括通知监听注册模块、移除通知监听模块和发送通知模块,分别用于通知监听注册、移除通知监听和发送通知。
作为优化,所述服务注册模块包括一个服务的容器,所有需要暴露的服务均注册在该容器中。
作为优化,所述服务通过将服务名称和服务相绑定的方式进行服务注册。
作为优化,所述消息调用框架中的调用服务包括以下步骤,
S501、服务中心接收UI层发来的调用消息,通过服务名称在容器中找到对应的服务;
S502、将调用方法名称、调用参数和回调传递给该服务;
S503、该服务通过调用方法名称和调用参数完成服务调用;
S504、完成后,通过回调将调用结果回调给UI层。
作为优化,所述服务的调用消息均通过服务中心的服务接口模块传递至该服务。
作为优化,所述监听注册模块包括一个通知的容器,所有通知的监听器均注册在该容器中。
作为优化,所述通知通过将通知名称和监听器相绑定的方式进行监听注册。
作为优化,所述业务逻辑模块需要向UI层发送通知时,通过发送通知模块发送通知,所有绑定到该通知名称对应的事件类型的监听器都能收到通知。
本发明还提供了一种车载APP模块间消息解耦的实现系统,包括,
UI层,用于与用户交互;
业务逻辑层,用于提供多种服务的逻辑处理;
消息调用框架,分别与UI层和业务逻辑层连接,用于将UI层发送的服务调用消息向业务逻辑层转发和将业务逻辑层的通知向UI层转发;其包括,
服务中心,包括服务注册模块、取消服务注册模块、判断模块、调用服务模块和服务接口模块,分别用于服务注册、取消服务注册、判断服务是否存在、调用服务和提供服务接口;
消息中心,包括通知监听注册模块、移除通知监听模块和发送通知模块,分别用于通知监听注册、移除通知监听和发送通知。
与现有技术相比,本发明具有如下优点:
本发明提供一种通用的模块间消息解耦的开发框架,可以有效解决开发过程中模块间调用的问题,模块间通过少量的几个接口进行通信,接口可扩展性好。不同模块单独开发维护和编译,模块升级不修改接口调用方式,只扩展接口传输内容。本发明的模块间调用,均通过消息调用框架完成,APP整体分为UI层和业务逻辑层。UI层不直接调用业务逻辑层,统一通过消息调用框架进行转发;
UI层调用业务逻辑层的服务时,可统一通过一个异步接口进行调用,具体调用的服务通过接口的参数进行控制;
UI层可以向消息调用框架注册需要监听的消息类型,当业务逻辑层有数据变更等情况时,通过通知的方式向UI层发送消息;
UI层和业务逻辑层两个模块之间完全解耦。模块可独立进行开发和维护,接口增加只需要扩展参数的内容即可,无需修改接口和参数类型。
本发明,开发人员只需要专注于各自维护的模块,且增加或者修改接口时不需要更改调用方式,在多人共同开发过程中,避免因接口频繁修改造成的大量编译问题,可以有效地提高开发效率。
附图说明
图1为本发明整体架构图;
图2为本发明中消息调用框架的关键类图。
具体实施方式
下面将结合附图及实施例对本发明作进一步说明。
实施例:参见图1-图2,
一种车载APP模块间消息解耦的实现方法,包括以下步骤,
S1、将车载APP分为供用户操作的UI层和用于提供多种服务的业务逻辑层。其中UI层只包含UI相关的绘制和控制代码。业务逻辑层包含所有的业务逻辑代码。
S2、在UI层和业务逻辑层之间搭设消息调用框架;
S3、业务逻辑层向消息调用框架注册其提供的服务;
S4、UI层向消息调用框架注册各服务的消息监听;
S5、调用服务:用户通过操作UI层调用所需服务时,向消息调用框架发送调用消息,所述消息调用框架将该调用消息转发至业务逻辑层中的对应服务进行处理,并将处理完成后的数据通过消息调用框架返回UI层,完成服务调用。具体的,UI层通过消息调用框架提供的接口调用服务,消息调用框架通过参数的内容,转发到对应的服务进行处理,处理完成后将数据返回给UI层。
S6、消息监听:当业务逻辑层的服务数据发生变更时,向消息调用框架发送通知,消息调用框架将该通知发送给UI层的所有监听者,完成UI层的消息监听。
所述消息调用框架包括,
服务中心,包括服务注册模块、取消服务注册模块、判断模块、调用服务模块和服务接口模块,分别用于服务注册、取消服务注册、判断服务是否存在、调用服务和提供服务接口;
消息中心,包括通知监听注册模块、移除通知监听模块和发送通知模块,分别用于通知监听注册、移除通知监听和发送通知。
本发明还提供了一种车载APP模块间消息解耦的实现系统,包括,
UI层,用于与用户交互;
业务逻辑层,用于提供多种服务的逻辑处理;
消息调用框架,分别与UI层和业务逻辑层连接,用于将UI层发送的服务调用消息向业务逻辑层转发和将业务逻辑层的通知向UI层转发;其包括,
服务中心,包括服务注册模块、取消服务注册模块、判断模块、调用服务模块和服务接口模块,分别用于服务注册、取消服务注册、判断服务是否存在、调用服务和提供服务接口;
消息中心,包括通知监听注册模块、移除通知监听模块和发送通知模块,分别用于通知监听注册、移除通知监听和发送通知。
具体的,如图2所示,
CAServiceCenter是服务中心、CAEventCenter是通知中心。
CAServiceCenter中包含一个服务的容器serviceMap,所有需要暴露的服务均注册在该容器中。
registerService:所有服务通过该方法进行注册,将服务名称和服务绑定,绑定成功后,其他模块可以通过服务名称对该服务进行调用。
unregisterService:取消服务注册,服务取消注册后,其他模块无法通过绑定的服务名称进行调用。
hasService:判断是否有某个服务。
callService:调用服务,服务中心通过serviceName(服务名称)在serviceMap(容器)找到对应的Service(服务),然后将methodName(方法名称)和params(参数),callback(回调)传递给Service。Service根据methodName和params完成服务调用,对消息进行处理后,通过callback将结果回调给调用方。
ICAService:所有需要暴露的服务,都需要实现该接口的callMethod方法,以便消息调用可以从服务中心传递到该服务。
CAEventCenter中包含一个通知的容器eventMap,所有通知的监听器,都需要注册在该容器中。
addEventListener:所有监听器通过该方法添加监听,将通知名称和监听器绑定,绑定成功后,该监听器可以收到所有该事件类型的通知。
removeEventListener:移除通知监听,移除监听器后,该监听器无法收到该事件类型的所有通知。
postEvent:发送通知,业务逻辑层需要向UI层发送通知时,调用该方法发送通知,所有绑定到该事件类型的监听器都能收到通知。
消息调用框架通过CAEventCenter和CAServiceCenter完成消息调用和事件的通知,实现模块间消息的解耦。
本发明提供一种通用的模块间消息解耦的开发框架,可以有效解决开发过程中模块间调用的问题,模块间通过少量的几个接口进行通信,接口可扩展性好。不同模块单独开发维护和编译,模块升级不修改接口调用方式,只扩展接口传输内容。本发明的模块间调用,均通过消息调用框架完成,APP整体分为UI层和业务逻辑层。UI层不直接调用业务逻辑层,统一通过消息调用框架进行转发;
UI层调用业务逻辑层的服务时,可统一通过一个异步接口进行调用,具体调用的服务通过接口的参数进行控制;
UI层可以向消息调用框架注册需要监听的消息类型,当业务逻辑层有数据变更等情况时,通过通知的方式向UI层发送消息;
UI层和业务逻辑层两个模块之间完全解耦。模块可独立进行开发和维护,接口增加只需要扩展参数的内容即可,无需修改接口和参数类型。
本发明,开发人员只需要专注于各自维护的模块,且增加或者修改接口时不需要更改调用方式,在多人共同开发过程中,避免因接口频繁修改造成的大量编译问题,可以有效地提高开发效率。
最后需要说明的是,以上实施例仅用以说明本发明的技术方案而非限制技术方案,本领域的普通技术人员应当理解,那些对本发明的技术方案进行修改或者等同替换,而不脱离本技术方案的宗旨和范围,均应涵盖在本发明的权利要求范围当中。
Claims (10)
1.一种车载APP模块间消息解耦的实现方法,其特征在于,包括以下步骤,
S1、将车载APP分为供用户操作的UI层和用于提供多种服务的业务逻辑层;
S2、在UI层和业务逻辑层之间搭设消息调用框架;
S3、业务逻辑层向消息调用框架注册其提供的服务;
S4、UI层向消息调用框架注册各服务的消息监听;
S5、调用服务:用户通过操作UI层调用所需服务时,向消息调用框架发送调用消息,所述消息调用框架将该调用消息转发至业务逻辑层中的对应服务进行处理,并将处理完成后的数据通过消息调用框架返回UI层,完成服务调用;
S6、消息监听:当业务逻辑层的服务数据发生变更时,向消息调用框架发送通知,消息调用框架将该通知发送给UI层的所有监听者,完成UI层的消息监听。
2.根据权利要求1所述的一种车载APP模块间消息解耦的实现方法,其特征在于,所述消息调用框架包括,
服务中心,包括服务注册模块、取消服务注册模块、判断模块、调用服务模块和服务接口模块,分别用于服务注册、取消服务注册、判断服务是否存在、调用服务和提供服务接口;
消息中心,包括通知监听注册模块、移除通知监听模块和发送通知模块,分别用于通知监听注册、移除通知监听和发送通知。
3.根据权利要求2所述的一种车载APP模块间消息解耦的实现方法,其特征在于,所述服务注册模块包括一个服务的容器,所有需要暴露的服务均注册在该容器中。
4.根据权利要求3所述的一种车载APP模块间消息解耦的实现方法,其特征在于,所述服务通过将服务名称和服务相绑定的方式进行服务注册。
5.根据权利要求2所述的一种车载APP模块间消息解耦的实现方法,其特征在于,所述消息调用框架中的调用服务包括以下步骤,
S501、服务中心接收UI层发来的调用消息,通过服务名称在容器中找到对应的服务;
S502、将调用方法名称、调用参数和回调传递给该服务;
S503、该服务通过调用方法名称和调用参数完成服务调用;
S504、完成后,通过回调将调用结果回调给UI层。
6.根据权利要求2所述的一种车载APP模块间消息解耦的实现方法,其特征在于,所述服务的调用消息均通过服务中心的服务接口模块传递至该服务。
7.根据权利要求2所述的一种车载APP模块间消息解耦的实现方法,其特征在于,所述监听注册模块包括一个通知的容器,所有通知的监听器均注册在该容器中。
8.根据权利要求2所述的一种车载APP模块间消息解耦的实现方法,其特征在于,所述通知通过将通知名称和监听器相绑定的方式进行监听注册。
9.根据权利要求2所述的一种车载APP模块间消息解耦的实现方法,其特征在于,所述业务逻辑层需要向UI层发送通知时,通过发送通知模块发送通知,所有绑定到该通知名称对应的事件类型的监听器都能收到该通知。
10.一种车载APP模块间消息解耦的实现系统,其特征在于,包括,
UI层,用于与用户交互;
业务逻辑层,用于提供多种服务的逻辑处理;
消息调用框架,分别与UI层和业务逻辑层连接,用于将UI层发送的服务调用消息向业务逻辑层转发和将业务逻辑层的通知向UI层转发;其包括,
服务中心,包括服务注册模块、取消服务注册模块、判断模块、调用服务模块和服务接口模块,分别用于服务注册、取消服务注册、判断服务是否存在、调用服务和提供服务接口;
消息中心,包括通知监听注册模块、移除通知监听模块和发送通知模块,分别用于通知监听注册、移除通知监听和发送通知。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210114675.3A CN114327466B (zh) | 2022-01-30 | 2022-01-30 | 一种车载app模块间消息解耦的实现方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210114675.3A CN114327466B (zh) | 2022-01-30 | 2022-01-30 | 一种车载app模块间消息解耦的实现方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114327466A true CN114327466A (zh) | 2022-04-12 |
CN114327466B CN114327466B (zh) | 2024-05-17 |
Family
ID=81031434
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210114675.3A Active CN114327466B (zh) | 2022-01-30 | 2022-01-30 | 一种车载app模块间消息解耦的实现方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114327466B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1834908A (zh) * | 2005-03-14 | 2006-09-20 | 捷讯研究有限公司 | 用于将开发模式应用于基于组件的应用程序的系统和方法 |
US20100001834A1 (en) * | 2008-07-06 | 2010-01-07 | Frank Brunswig | System and method for a message registry and message handling in a service -oriented business framework |
CN105027534A (zh) * | 2013-12-31 | 2015-11-04 | 北京新媒传信科技有限公司 | 交互式通信软件的实现方法和实现平台 |
CN105745620A (zh) * | 2013-12-31 | 2016-07-06 | 北京新媒传信科技有限公司 | 软件架构的实现方法和实现平台 |
CN106254522A (zh) * | 2016-09-07 | 2016-12-21 | 努比亚技术有限公司 | 一种终端服务系统、方法和终端 |
CN106873980A (zh) * | 2017-01-09 | 2017-06-20 | 深圳英飞拓科技股份有限公司 | 一种ui和业务逻辑分离方法和装置 |
CN109739661A (zh) * | 2018-12-27 | 2019-05-10 | 苏州思必驰信息科技有限公司 | 一种协同模块间消息更新的方法、装置及系统 |
CN113778391A (zh) * | 2021-01-28 | 2021-12-10 | 北京京东拓先科技有限公司 | 原生应用程序的页面处理方法、装置及设备 |
-
2022
- 2022-01-30 CN CN202210114675.3A patent/CN114327466B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1834908A (zh) * | 2005-03-14 | 2006-09-20 | 捷讯研究有限公司 | 用于将开发模式应用于基于组件的应用程序的系统和方法 |
US20100001834A1 (en) * | 2008-07-06 | 2010-01-07 | Frank Brunswig | System and method for a message registry and message handling in a service -oriented business framework |
CN105027534A (zh) * | 2013-12-31 | 2015-11-04 | 北京新媒传信科技有限公司 | 交互式通信软件的实现方法和实现平台 |
CN105745620A (zh) * | 2013-12-31 | 2016-07-06 | 北京新媒传信科技有限公司 | 软件架构的实现方法和实现平台 |
CN106254522A (zh) * | 2016-09-07 | 2016-12-21 | 努比亚技术有限公司 | 一种终端服务系统、方法和终端 |
CN106873980A (zh) * | 2017-01-09 | 2017-06-20 | 深圳英飞拓科技股份有限公司 | 一种ui和业务逻辑分离方法和装置 |
CN109739661A (zh) * | 2018-12-27 | 2019-05-10 | 苏州思必驰信息科技有限公司 | 一种协同模块间消息更新的方法、装置及系统 |
CN113778391A (zh) * | 2021-01-28 | 2021-12-10 | 北京京东拓先科技有限公司 | 原生应用程序的页面处理方法、装置及设备 |
Non-Patent Citations (4)
Title |
---|
WANG YONG等: "Design and implementation of real-time image monitoring system based on Android mobile terminal", 《 2014 IEEE 7TH JOINT INTERNATIONAL INFORMATION TECHNOLOGY AND ARTIFICIAL INTELLIGENCE CONFERENCE》, 23 March 2015 (2015-03-23), pages 53 - 57 * |
王滨 等: "基于SOA的应用程序框架研究与实现", 《计算机工程与设计》, no. 7, 31 July 2006 (2006-07-31), pages 1198 - 1200 * |
秦永宁: "一种对等网络安全通信方案研究", 《网络安全技术与应用》, no. 12, 31 December 2021 (2021-12-31), pages 9 - 13 * |
程序员架构进阶: "容器 & 服务:Docker 应用的 Jenkins 构建", Retrieved from the Internet <URL:https://cloud.tencent.com/developer/article/1793570> * |
Also Published As
Publication number | Publication date |
---|---|
CN114327466B (zh) | 2024-05-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7886308B2 (en) | Time bounding notification delivery in an event driven system | |
CN103136052A (zh) | 移动终端及安装有多个操作系统的移动终端的控制方法 | |
CN114138500B (zh) | 资源调度系统及方法 | |
CN106095064B (zh) | 一种移动终端禁止应用接收特定广播的方法及系统 | |
WO2009076851A1 (zh) | 处理业务的方法、终端及网络系统 | |
CN114327466B (zh) | 一种车载app模块间消息解耦的实现方法及系统 | |
CN113824653A (zh) | 一种兼容多协议业务接入的方法和系统 | |
CN101551758B (zh) | 一种实现设备管理任务并行工作的系统和方法 | |
RU2298298C2 (ru) | Способ выполнения программы заказчика блоком радиосвязи | |
WO2023168913A1 (zh) | Sdk与接入应用的兼容方法、装置、设备及介质 | |
CN107577540B (zh) | 视频交友中实现举报功能的方法、存储介质、设备及系统 | |
CN114338584B (zh) | 消息撤回方法和消息传输系统 | |
WO2003038599A2 (en) | Method for constructing distributed software components | |
US6823524B1 (en) | System and method for managing the distribution of events in a data processing system | |
CN110704209B (zh) | 一种以pipe为通信基础的数据挖掘分析平台 | |
CN108874515B (zh) | 一键通ptt建立方法及系统 | |
CN117201577B (zh) | 基于pisa的跨平台api和spi的通讯方法和系统 | |
CN111782366A (zh) | 一种分布式任务调度方法及装置 | |
CN110620778B (zh) | 一种同时支持socket同步和异步通信方式的方法 | |
CN100589618C (zh) | 进行双模移动通信逻辑控制的方法及其双模手机 | |
CN116775172B (zh) | 一种通过反射实现Android获取数据的方法及系统 | |
CN111352611B (zh) | 一种Android应用中实现UI与数据分离的方法 | |
CN116149619A (zh) | 一种pon多进程软件架构实现方法 | |
CN111818144B (zh) | 远程服务调用框架下的报文传输方法、装置及系统 | |
CN115617541A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |