CN113485680B - 一种基于车载系统的app组件化控制系统和方法 - Google Patents
一种基于车载系统的app组件化控制系统和方法 Download PDFInfo
- Publication number
- CN113485680B CN113485680B CN202110735192.0A CN202110735192A CN113485680B CN 113485680 B CN113485680 B CN 113485680B CN 202110735192 A CN202110735192 A CN 202110735192A CN 113485680 B CN113485680 B CN 113485680B
- Authority
- CN
- China
- Prior art keywords
- service
- layer
- data
- logic
- library
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
- G06F8/24—Object-oriented
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/36—Software reuse
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/76—Adapting program code to run in a different environment; Porting
Abstract
本发明请求保护一种基于车载系统的APP组件化方法,采用分层开发,构建包括通用层、中间层和业务层的多层APP组件系统,其中,通用层包含APP中组件都需要依赖的公共库,业务组件将各自的能力注入到中间层,实现不同业务组件之间的解耦,业务层包含一系列业务组件,单个业务组件独立,业务之间的调用和通信通过中间层转发。每个业务组件采用MVP模式进行分层分库开发,实现UI逻辑和数据的分离。本发明可以有效地提高开发效率,不同的业务划分为独立的组件,使得编译时间大大缩短,容易排查定位问题模块。
Description
技术领域
本发明涉及一种车载APP的组件化开发技术,具体涉及在多平台、多项目等多个场景下实现车载APP的快速移植和测试,实现业务复用。
背景技术
车载系统是用户和车载硬件的接口,同时也是车载硬件和上层软件的接口。车机操作系统的功能包括管理车载系统的硬件、软件及数据资源,控制程序运行,改善人机界面,为上层软件提供支持。而车载APP利用车载系统的资源,将接收到数据、信号、音频、视频最大限度地发挥作用,提供各种形式的用户界面UI,使驾驶员有一个良好的驾驶环境,并有效的提供辅助驾驶、半自动驾驶、甚至自动驾驶。目前,因车载系统的特殊性,考虑到驾驶安全和操控方便,车载业务APP相对于手机APP来说,交互设计更简单和易操作,层级也更少。同一个APP在多个车型的项目的车载系统中,会更换UI风格和布局,但交互基本一致,也会有少量交互不一致的情况,但大部分业务逻辑都相同。因此,同一款APP在不同的项目中,会存在大量代码重复的情况,且移植过程中容易修改到源代码。同时,不同的APP可能会有相同的业务模块,如果所有代码都以APP的维度进行开发和维护,会造成重复开发,且不同APP相同业务模块难以保持一致的问题。
另外,车载APP需要获取硬件状态以及对硬件发送信号进行操作,而目前不同的车型的硬件供应商可能不一样,因此,移植过程中,可能会因为硬件的更换,导致原有功能使用异常。而APP和硬件的通信过程涉及Framework层和MCU等多方交互,不容易排查问题归属,因此需要更好的控制APP本身质量。
中国发明专利嵌入式软件开发配置的管理系统,公开一种嵌入式软件开发管理系统,包括表现层、中间层、业务逻辑层和数据层。表现层(客户端)通过web form和win form与中间层(WEB服务器)和业务逻辑层(应用服务器),WEB服务器包括soap/XML Http和IISWeb服务器,应用服务器包括接口、事务逻辑、ADO.Net和基础类库;所述数据层:数据层用于数据的存储和提取,通过database与应用服务器的ADO.Net连接。通过数据库服务器进行数据的处理,通过web服务器和应用服务器作为软件开发管理的中间层,通过客户端进行实时的过程表现,实现软件产品的完整性,通过控制、机理、追踪对软件的修改生成的软件组成部件来实现对软件产品的管理功能。该系统没有涉及车载系统的特殊性,没有考虑驾驶安全和操控方便,车载业务APP交互设计更简单和层级更少的 问题。目前已有的组件化开发方案,更多的是解决软件系统开发中模块间解耦问题,而对于车载领域如何快速进行多项目适配,UI逻辑分离,快速替换UI,提供模拟数据快速验证,测试驱动等方面,现有技术不能提供完整的解决方案。
发明内容
本发明针对现有技术汽车APP在多个车型项目的车载系统中进行移植时代码重复开发工作量大,工作效率低下,硬件更换容易导致原有功能使用异常,不容易排查问题归属等方面问题,提供一种通用的APP组件化开发系统和方法。
本发明解决上述技术问题的技术方案是,采用分层开发方案构建APP组件化开发系统,多层APP组件化系统包括通用层、中间层和业务层,其中,通用层包括APP组件依赖的公共库,公共库根据车载APP应用功能导入;中间层构建组件化框架,实现业务解耦;业务层包括:一系列相互独立的业务组件,业务组件之间的调用和通信通过中间层转发,每个业务组件采用数据显示逻辑处理分离的MVP模式进行分层分库开发,实现用户界面UI、逻辑和数据的分离,依赖注入的方式对业务层中的一系列业务进行解耦。业务组件将各自需要对外提供的功能抽象成不同的服务接口,所有业务组件的服务接口都在中间层定义。而业务组件中的服务,需要完成中间层定义的服务接口的功能实现。将业务组件的服务和中间层的服务接口进行绑定,业务组件之间的功能调用,只能通过调用中间层的服务接口实现。不同业务组件之间实现了解耦。
进一步地,通用层的公共库包括基础类库、工具类库、日志类库、网络库等APP组件需要依赖的公共库,业务层包含如业务组件1,业务组件2,……,业务组件N等一系列业务组件,业务组件之间相互独立,业务组件之间的调用和通信通过中间层转发。
业务组件进一步包括:业务逻辑库CoreComponent、UI库、软件开发工具包SDK,业务逻辑库CoreComponent负责所属业务组件的所有业务逻辑,从SDK中获取汽车相关的数据进行组装和处理,根据不同的数据控制界面的展示,业务逻辑库加载不同风格的UI库,实现同一业务逻辑,展示不同的界面和交互,UI库和业务逻辑完全隔离,实现UI和逻辑的解耦,SDK向外部服务获取数据,提供数据给CoreComponent向上层提供接口。其中,业务逻辑库进一步包含:一系列界面相关的抽象接口IView、一系列Presenter(业务逻辑层处理类)、一系列Model(数据层处理类),例如ICarInfoView是用于定义汽车信息界面的接口,UI库中的CarInfoView(汽车信息界面类)实现ICarInfoView(汽车信息界面的接口)接口,调用CarInfoPresenter(汽车信息相关业务逻辑处理类)提供的方法处理相应的业务逻辑,同时接受CarInfoPresenter的调用进行相应的界面刷新;Presenter用于处理业务逻辑,接受UI库的调用,并从数据模型CarInfoModel(汽车信息数据处理类)获取数据,进行业务逻辑处理,并通知UI层进行刷新;Model调用SDK提供的接口获取不同数据源的数据,对数据进行整合和加工,返回不同类型的数据。
本发明还提出一种基于车载系统的APP组件化控制方法,构建包括通用层、中间层和业务层的多层APP组件化系统,根据车载APP应用功能导入构建通用层中APP组件依赖的公共库;中间层构建组件化框架,实现业务解耦;业务层包括:一系列相互独立的业务组件,业务组件之间的调用和通信通过中间层转发,每个业务组件采用数据显示逻辑处理MVP模式进行分层分库开发,实现用户界面UI、逻辑和数据的分离,依赖注入的方式对业务层中的一系列业务进行解耦,业务组件将各自的能力抽象成不同的服务接口,服务接口在中间层定义业务组件中具体的服务实现服务接口定义的功能,将服务和服务接口绑定,其他业务组件通过服务接口获取具体的服务完成调用。
本发明每个业务组件采用数据显示逻辑处理MVP( Model-View-Presenter)模式进行分层分库开发,实现用户界面UI、逻辑和数据的分离,能快速实现多项目适配,UI逻辑分离,快速替换UI,提供模拟数据快速验证,测试驱动等。本发明可以有效地提高开发效率,代码可复用性强,容易移植,模块功能一致性强,使得开发人员只需要专注于各自维护的独立业务组件,且独立模块更容易做到可扩展、可复用,不同的业务划分为独立的组件,使得编译时间大大缩短,容易排查定位问题模块。
附图说明
图1为本发明的整体架构图;
图2为组件化开发框架设计图;
图3为业务组件调用示例。
具体实施方式
下面结合附图和具体实例对本发明进一步描述。本发明中的组件,指的是车载APP中功能独立的模块。组件化指的是APP划分为功能相对独立的不同业务组件,单独进行开发和维护,组件间无代码耦合,每个组件可以单独进行编译和调试运行。
如图1所示为本发明基于车载系统的APP组件化控制系统结构框图,层次化构建控制系统,包括:业务层、中间层、通用层,其中,业务层包括:一系列业务组件(业务组件1、业务组件2,……业务组件N,其中N为业务组件数)。一系列业务组件是根据具体的业务,封装的独立组件库,当一个业务组件调用其他业务组件的具体功能时,使用中间层进行解耦;中间层是组件化开发框架,实现业务解耦;通用层包括:基础类库、工具类库、日志类库、网络库等APP组件依赖的公共库。
通用层包括APP组件依赖的公共库,公共库根据车载APP应用功能导入;中间层构建组件化框架,实现业务解耦;业务层包括一系列相互独立的业务组件,业务组件之间的调用和通信通过中间层转发,每个业务组件采用数据显示逻辑处理分离的MVP模式进行分层分库开发,实现用户界面UI、逻辑和数据的分离,依赖注入的方式对业务层中的一系列业务进行解耦。业务组件将各自需要对外提供的功能抽象成不同的服务接口,所有业务组件的服务接口都在中间层定义。而业务组件中的服务,需要完成中间层定义的服务接口的功能实现。将业务组件的服务和中间层的服务接口进行绑定,业务组件之间的功能调用,只能通过调用中间层的服务接口实现。不同业务组件之间实现了解耦。
如图2所示为组件化开发框架示意图:以业务组件中任意两个业务组件(如业务组件1和业务组件2)之间的调用为例进一步具体说明,多个业务组件之间的调用类似。
业务组件1和业务组件2定义好自己的服务接口,如:业务组件1服务接口IConcrete1Service和业务组件2服务接口IConcrete2Service,服务接口都定义在中间层。组件1的具体服务Concrete1Service(1)实现业务组件1服务接口IConcrete1Service接口。组件2的具体服务Concrete2Service(2)实现业务组件2服务接口IConcrete2Service接口。服务中心CAServiceCenter内部的serviceMap(用于存储服务的对象)数据对象保存了所有业务组件注册的服务。Concrete1Service和Concrete2Service通过注册服务registerService函数进行注册,分别和IConcrete1Service、IConcrete2Service进行绑定。需要调用服务时,调用CAServiceCenter(服务中心)类的获取服务getService函数获取到具体的服务,实现调用。业务组件间的功能调用只能通过调用中间层定义的服务接口实现,而不需要相互之间的调用。通过如上所述方式实现组件间解耦。
如图3所示为一个具体的业务组件调用示例。为增加对本发明的理解,以下通过电池服务和灯光服务为例对具体业务组件的调用为例进行说明,电池服务接口IBatteryService和灯光服务接口ILightService都在中间层定义。IBatteryService定义了获取电池状态getBatteryStatus的方法,ILightService定义了获取灯光状态getLightInfo相关的方法。
电池业务组件提供电池相关的服务BatteryService,BatteryService实现了IBatteryService服务接口,完成获取电池状态方法getBatteryStatus的具体功能实现。灯光业务组件提供灯光相关的服务LightService,LightService实现了ILightService服务接口,完成获取灯光信息方法getBatteryStatus的具体功能实现。
应用程序启动时会将BatteryService和LightService在服务中心CAServiceCenter注册,并分别和IBatterService、ILightService服务接口绑定。
汽车信息业务组件中的CarInfo对象需要获取电池业务组件和灯光业务组件提供的电池和灯光相关的数据,无需直接调用,而是通过CAServiceCenter提供的getService方法获取到具体的服务后完成调用,实现了业务之间的解耦。
Claims (2)
1.一种基于车载系统的APP组件化控制系统,其特征在于,多层APP组件化系统包括通用层、中间层和业务层,其中,通用层包括APP组件依赖的公共库,公共库根据车载APP应用功能导入;中间层构建组件化框架,实现业务解耦;业务层包括:一系列相互独立的业务组件,业务组件之间的调用和通信通过中间层转发,每个业务组件采用数据显示逻辑处理分离的MVP模式进行分层分库开发,实现用户界面UI、逻辑和数据的分离,依赖注入的方式对业务层中的一系列业务进行解耦,业务组件将各自的功能抽象成不同的服务接口,服务接口在中间层定义业务组件中具体的服务实现服务接口定义的功能,将服务和服务接口绑定,业务组件通过服务接口获取具体的服务完成调用;
业务组件包括:业务逻辑库CoreComponent、UI库、软件开发工具包SDK,业务逻辑库CoreComponent负责所属业务组件的所有业务逻辑,从SDK中获取数据进行组装和处理,根据不同的数据控制界面的展示,业务逻辑库加载不同风格的UI库,实现同一业务逻辑,展示不同的界面和交互,UI库和业务逻辑完全隔离,实现UI和逻辑的解耦,SDK向外部服务获取数据,提供数据给CoreComponent向上层提供接口;
业务逻辑库包含:一系列界面相关的抽象接口IView、一系列Presenter、一系列Model,其中,ICarInfoView用于定义UI的行为,UI库实现ICarInfoView接口,调用CarInfoPresenter提供的方法处理相应的业务逻辑,同时接受CarInfoPresenter的调用进行相应的界面刷新;Presenter用于处理业务逻辑,接受UI库的调用,并从数据模型CarInfoModel获取数据,进行业务逻辑处理,并通知UI层进行刷新;Model调用SDK提供的接口获取不同数据源的数据,对数据进行整合和加工,返回不同类型的数据。
2.一种基于车载系统的APP组件化控制方法,其特征在于,构建包括通用层、中间层和业务层的多层APP组件化系统,根据车载APP应用功能导入构建通用层中APP组件依赖的公共库;中间层构建组件化框架,实现业务解耦;业务层包括:一系列相互独立的业务组件,业务组件之间的调用和通信通过中间层转发,每个业务组件采用数据显示逻辑处理分离的MVP模式进行分层分库开发,实现用户界面UI、逻辑和数据的分离,依赖注入的方式对业务层中的一系列业务进行解耦,业务组件将各自的能力抽象成不同的服务接口,服务接口在中间层定义业务组件中具体的服务实现服务接口定义的功能,将服务和服务接口绑定,业务组件通过服务接口获取具体的服务完成调用;
业务组件包括:业务逻辑库CoreComponent、UI库、软件开发工具包SDK,业务逻辑库CoreComponent负责所属业务组件的所有业务逻辑,从SDK中获取汽车相关的数据进行组装和处理,根据不同的数据控制界面的展示,业务逻辑库加载不同风格的UI库,实现同一业务逻辑,展示不同的界面和交互,UI库和业务逻辑完全隔离,实现UI和逻辑的解耦,SDK向外部服务获取数据,提供数据给CoreComponent向上层提供接口;
业务逻辑库包含:一系列界面相关的抽象接口IView、一系列Presenter、一系列Model,其中,ICarInfoView定义UI的行为,UI库实现ICarInfoView接口,调用CarInfoPresenter提供的方法处理相应的业务逻辑,同时接受CarInfoPresenter的调用进行相应的界面刷新;Presenter处理业务逻辑,接受UI库的调用,并从数据模型CarInfoModel获取数据,进行业务逻辑处理,并通知UI层进行刷新;Model调用SDK提供的接口获取不同数据源的数据,对数据进行整合和加工,返回不同类型的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110735192.0A CN113485680B (zh) | 2021-06-30 | 2021-06-30 | 一种基于车载系统的app组件化控制系统和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110735192.0A CN113485680B (zh) | 2021-06-30 | 2021-06-30 | 一种基于车载系统的app组件化控制系统和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113485680A CN113485680A (zh) | 2021-10-08 |
CN113485680B true CN113485680B (zh) | 2022-10-11 |
Family
ID=77936622
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110735192.0A Active CN113485680B (zh) | 2021-06-30 | 2021-06-30 | 一种基于车载系统的app组件化控制系统和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113485680B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114385161A (zh) * | 2022-01-24 | 2022-04-22 | 重庆长安汽车股份有限公司 | 一种运行时切换导航sdk的方法及其架构 |
CN114756234B (zh) * | 2022-06-13 | 2022-09-30 | 中邮消费金融有限公司 | 基于传统应用和动态配置策略的app开发方法 |
CN115174659B (zh) * | 2022-06-30 | 2023-08-29 | 重庆长安汽车股份有限公司 | 一种车载业务容器、业务调用方法、设备及介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000081470A (ja) * | 1998-09-04 | 2000-03-21 | Hitachi Metals Ltd | 磁気コアとその製造方法およびそれを用いた磁気センサ |
CN101872305A (zh) * | 2010-06-08 | 2010-10-27 | 用友软件股份有限公司 | Ui表现和业务逻辑分离方法和系统 |
WO2014178444A1 (en) * | 2013-05-02 | 2014-11-06 | Ricoh Company, Ltd. | Equipment unit, information processing terminal, information processing system, display control method, and program |
CN108196909A (zh) * | 2017-12-30 | 2018-06-22 | 佛吉亚好帮手电子科技有限公司 | 一种基于安卓车载系统内核倒车的实现方法 |
CN109656536A (zh) * | 2018-12-25 | 2019-04-19 | 武汉斗鱼网络科技有限公司 | 一种推送模块组件化的方法及客户端 |
CN109960501A (zh) * | 2019-02-18 | 2019-07-02 | 青岛聚好联科技有限公司 | 应用程序app架构模型、处理方法及终端设备 |
CN110955415A (zh) * | 2019-12-03 | 2020-04-03 | 杭州当贝网络科技有限公司 | 一种投影多平台服务适配的方法 |
CN112905172A (zh) * | 2021-03-16 | 2021-06-04 | 深圳市欢太科技有限公司 | 应用开发架构的组件管理方法、装置、存储介质及电子设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110301433A1 (en) * | 2010-06-07 | 2011-12-08 | Richard Scott Sadowsky | Mental state analysis using web services |
-
2021
- 2021-06-30 CN CN202110735192.0A patent/CN113485680B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000081470A (ja) * | 1998-09-04 | 2000-03-21 | Hitachi Metals Ltd | 磁気コアとその製造方法およびそれを用いた磁気センサ |
CN101872305A (zh) * | 2010-06-08 | 2010-10-27 | 用友软件股份有限公司 | Ui表现和业务逻辑分离方法和系统 |
WO2014178444A1 (en) * | 2013-05-02 | 2014-11-06 | Ricoh Company, Ltd. | Equipment unit, information processing terminal, information processing system, display control method, and program |
CN108196909A (zh) * | 2017-12-30 | 2018-06-22 | 佛吉亚好帮手电子科技有限公司 | 一种基于安卓车载系统内核倒车的实现方法 |
CN109656536A (zh) * | 2018-12-25 | 2019-04-19 | 武汉斗鱼网络科技有限公司 | 一种推送模块组件化的方法及客户端 |
CN109960501A (zh) * | 2019-02-18 | 2019-07-02 | 青岛聚好联科技有限公司 | 应用程序app架构模型、处理方法及终端设备 |
CN110955415A (zh) * | 2019-12-03 | 2020-04-03 | 杭州当贝网络科技有限公司 | 一种投影多平台服务适配的方法 |
CN112905172A (zh) * | 2021-03-16 | 2021-06-04 | 深圳市欢太科技有限公司 | 应用开发架构的组件管理方法、装置、存储介质及电子设备 |
Non-Patent Citations (2)
Title |
---|
An architecture and implement model for Model-View-Presenter pattern;Yang Zhang 等;《2010 3rd International Conference on Computer Science and Information Technology》;20200907;532-536 * |
略谈智能手机app开发中的UI设计技巧;饶卫民 等;《电子测试》;20160802(第13期);41-42 * |
Also Published As
Publication number | Publication date |
---|---|
CN113485680A (zh) | 2021-10-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113485680B (zh) | 一种基于车载系统的app组件化控制系统和方法 | |
CN107391114B (zh) | 页面可视化渲染方法及装置 | |
CN100485636C (zh) | 一种基于模型驱动进行电信级业务开发的调试方法及装置 | |
CA2777443C (en) | Automated enterprise software development | |
EP1445693A2 (en) | System and method for building and configuring cross-platform applications | |
US8024721B2 (en) | System and method for implementing a safe framework | |
CN110147225A (zh) | 一种代码生成方法、装置及计算机设备、存储介质 | |
KR101056682B1 (ko) | 컴포넌트 기반의 무기체계 시뮬레이션 시스템 및 시뮬레이션 방법 | |
Rademacher et al. | Graphical and textual model-driven microservice development | |
CN111352653B (zh) | 基于PaaS云平台服务器的系统开发方法及服务器 | |
CN110362490B (zh) | 融合iOS与Android移动应用的自动化测试方法及系统 | |
CN113688186B (zh) | 智能合约执行方法、引擎及区块链节点 | |
CN113157345A (zh) | 前端工程自动启动方法及装置 | |
CN109932588B (zh) | 一种航电设备验证测试引擎 | |
CN109684148B (zh) | 一种基于arinc653的机载嵌入式软件虚拟总线通信构建方法 | |
CN113296742A (zh) | App数据处理方法、装置及移动终端 | |
US20080059949A1 (en) | System and method for implementing a safe framework | |
EP1445694A2 (en) | Modularization for J2ME platform implementation | |
CN110209565A (zh) | 一种元数据模型调试方法及其装置 | |
CN112015371A (zh) | 一种非嵌入式软件平台下的软件开发装置 | |
CN113495723B (zh) | 一种调用功能组件的方法、装置及存储介质 | |
CN115586935A (zh) | 一种数据处理方法、装置、电子设备及介质 | |
CN116232910A (zh) | 开放云平台及其构建方法、存储介质 | |
CN110752964B (zh) | 一种网络设备的测试方法及装置 | |
CN103176904A (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 |