在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/GO  網(wǎng)絡(luò)安全/ go語言 grpc 怎么結(jié)合 gorm 使用

go語言 grpc 怎么結(jié)合 gorm 使用

項目當(dāng)中使用多語言開發(fā),所以使用 grpc 作為跨語言調(diào)用的工具,但是使用 go 語言時卻不知怎么更好的結(jié)合 gorm。

主要問題是 proto 生成的 go 結(jié)構(gòu)不適用于 gorm 的 model(proto 生成的結(jié)構(gòu)不支持自定義標(biāo)簽以及 time.Time 類型),而且我認(rèn)為將網(wǎng)絡(luò)層數(shù)據(jù)結(jié)構(gòu)用于持久層也不是一個好主意,因此提出此問是想找到一個合適的方案。

目前我的思路如下:

  1. 有點啰嗦的寫法,在項目中和 proto 中聲明兩次結(jié)構(gòu),寫一個轉(zhuǎn)換方法,用來轉(zhuǎn)換這兩種結(jié)構(gòu),因為才疏學(xué)淺,只能一個字段一個字段賦值,尤其是遇到多條查詢,還需要寫個循環(huán)去轉(zhuǎn)換,如果是這種思路,有沒有更高效的轉(zhuǎn)換方式?
  2. 不使用 gorm,自己寫 sql
  3. 用一個支持 json 數(shù)據(jù)庫來保存

目前搜集到的資料:

這個 問題 問到如何讓 proto 支持 go 自定義標(biāo)簽,里面提到了一個庫可以支持,不過我還是認(rèn)為局限性很大,就算 proto 支持了自定義標(biāo)簽,但還是不支持自定義表名,事件等等,所以這個方案 pass

這個 issues 討論的就是讓 proto 支持自定義標(biāo)簽,被明確否定不會被支持。

回答
編輯回答
妖妖

第一種方法是最好的也是實踐中最實用的。
proto寫的多的話,你會發(fā)現(xiàn),proto中 message數(shù)據(jù)結(jié)構(gòu)定義的會越來越多,所以,針對同一類型的request message,盡量可以定義的大而全,需要哪些字段就給哪些字段賦值,不需要不賦值即可,不賦值的話傳輸沒有任何消費。
還有就是 什么層做什么事情,不要各種耦合,會很亂的。
不要覺得第一種會啰嗦,其實一點都不浪費也不臃腫的。

2017年7月12日 15:03