跳到主要内容

ARC 2.0.0-beta.25

Session、patch 与 scene

把交互式整 tree 渲染、增量 patch 与设备上下文分开理解。

交互式 AUP 的首次呈现和后续更新不是同一件事。当前消息类型先发送完整 tree 的 render,随后用带 treeVersionpatch 增量更新。Web Device 的静态 HTML path 不需要把这个 interactive session pipeline 当作每个网页的前提。

当前 patch 的边界

一个 patch 由下列操作组成:

操作作用
create在指定 parent 下创建 node
update更新已有 node 的允许字段
remove移除 node
reorder调整 children 顺序

当前 update 可改变 srcpropsstateeventspropBindchildren。这解释了为何作者应使用稳定 id:patch 的目标是 node identity,而不是某段显示文本或渲染器的临时 DOM。

不要把这个列表当成所有 transport 细节永久不变的公共网络协议保证。本页把它作为 2.0.0-beta.25 的编写和调试模型;跨版本 client/server 组合时,仍须按实际 release compatibility 验证。

scene 与 capability 的职责

session 所在设备会在 handshake 报告能力和上下文。它影响同一语义 tree 是否以 native、webview、partial 或 fallback 的方式出现。AUP 的 shared degradation chain 只解决部分 primitive 的替换顺序;它不能代替场景、身份、AFS scope 或写权限的判断。

所以应把问题分开:

  • “tree 是否更新到正确 node?”看 event 与 patch;
  • “当前设备能否呈现该 primitive?”看 DeviceCaps 与 degradation;
  • “这个操作是否有资格读取/写入路径?”看 caller identity 与 AFS scope;
  • “网页是否得到静态 HTML?”看 Web Device 的 renderer/build 边界。

调试顺序

  1. 先用一个可见 node 的状态变化验证事件是否产生 patch。
  2. 在同一 session 验证页面导航仍使用 _root + set.page 的当前形状。
  3. 再在第二个 target 上检查能力差异和 fallback。
  4. 单独运行静态 Web Device build,不把它的成功当成交互 session 的证明。

对事件字段读事件、状态与绑定;对设备差异读设备能力与降级