查看: 154|回复: 0

ASCF元服务开发避坑:HTTPS、WebSocket与存储限制

[复制链接]
发表于 1 小时前 | 显示全部楼层 |阅读模式
最近有团队要把现有小程序业务迁移到鸿蒙元服务,但之前主要写小程序,对 ArkTS 不熟,迁移成本较高。实践中可先评估 ASCF。ASCF 全称 Atomic Service Cross Framework,是鸿蒙面向小程序生态定制的解决方案,提供运行时环境,让小程序代码能在元服务里运行。元服务是鸿蒙的一种轻量应用形态,不用安装,扫一扫就能打开。对于已有小程序项目,ASCF 提供了一条较平滑的上鸿蒙路径,不必从零开始学 ArkTS。

创建项目时,在 DevEco Studio 中选择 ASCF 相关模板,项目结构与小程序相似,有 pages 目录、app.json 等。写法也接近小程序:wxml 变成 hml,wxss 变成 css,js 仍是 js。页面逻辑用 export default 组织 data、onLoad 等,模板中可用 {{message}} 和 for 循环渲染 list/list-item。

网络请求使用 has.request,用法与小程序 wx.request 几乎一致。必须使用 HTTPS。开发阶段可在 AGC 后台配置服务器域名,或在设备上开启“开发中元服务豁免管控”跳过域名校验。从 1.0.4 版本开始,has.request 会返回 RequestTask 对象,可用于中断请求或监听响应头。POST 请求把 method 改为 POST,data 中放参数即可;content-type 默认 application/json,也可以自行修改。需要注意,content-type 为 application/x-www-form-urlencoded 时,data 需要自己拼成查询字符串格式,这一点与小程序行为一致,但首次使用容易混淆。

WebSocket 方面,ASCF 提供 has.connectSocket,并配套 has.onSocketOpen、has.onSocketMessage、has.onSocketError、has.onSocketClose 和 has.closeSocket。也可以用 SocketTask 方式操作,通过 onOpen、onMessage、onClose、send、close 管理连接,多个 WebSocket 连接时更灵活。限制是一个元服务内最多同时存在 5 个全局 WebSocket 实例,做聊天等功能时若连接数较多,建议复用连接或用 SocketTask 管理,否则第 6 个连接会连不上。

本地存储 API 与小程序 wx.setStorage 类似,包括 has.setStorageSync、has.getStorageSync、has.removeStorageSync、has.clearStorageSync、has.getStorageInfoSync。存储以用户维度隔离,同一个元服务中,不同用户的数据互相看不到。单个元服务的 storage 上限是 10MB,与小程序一样。清理策略也与安装包一致,只有用户清理应用缓存或卸载应用时,本地存储才会被清掉。

ASCF 尽量保持与小程序一致的 API,但仍有差异。协议要求更严格:小程序开发时 HTTP 还能用,ASCF 必须用 HTTPS;WebSocket 必须用 WSS。域名配置平台不同:小程序在微信后台配置,ASCF 在 AGC 后台配置。部分与微信生态强相关的 API 在 ASCF 中没有,具体支持范围要看官方文档。调试工具方面,DevEco Studio 的调试体验与微信开发者工具仍有差距,尤其是网络请求调试不够直观。

实际排障中,常见问题包括:域名没配置导致网络请求一直失败,需要在 AGC 加域名或开启“开发中元服务豁免管控”;自签名 HTTPS 证书不被 ASCF 认可,测试环境可能跑不通,开发期可用豁免管控绕过,但上线前必须使用正式证书;WebSocket 超过 5 个全局实例导致连接失败;POST 请求的 content-type 与 data 格式不匹配。

从架构取舍看,ASCF 在小程序和元服务之间做了一层抽象,迁移成本比直接用 ArkTS 写元服务低,适合有小程序经验、希望快速上鸿蒙的团队。但如果业务需要深度集成鸿蒙特性,比如分布式能力、卡片等,可能还是得用原生 ArkTS。小程序项目较大时,迁移前最好先做技术验证,把核心流程跑通,确认没有 ASCF 不支持的 API,避免迁移到一半才发现关键功能不可用。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-9-22 15:22 , Processed in 0.020564 second(s), 18 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部