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

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

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

項(xiàng)目當(dāng)中使用多語言開發(fā),所以使用 grpc 作為跨語言調(diào)用的工具,但是使用 go 語言時(shí)卻不知怎么更好的結(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)用于持久層也不是一個(gè)好主意,因此提出此問是想找到一個(gè)合適的方案。

目前我的思路如下:

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

目前搜集到的資料:

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

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

回答
編輯回答
妖妖

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

2017年7月12日 15:03