Stage模型工程结构、进程模型和多HAP包结构模型
app.json5配置文件
{ "app": { "bundleName": "com.application.myapplication", // 应用包名 "debug": false, // 是否可调试 "icon": "$media:app_icon", // 应用的图标 "label": "$string:app_name", // 应用的名称 "description": "$string:app_description", // 应用的描述信息 "vendor": "example", // 应用开发厂商的描述 "versionCode": 1000000, // 版本号,32位非负整数,数值越大版本越高 "versionName": "1.0.0", // 应用版本号的文字描述,给用户展示的 "distributedNotificationEnabled": true, // 是否开启分布式通知 "minCompatibleVersionCode": 1000000, // 兼容的最低历史版本号 "minAPIVersion": 9, // SDK的API最小版本 "targetAPIVersion": 9, // 运行需要的API目标版本 "apiReleaseType": "Release", // 目标版本的类型,Canary、Beta和Release "entityType": "media", // 应用的类别 "multiProjects": true, // 工程是否支持多个工程的联合开发 "tablet": { // 对tablet设备做的特殊配置 "minAPIVersion": 8, }, "tv": { // 对tv设备做的特殊配置 "minAPIVersion": 8, }, "wearable": { // 对wearable设备做的特殊配置 "minAPIVersion": 8, }, "car": { // 对car设备做的特殊配置 "minAPIVersion": 8, }, "default": { // 对default设备做的特殊配置 "minAPIVersion": 8, } },}
module.json5配置文件
{ "module": { "name": "entry", // Module的名称 "type": "entry", // Module的类型,entry和feature "srcEntrance": "./ets/myabilitystage/MyAbilityStage.ts", // 标识当前Module所对应的代码路径 "description": "$string:module_desc", // Module的描述信息 "process": "com.example.smartagriculture", // Module的进程名 "mainElement": "EntryAbility", // Module的入口UIAbility名称或者ExtensionAbility名称 "deviceTypes": [ // 可运行的设备 "default", "tablet" ], "deliveryWithInstall": true, // 当前Module是否在用户主动安装的时候安装 "installationFree": false, // 是否支持免安装特性(true时的例子:快应用),Module和feature这里要统一 "virtualMachine": "ark", // 目标虚拟机类型,供云端分发使用 "uiSyntax": "ets", // 定义该JS Component的语法类型(标签从API9开始废弃) "pages": "$profile:main_pages", // 列举JS Component中每个页面信息,页面跳转要把页面信息填进去才可跳转 "metadata": [ // 自定义元信息 { "name": "module_metadata", // 数据项的键名称 "value": "a test demo for module metadata", // 数据项的值 "resource": "$profile:shortcuts_config" // 定义用户自定义数据格式 } ], "abilities": [ // UIAbility的配置信息,配置只对当前UIAbility生效 { "name": "EntryAbility", // UIAbility组件的名称 "srcEntrance": "./ets/entryability/EntryAbility.ts", // UIAbility的代码路径 "launchType":"standard", // UIAbility组件的启动模式,默认singleton "description": "$string:description_main_ability", // UIAbility组件的描述信息 "icon": "$media:icon", // UIAbility组件的图标 "label": "Login", // UIAbility组件对用户显示的名称 "permissions": [], // 权限信息 "metadata": [], // UIAbility组件的元信息 "visible": true, // 是否可以被其他应用调用 "continuable": true, // UIAbility组件是否可以迁移 "skills": [{ // 能够接收的Want的特征集"actions": [ // 能够接收的Want的Action值的集合 "action.system.home" ], "entities": [ // 能够接收Want的Entity值的集合 "entity.system.home"], "uris": [ // Want中URI(Uniform Resource Identifier)相匹配的集合 { "scheme":"http", // URI的协议名部分 "host":"example.com", // URI的主机地址部分 "port":"80", // URI的端口部分 "path":"path", // URI的路径部分,path、pathStartWith和pathRegex配置时三选一 "type": "text/*" // 与Want相匹配的数据类型,使用MIME类型规范。可与schema同时配置,也可以单独配置 } ] }], "backgroundModes": [ // UIAbility组件的长时任务集合,background开头,一看就是可后台运行"dataTransfer","audioPlayback","audioRecording","location","bluetoothInteraction","multiDeviceConnection","wifiInteraction","voip","taskKeeping" ], "startWindowIcon": "$media:icon", // 启动页面图标资源文件的索引 "startWindowBackground": "$color:red", // 启动页面背景颜色资源文件的索引 "removeMissionAfterTerminate": true, // 组件销毁后是否从任务列表中移除任务 "orientation": " ", // 组件启动时的方向 "supportWindowMode": ["fullscreen", "split", "floating"], // 组件所支持的窗口模式 "priority": 5, // 组件的优先级,仅支持系统应用配置,三方应用配置不生效 "maxWindowRatio": 3.5, // 支持的最大的宽高比 "minWindowRatio": 0.5, // 支持的最小的宽高比 "maxWindowWidth": 2560, // 支持的最大的窗口宽度 "minWindowWidth": 1400, // 支持的最小的窗口宽度 "maxWindowHeight": 300, // 支持的最大的窗口高度 "minWindowHeight": 200, // 支持的最小的窗口高度 "excludeFromMissions": false // 是否在最近任务列表中显示 } ], "extensionAbilities": [ // extensionAbilities的配置信息 { "name": "FormName", // ExtensionAbility组件的名称 "srcEntrance": "./form/MyForm.ts", // ExtensionAbility组件所对应的代码路径 "icon": "$media:icon", // 组件的图标 "label" : "$string:extension_name", // 对用户显示的名称 "description": "$string:form_description", // 组件的描述 "type": "form", // 组件的类型 "permissions": ["ohos.abilitydemo.permission.PROVIDER"], // 权限信息 "readPermission": "", "writePermission": "", "visible": true, // 是否可以被其他应用调用 "uri":"scheme://authority/path/query", // 当前ExtensionAbility组件提供的数据URI "skills": [{ "actions": [], "entities": [], "uris": [] }], "metadata": [ {"name": "ohos.extension.form","resource": "$profile:form_config", } ] } ], "requestPermissions": [ // 应用运行时需向系统申请的权限集合 { "name": "ohos.abilitydemo.permission.PROVIDER", // 需要使用的权限名称 "reason": "$string:reason", // 用于描述申请权限的原因 "usedScene": { // 描述权限使用的场景由abilities和when组成 "abilities": [ // UIAbility或者ExtensionAbility组件的名称 "FormAbility" ], "when": "inuse" // inuse(使用时)、always(始终) } } ], "testRunner": { // 支持对测试框架的配置 "name": "myTestRunnerName", // 测试框架对象名称 "srcPath": "etc/test/TestRunner.ts" // 测试框架代码路径 } }}
进程内存模型
进程模型示意图
多HAP包结构模型
多HAP包将业务划分成多个模块,每个模块放到独立的HAP中,进行模块化管理,模块之间属于松耦合关系。如下图的appA包含一个Entry包和FeatrueA包,appB包含一个Entry包、FeatrueA包和FeatrueB包,appA包含一个Entry包、FeatrueB包和FeatrueC包。多HAP包结构,方便了开发者将多HAP合理地组合并部署到不同的设备上,按需加载所需模块,应用资源共享以及减少程序包大小。
松耦合和紧耦合的对比
下表摘自:耦合,紧耦合,松耦合,解耦
紧耦合架构 | 松耦合架构 | |
---|---|---|
工作方式 | 同步 | 异步 |
程序关联依赖 | 强 | 弱 |
业务逻辑关系 | 集中控制 | 分散控制 |
设计难度 | 容易 | 比较复杂 |
响应能力 | 快 | 和并行工作量成反比 |
时效表现 | 实时 | 无要求 |
业务使用范围 | 简单计算 | 复杂计算 |
安全 | 弱 | 强 |
应用领域 | 小规模并行处理环境 | 大规模、超大规模并行环境 |
系统稳定性 | 弱 | 强 |
应用领域 | 小规模并行处理环境 | 大规模、超大规模并行环境 |
系统稳定性 | 弱 | 强 |