当前位置: 首页 > 科技观察

HarmonyOS原子服务原理及架构解析_0

时间:2023-03-12 08:27:19 科技观察

更多内容请访问:Harmonyos技术社区https://harmonyos.51cto.comHarmonyOS2系统及全场景新品发布会正式推出服务卡,颠覆人们认知APP信息展示,引起业界高度关注。本文是对HarmonyOS服务卡的原理和结构的分析。由于目前资料有限,文章内容难免有错误和疏漏之处,敬请谅解。一、HarmonyOS服务卡简介服务卡官方定义服务卡(以下简称“卡”)是HarmonyOSFA(FeatureAbility)的一种界面展示形式,将FA的重要信息或操作前置到卡上,实现直接服务.降低经验等级的目的。为了说明什么是服务卡,我们就以“打机技能”的应用为例,感受一下服务卡给我们带来的价值。当我们用手指按住图标向上滑动时,会弹出应用的默认卡片,点击卡片右上角的图钉,卡片就会固定在桌面上;点击卡片中的按钮开始查看游戏技能。这样,通过与卡片的交互,用户无需打开应用程序就可以实现应用程序中的一些操作,使用起来非常方便。服务卡的价值举一反三,想象一下:不用打开微信,直接运行扫码支付;无需打开微博即可查看最新热点信息;无需开通邮件服务,即可看到最新的邮件列表;…………服务卡重新打开应用创新之门,为应用带来新的商业价值和流量入口。服务卡和原子服务有什么关系?说到服务卡,就不得不提到与其息息相关的原子服务。官方雾化服务是HarmonyOS提供的一种面向未来的服务提供方式。独立入口(用户可通过点击、触摸、扫描等方式直接触发)、免安装(无需显式安装,由系统程序框架后台安装后即可使用),可为用户提供一项或多项便捷服务。服务卡片是鸿蒙OS原子服务的展示方式。原子服务是脸,服务卡是脸。服务卡应用目前仅支持在鸿蒙开源版HarmonyOS上部署,开源版HarmonyOSOpenHarmony2.0暂不支持此功能。2.服务卡片操作说明如何查看应用的服务卡片如果应用图标下方有横线,用手指按住图标并同时向上滑动,弹出应用默认卡片up,点击卡片右上角的图钉,将卡片固定在桌面上;卡片支持点击交互,用户无需打开应用即可在应用中实现一些操作。比如下图中的相机、手机、畅联APP都支持服务卡功能。如何查看一个应用的所有卡片?以“打机技能”应用为例,在桌面长按其图标,在弹出的菜单中点击“服务卡牌”,就会显示“打机技能”应用的所有卡牌。如何查看服务卡列表?从桌面左下角或右下角滑动手指至屏幕中央,调出“我的服务”,即可看到手机支持的服务卡列表。3、服务卡原理分析通过上面的介绍,我们对服务卡有了一个大概的了解。那么服务卡到底是什么?是不是类似微信小程序的应用?与目前市场类似的是哪一类应用?区别在哪里?典型代表简要总结:下面重点介绍微信小程序、快应用、小插件。微信小程序微信小程序于2017年1月9日凌晨正式上线,微信小程序是一款无需下载安装即可使用的应用。它实现了“无障碍”应用程序的梦想。用户可以通过扫描或搜索来打开应用程序。也体现了“用完就走”的理念,用户无需关心是否安装了太多应用。微信小程序的框架由两部分组成,View层和AppService逻辑层。View层用于渲染页面结构,AppService层用于逻辑处理、数据请求、接口调用。它们在两个线程中运行。视图层使用WebView渲染,逻辑层使用JSCore运行。视图层和逻辑层通过系统层的JSBridage进行通信。逻辑层通知视图层数据变化,触发视图层的页面更新,视图层将触发的事件通知给逻辑层进行业务处理。快应用快应用是九大手机厂商基于硬件平台联合推出的全新应用生态。用户无需下载安装,点击即用,尽享原生应用的性能体验。2018年3月20日,“快应用”标准在北京发布。“快应用”采用前端技术栈开发,原生渲染,具有H5页面和原生应用的双重优势。什么是小部件?一个Widget的定位其实就是一个应用的扩展。使用它的关键在于用户可以在不打开应用程序或等待加载的情况下快速获取信息,甚至可以在屏幕上进行简单的操作。Apple一再强调,Widgets并不是进入应用程序的另一种快捷方式。Widgets是一种信息展示方式,用于快速提供一些用户关心的应用数据。Widget刚进入中国时,还没有通用的译名,当时被中搜取名为“维哥”。iOS14直到此时才使用“widgets”的命名方式。Widgets根据不同的用户使用场景,可以分为信息widgets、收藏widgets、控制widgets、混合widgets。而iOS一直以来将主屏的控件放在控制中心进行交互,所以widget的类型主要是信息widget和收藏widget。Widget刷新完全由WidgetCenter控制。开发者无法通过任何API主动刷新Widget页面,只能告诉WidgetCenter需要刷新Timeline。小部件只能使用SwiftUI进行开发。准确地说,Widget的本质是一个随时间线更新的SwiftUI视图。Widget交互和显示WidgetUI是无状态的。它不支持播放gif动画、视频、滚动或主动刷新视图。唯一支持的功能是用户点击和DeepLinks以唤起主应用程序。综合对比相关特性和能力,鸿蒙卡服务更像是标准widget的应用形态。鸿蒙服务卡的英文名称叫做servicewidget,也从侧面印证了这个观点。4.服务卡特点鸿蒙OS服务卡具有三大特点。1)随处可用服务发现:原子服务可以在服务中心被发现和使用。智能推荐:根据合适的场景,主动向用户推荐原子服务;用户可以在服务中心找到系统推荐的服务和小易的推荐。2)直接获取服务原子化服务支持免安装使用。服务卡片:支持用户在不开通原子服务的情况下获取服务中重要信息的展示和动态变化,如天气、要事笔记、热点新闻列表等。3)跨设备雾化服务支持运行在1+8+N台设备上,如手机、平板等设备。支持跨设备分享:比如接入HuaweiShare后,用户可以将原子化服务分享给好友,好友确认后开启分享服务。支持跨终端迁移:比如手机上未完成的邮件可以迁移到平板继续编辑。支持多端协同:如手机作为文档翻页、批注,智慧屏显示完成分布式办公;手机作为手柄,与智慧屏一起玩游戏。根据上述官方宣传,基于鸿蒙OS的分布式能力,鸿蒙OS在widgets的基础上增加了跨设备能力,赋予了widgets新的生命力。用户在跨设备转移共享业务时,转移设备无需预装应用,大大提升业务卡的适用场景和价值。5.原子服务架构鸿蒙OS原子服务架构有两张图可供参考。基本概念卡片用户是显示卡片内容的宿主应用,控制卡片在宿主中的显示位置。卡片管理服务用于管理系统中新增卡片的常驻代理服务,包括卡片对象的管理和使用、卡片的周期刷新等。卡片展示内容,控制卡片展示内容,控制布局,控制点击事件。注意:卡的用户和提供者不需要永久运行。当需要添加/删除/请求更新卡片时,卡片管理服务会拉取卡片提供者获取卡片信息。卡片管理服务包括以下模块:定时刷新:添加卡片后,根据卡片的刷新策略启动定时任务,周期性触发卡片的刷新。卡片缓存管理:将卡片添加到卡片管理服务后,缓存卡片的视图信息,以便下次获取卡片时直接返回缓存的数据,减少延迟。卡片生命周期管理:当卡片切换到后台或被阻塞时,暂停卡片的刷新;卡片升级/卸载场景下卡片数据更新和清空。卡片用户对象管理:管理卡片用户的RPC对象,用于卡片更新后用户请求的校验和回调处理。通信适配层:负责与卡用户和提供者的RPC通信。卡片提供者包括以下模块:卡片服务:由卡片提供者的开发者实现。开发者实现onCreateForm、onUpdateForm、onDeleteForm处理卡片的创建、更新、删除请求,并提供相应的卡片服务。Cardprovider实例管理模块:由cardprovider开发者实现,负责对cardmanagementservice分配的cardinstance进行持久化管理。通信适配层:HarmonyOSSDK提供,负责与卡片管理服务通信,用于主动向卡片管理服务推送卡片的更新数据。根据以上架构描述,个人分析推理的内容如下。服务卡如何在不预装APP的情况下跨设备传输共享?鸿蒙OS雾化服务采用持卡人和持卡人分离的结构,持卡人和持卡人可以在同一个设备上,也可以在不同的设备上。如果在不同的设备上进行传输,通过RPC通信,鸿蒙OS可以实现跨设备的传输和共享能力,接收方无需预装应用。同时,对于卡商下线的风险,鸿蒙OS也通过在架构中支持卡管理服务的缓存机制,进行了有效应对。其他设计讨论目前还不清楚原子服务定时刷新模块是如何实现的。不知道是不是和iOS的widget一样,由系统统一调度刷新,从而提升整机的刷新性能。当卡用户和卡提供者在同一个终端时,从架构上看,似乎可以优化为直接通信,无需卡管理服务,减少中间的一个环节,避免性能损失。6、未来原子化服务展望下面我们来对比分析一下ios14widgets的特点,未来鸿蒙OS服务卡可能会推出哪些功能。1)配置功能用户可以根据自己的喜好进行配置。以天气组件为例。有的用户可能关心晴天、雨天、气温等信息,有的用户可能只关心PM2.5信息。由于widgets的显示空间有限,有时无法显示一个组件内的所有信息,因此让用户选择自己感兴趣的信息来配置widgets是一个非常重要的特性。2)与SmartStack功能类似,iOSwidget具备智能堆叠SmartStack能力,集成了Siri的智能推荐能力,可以根据你的使用时间、地点等因素智能显示组件。例如,早上起床时,可以显示天气信息;当你到达办公室时,你可以显示新的微信消息;晚上下班时,可以显示路线拥堵情况。目前鸿蒙OS实现了小翼的建议,但小翼推荐的是应用列表,而不是服务卡轮流展示的能力。3)展开折叠功能业务卡的展开折叠功能对于列表类业务卡尤为重要。折叠起来可以节省桌面空间,特别适合一些对空间敏感的人。7.原子服务实例原子服务应用开发可以参考华为codelab:时钟FA卡开发实例https://developer.huawei.com/consumer/cn/codelabsPortal/carddetails/Clock-Card想了解更多了解更多内容请访问:与华为官方共建的Harmonyos技术社区https://harmonyos.51cto.com