GoForum🌐 V2EX

请问那些用 protobuf 的后端是怎么优雅处理 domain 和 protobuf, db 层之间的数据转换的

zhengfan2016 · 2026-02-13 10:42 · 0 次点赞 · 2 条回复

如题,鄙人前端,后端技术栈是 Go+Protobuf ,感觉经常类似的数据结构需要在 protobuf ,domain 和 db 层定义三遍,还得写 a 转 b ,b 转 a ,b 转 c ,c 转 b 的函数,如果复杂结构还得多层遍历,大家也是同样的做法吗

2 条回复
Makabaka01 · 2026-02-13 10:42
#1

在国内几个 Top 大厂都干过,我只能说。大部分人都直接把 protobuf 的结构到处传,根本不定义的。

guyeu · 2026-02-13 10:57
#2

先写 domain 层,自然就会给 domain 层的 API 定义数据类,然后把 domain 层接入 db 层,这个时候针对数据库做设计,不管是定义数据库实体生成建表语句还是通过建表语句生成代码定义,都需要在 domain 层接入的时候写一层转换,这层转换有一些工具可以辅助,但是自己写也是很自然的(有 AI 之后可以直接丢给 AI 写)。之后再定义接入层的时候(或者把以前定义的接入层接入 domain 层 ),再写相应的转换逻辑。

按照我的理解,接入层是有一些逻辑的,最经典的电商下单操作,接入层收到的不管是 protobuf 还是 json ,都需要从对应的实体类里拆出对应的参数,比如调一下 account domain 的 api 预扣余额,然后调一下 inventory domain 的 api 预扣库存,都成功之后再调一下结算,发货。这里面每一个 domain 层的调用的参数都不太一样,也不可能会存在说需要把 api 的入参到处传的情况。

添加回复
你还需要 登录 后发表回复

登录后可发帖和回复

登录 注册
主题信息
作者: zhengfan2016
发布: 2026-02-13
点赞: 0
回复: 0