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

11 小时 8 分钟前
 zhengfan2016

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

566 次点击
所在节点    程序员
4 条回复
Makabaka01
11 小时 3 分钟前
在国内几个 Top 大厂都干过,我只能说。大部分人都直接把 protobuf 的结构到处传,根本不定义的。
guyeu
10 小时 50 分钟前
先写 domain 层,自然就会给 domain 层的 API 定义数据类,然后把 domain 层接入 db 层,这个时候针对数据库做设计,不管是定义数据库实体生成建表语句还是通过建表语句生成代码定义,都需要在 domain 层接入的时候写一层转换,这层转换有一些工具可以辅助,但是自己写也是很自然的(有 AI 之后可以直接丢给 AI 写)。之后再定义接入层的时候(或者把以前定义的接入层接入 domain 层 ),再写相应的转换逻辑。

按照我的理解,接入层是有一些逻辑的,最经典的电商下单操作,接入层收到的不管是 protobuf 还是 json ,都需要从对应的实体类里拆出对应的参数,比如调一下 account domain 的 api 预扣余额,然后调一下 inventory domain 的 api 预扣库存,都成功之后再调一下结算,发货。这里面每一个 domain 层的调用的参数都不太一样,也不可能会存在说需要把 api 的入参到处传的情况。
willchen
5 小时 3 分钟前
个人建议是手动,对外接口的 protobuf ,最好遵守“接口仅提供必要字段”,后期也可控
fov6363
1 小时 45 分钟前
AI 帮写,看代码也很头疼,都是 a 转 b ,b 转 c ,重复代码极高,特别想用一个类型在所有服务共用

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1192625

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX