当前位置: 首页 > news >正文

OpenHarmony开发:应用分层架构设计

HarmonyOS应用的分层架构设计以一套代码工程为基础,旨在为华为的手机、2in1等1+8全场景设备提供支持,实现了“一次开发,多端部署”的开发理念。

HarmonyOS应用的分层架构主要包括三个层次:产品定制层、基础特性层和公共能力层,为开发者构建了一个清晰、高效、可扩展的设计架构。

本文将从逻辑模型、开发模型和部署模型分别介绍应用分层架构设计规则。

逻辑模型

图1 分层架构逻辑模型

  • 产品定制层

    产品定制层专注于满足不同设备或使用场景(如应用)的个性化需求,包括UI设计、资源和配置,以及针对特定场景的交互逻辑和功能特性。

    产品定制层的功能模块独立运作,同时依赖基础特性层和公共能力层来实现具体功能。

    作为应用的入口,产品定制层是用户直接互动的界面。为满足特定产品需求,产品定制层可灵活地调整和扩展,从而满足各种使用场景。

  • 基础特性层

    基础特性层位于公共能力层之上,用于存放基础特性集合,例如相对独立的功能UI和业务逻辑实现。该层的每个功能模块都具有高内聚、低耦合、可定制的特点,以支持产品的灵活部署。

    基础特性层为上层的产品定制层提供稳健且丰富的基础功能支持,包括UI组件、基础服务等。同时依赖于下层的公共能力层为其提供通用功能和服务。

    为了增强系统的可扩展性和维护性,基础特性层将功能进行模块化处理。例如,一个应用的底部导航栏中的每个选项都可能是一个独立的业务模块。

  • 公共能力层

    公共功能层用于存放公共基础能力,集中了例如公共UI组件、数据管理、外部交互以及工具库等的共享功能。应用可以共享和调用这些公共能力。

    公共能力层为上层的基础特性层和产品定制层提供稳定可靠的功能支持,确保整个应用的稳定性和可维护性。

    公共能力层包括但不限于以下组成:

    • 公共UI组件:这些组件被设计成通用且高度可复用的,确保在不同的应用程序模块间保持一致的用户体验。公共UI组件提供了标准化且友好的界面,帮助开发者快速实现常见的用户交互需求,例如提示、警告、加载状态显示等,从而提高开发效率和用户满意度。
    • 数据管理:负责应用程序中数据的存储和访问,包括应用数据、系统数据等,提供了统一的数据管理接口,简化数据的读写操作。通过集中式的数据管理方式不仅使得数据的维护更为简单,而且能够保证数据的一致性和安全性。
    • 外部交互:负责应用程序与外部系统的交互,包括网络请求、文件I/O、设备I/O等,提供统一的外部交互接口,简化应用程序与外部系统的交互。开发者可以更为方便地实现应用程序的网络通信、数据存储和硬件接入等功能,从而加速开发流程并保证程序的稳定性和性能。
    • 工具库:提供一系列常用工具函数和类,例如字符串处理、日期时间处理、加密解密、数据压缩解压等,帮助开发者提高效率和代码质量。

开发模型

图2 分层架构开发模型

  • 产品定制层

    产品定制层的各个子目录会被编译成一个Entry类型的HAP,作为应用的主入口。该层主要针对跨多种设备,为各种设备形态集成相应的功能和特性。产品定制层被划分为多个功能模块,每个功能模块都针对特定的设备或使用场景设计,并根据具体的产品需求进行功能及交互的定制开发。

    说明

    • 在产品定制层,开发者可以从不同设备对应应用的UX设计和功能两个维度,结合具体的业务场景,选择一次编译生成相同或者不同的HAP(或其组合)。
    • 通过使用定制多目标构建产物的定制功能,可以将应用所对应的HAP编译成各自的.app文件,用于上架到应用市场。
  • 基础特性层

    在基础特性层中,功能模块根据部署需求被分为两类。对于需要通过Ability承载的功能,可以设计为Feature类型的HAP,而对于不需要通过Ability承载的功能,根据是否需要实现按需加载,可以选择设计为HAR模块或者HSP模块,编译后对应HAR包或者HSP包。

  • 公共能力层

    公共能力层的各子目录将被编译成HAR包,而他们只能被产品定制层和基础特性层所依赖,不允许存在反向依赖。该层旨在提取模块化公共基础能力,为上层提供标准接口和协议,从而提高整体的复用率和开发效率。

部署模型

图3 分层架构部署模型(不同设备的定制)

应用程序(.app文件)在流水线或应用市场上被解包为n * Entry类型的HAP + n * Feature类型的HAP,根据设备类型和使用场景将应用部署到不同类型的设备上,实现多端的统一用户体验。

说明

当Entry类型的HAP和Feature类型的HAP被分发并部署到相应的设备时,他们所依赖的HSP也会一同被分发并部署到相应的设备上。

在部署模型中,每个Entry类型的HAP代表了应用的入口点,而Feature类型的HAP则包含了应用的特定功能模块。允许应用能够以模块化的方式适配和部署,从而满足不同设备和场景的需求。

该部署模型不仅优化了应用的组织结构,也为保持应用在各种设备和场景中的一致性提供了支持。通过按照设备类型和使用场景来区分和部署不同的HAP,能确保无论在何种设备或场景中,用户都能获得统一且高质量的体验。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Docker基本使用:根据mysql镜像创建mysql容器
  • 大数据-111 Flink 安装部署 YARN部署模式 FlinkYARN模式申请资源、提交任务
  • openshift node NotReady kubelet http: TLS handshake error
  • (苍穹外卖)day03菜品管理
  • mysql中的mysql 库不存在,进行恢复
  • 第十六章 rust命令行工具开发实践
  • 【系统架构设计师】论文:论SOA面向服务架构技术的应用
  • java基于java.io.Serializable接口的序列化方式学习
  • c++ websocket简单讲解
  • 峟思大坝安全监测系统:科技筑牢工程稳定的基石
  • C++:模拟实现list
  • 国赛论文写作教学指南——模型的建立与求解
  • SprinBoot+Vue学生选课小程序的设计与实现
  • 全国设计院排名 工程总承包营业额二〇二三年排名
  • 线段树维护更多类型的信息
  • [译]Python中的类属性与实例属性的区别
  • Angular数据绑定机制
  • css选择器
  • input的行数自动增减
  • Javascript 原型链
  • PAT A1120
  • select2 取值 遍历 设置默认值
  • TypeScript实现数据结构(一)栈,队列,链表
  • Vue.js-Day01
  • vue学习系列(二)vue-cli
  • zookeeper系列(七)实战分布式命名服务
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 关于Android全面屏虚拟导航栏的适配总结
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​经​纬​恒​润​二​面​​三​七​互​娱​一​面​​元​象​二​面​
  • ​一些不规范的GTID使用场景
  • #### golang中【堆】的使用及底层 ####
  • #14vue3生成表单并跳转到外部地址的方式
  • #git 撤消对文件的更改
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (Ruby)Ubuntu12.04安装Rails环境
  • (二)Linux——Linux常用指令
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (一)kafka实战——kafka源码编译启动
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (状压dp)uva 10817 Headmaster's Headache
  • *算法训练(leetcode)第四十天 | 647. 回文子串、516. 最长回文子序列
  • .htaccess 强制https 单独排除某个目录
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .net core 的缓存方案
  • .Net Core 中间件与过滤器
  • .NET HttpWebRequest、WebClient、HttpClient
  • .Net mvc总结
  • .net 按比例显示图片的缩略图
  • .NET 设计模式—适配器模式(Adapter Pattern)
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...