V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
zhengfan2016
V2EX  ›  程序员

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

  •  
  •   zhengfan2016 · 5 小时 25 分钟前 · 425 次点击

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

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

    按照我的理解,接入层是有一些逻辑的,最经典的电商下单操作,接入层收到的不管是 protobuf 还是 json ,都需要从对应的实体类里拆出对应的参数,比如调一下 account domain 的 api 预扣余额,然后调一下 inventory domain 的 api 预扣库存,都成功之后再调一下结算,发货。这里面每一个 domain 层的调用的参数都不太一样,也不可能会存在说需要把 api 的入参到处传的情况。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   3528 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 08:02 · PVG 16:02 · LAX 00:02 · JFK 03:02
    ♥ Do have faith in what you're doing.