You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将Protobuf标签号用于自定义绑定是否属于反模式?

关于Protobuf在SDUI场景中标签号绑定方案的咨询

背景与方案概述

我们公司正在开发服务端驱动UI(SDUI)服务,所有客户端(iOS、Android、Web)与后端的API均基于Protobuf模型,因此计划将Protobuf用于SDUI场景。

我们的架构设计是:搭建独立服务向客户端提供需渲染的视图结构,客户端仅缓存UI样式与布局;由另一服务提供业务数据,最终将数据绑定到视图结构。客户端仅知晓后端响应为Protobuf数据,不清楚其具体Schema,且视图结构与后端数据采用同类型的Protobuf模型。

模型示例

视图结构的Protobuf定义与示例:

message Text {
 string label = 1;
  Color color = 2;
}
message VerticalStack {}
message HorizontalStack {}

/// 典型视图结构的Protobuf表示
VerticalStack {
  spacing = 20pt
  children = [
   Text { 
     id: 11
     color: .white
    }
   HorizontalStack {
     children: ...
   }
  ]
}

后端数据响应示例:

message BackendResponse {
  Text productTitle = 11;
}

当前绑定方案

我们提出通过Protobuf标签号实现视图与数据的绑定:例如视图中Text.id = 11对应后端响应里BackendResponse.productTitle的标签号11。目前已构建自动生成工具,确保视图结构与后端响应使用一致的标签号。客户端通过递归解析视图结构获取id(即对应的标签号),再从后端响应中匹配对应标签号的数据,最终将数据与视图合并渲染。

核心疑问

  • 该方案虽不常见,是否属于Protobuf使用反模式?
  • 能否通过Protobuf的扩展或自定义选项优化此方案?
  • 是否存在更合适的SDUI+Protobuf实现方式?

技术栈补充

  • 绑定标签号跨多技术栈使用:视图Protobuf为客户端(Swift、Kotlin、TypeScript/JS)、后端(Go)、DSL仓库(TypeScript)共享;后端模型仅为后端、DSL仓库所知。

内容的提问来源于stack exchange,提问作者Yan Zaitsev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 04:39:52