华为分布式日历应用开发实践
华为产品中的分布式日历应用
1、分布式应用架构
• 遵循MVVM
• 一套架构适配多设备形态
2、分布式数据服务
• 三步实现日程同步
应用架构要满足两点要求
数据
业务逻辑模块
应用程序
加工处理数据
界面模块
呈现、交互
用户
日历应用特点
• 界面:易变更,产品定制性强
• 业务逻辑:日历数据计算逻辑复杂,但多
产品通用
界面开发要简单、业务逻辑实现要健壮高效
HarmonyOS 应用原生支持JS与Java两种语言
Android 应用
Java
界面
业务逻辑
Java:界面命令式开发,能实现复杂的
界面逻辑,但不够简单、灵活
RN、Vue 应用
Javascript
界面
业务逻辑
JS:复杂运算速度较慢,代码的隐私性差
HarmonyOS 日历应用
Javascript FA
界面
组件间接口
Java PA
业务逻辑
简单
声明式开发,纯粹做界面
高效健壮
可使用Java强大类库及高性能
可复用、可独立测试
• 支持JS、Java混合编程,各取所长
一套架构适配多设备形态
JS FA
View
JS Page-TV
JS Page-
Watch
View视图层:
• 多JS Page针对不同设备进行深度UI定制
• MVVM分层,多设备界面
适配只需要修改View层
Java PA
组件间接口 call&subscribe
ViewModel
Model
ViewModel视图模型层:
JS与Java的数据绑定
•
日历业务逻辑
日程业务逻辑
日历数据
分布式日程数据
Model模型层:
• 业务逻辑与数据
• 分布式日程数据
HarmonyOS平台能力
Model层数据经过ViewModel传递到View层界面
1
生成月视图数据
MonthData,提供给
ViewModel
java.util.Calendar、TimeZone、Locale…
Model层数据经过ViewModel传递到View层界面
1
生成月视图数据
MonthData,提供给
ViewModel
2
ViewModel层
序列化MonthData
Model层数据经过ViewModel传递到View层界面
AceInternalAbility机
制,支持JS与Java互通
FeatureAbility.callAbility调用
FeatureAbility.subscribeAbilityEvent订阅
View与ViewModel双向绑定
3
通过FeatureAbility通信接口返回
MonthData
1
生成月视图数据
MonthData,提供给
ViewModel
2
ViewModel层
序列化MonthData