本文作者:kaifamei

GRPC服務(wù)層代碼生成方法、裝置、設(shè)備及存儲介質(zhì)與流程

更新時間:2025-12-25 20:49:28 0條評論

GRPC服務(wù)層代碼生成方法、裝置、設(shè)備及存儲介質(zhì)與流程


grpc服務(wù)層代碼生成方法、裝置、設(shè)備及存儲介質(zhì)
技術(shù)領(lǐng)域
1.本發(fā)明涉及代碼轉(zhuǎn)換技術(shù)領(lǐng)域,尤其涉及一種grpc服務(wù)層代碼生成方法、裝置、設(shè)備及計(jì)算機(jī)可讀存儲介質(zhì)。


背景技術(shù):



2.微服務(wù)就是將需要完整開發(fā)的整個應(yīng)用程序分成一個個的小服務(wù)進(jìn)行分別相對獨(dú)立的開發(fā),在基于protobuf( google protocol buffer,谷歌公司內(nèi)部的混合語言數(shù)據(jù)標(biāo)準(zhǔn))協(xié)議通信的微服務(wù)開發(fā)過程中,定義完成protobuf文件之后,還需要再根據(jù)protobuf協(xié)議文件編寫對應(yīng)的grpc(google remote procedure call,谷歌遠(yuǎn)程過程調(diào)用)服務(wù)代碼,從而實(shí)現(xiàn)客戶端對服務(wù)端的相關(guān)方法的調(diào)用,滿足用戶使用應(yīng)用的各種需求。
3.就目前protobuf協(xié)議文件對應(yīng)的grpc服務(wù)代碼而言,基本都是通過開發(fā)人員手動編寫完成的,在開發(fā)人員確定了protobuf協(xié)議文件中的相關(guān)信息之后敲打出grpc服務(wù)所需要的各個代碼,這種人工編寫grpc服務(wù)代碼的方式不僅效率低而且容易出錯,大大延長了微服務(wù)的開發(fā)周期。


技術(shù)實(shí)現(xiàn)要素:



4.本發(fā)明的主要目的在于提供一種grpc服務(wù)層代碼生成方法、裝置、設(shè)備及計(jì)算機(jī)可讀存儲介質(zhì),旨在解決人工編寫grpc服務(wù)代碼的方式不僅效率低而且容易出錯的技術(shù)問題。
5.為實(shí)現(xiàn)上述目的,本發(fā)明提供一種grpc服務(wù)層代碼生成方法,所述grpc服務(wù)層代碼生成方法包括以下步驟:確定當(dāng)前服務(wù)項(xiàng)目的protobuf文件和微服務(wù)代碼倉庫;確定所述protobuf文件中的第一目標(biāo)參數(shù)以及確定所述微服務(wù)代碼倉庫中第二目標(biāo)參數(shù);將所述第一目標(biāo)參數(shù)和所述第二目標(biāo)參數(shù)填充至預(yù)設(shè)的grpc服務(wù)層代碼模板以得到與所述protobuf文件對應(yīng)的grpc服務(wù)層代碼。
6.可選地,所述確定所述protobuf文件中的第一目標(biāo)參數(shù)的步驟,包括:解析所述protobuf文件以確定所述protobuf文件中的grpc服務(wù)名、grpc方法名、所述grpc方法名對應(yīng)的請求參數(shù)以及所述grpc方法名對應(yīng)的返回參數(shù),將所述grpc服務(wù)名、所述grpc方法名、所述請求參數(shù)以及所述返回參數(shù)作為所述第一目標(biāo)參數(shù)。
7.可選地,所述確定所述微服務(wù)代碼倉庫中第二目標(biāo)參數(shù)的步驟,包括:確定所述微服務(wù)代碼倉庫對應(yīng)的當(dāng)前代碼倉庫地址;確定所述當(dāng)前代碼倉庫地址中的代碼倉庫域名、代碼倉庫分組名以及應(yīng)用名稱;將所述代碼倉庫域名、所述代碼倉庫分組名以及所述應(yīng)用名稱作為第二目標(biāo)參數(shù)。
8.可選地,所述確定當(dāng)前服務(wù)項(xiàng)目的protobuf文件的步驟,包括:
確定所述當(dāng)前服務(wù)項(xiàng)目的命令參數(shù);確定所述命令參數(shù)中的protobuf文件目錄和protobuf文件名;根據(jù)所述protobuf文件目錄和所述protobuf文件名確定protobuf文件。
9.可選地,所述將所述第一目標(biāo)參數(shù)和所述第二目標(biāo)參數(shù)填充至預(yù)設(shè)的grpc服務(wù)層代碼模板以得到與所述protobuf文件對應(yīng)的grpc服務(wù)層代碼的步驟,包括:確定預(yù)設(shè)的grpc服務(wù)層代碼中與所述第一目標(biāo)參數(shù)對應(yīng)的第一占位符號,以及確定預(yù)設(shè)的grpc服務(wù)層代碼中與所述第二目標(biāo)參數(shù)對應(yīng)的第二占位符號;將所述第一目標(biāo)參數(shù)填充至所述第一占位符號,以及將所述第二目標(biāo)參數(shù)填充至所述第二占位符號,并刪除所述第一占位符號和所述第二占位符號。
10.可選地,所述將所述第一目標(biāo)參數(shù)和所述第二目標(biāo)參數(shù)填充至預(yù)設(shè)的grpc服務(wù)層代碼模板以得到與所述protobuf文件對應(yīng)的grpc服務(wù)層代碼的步驟之后,所述方法還包括:基于預(yù)設(shè)的目錄規(guī)范,將所述grpc服務(wù)層代碼保存至對應(yīng)的目標(biāo)目錄中;當(dāng)接收到與所述grpc服務(wù)層代碼對應(yīng)的調(diào)用指令,執(zhí)行所述目標(biāo)目錄中的grpc服務(wù)層代碼以返回所述調(diào)用指令對應(yīng)的調(diào)用結(jié)果。
11.可選地,所述grpc服務(wù)層代碼模板包括一個grpc服務(wù)層模板和至少一個grpc方法模板,所述grpc服務(wù)層模板表征grpc服務(wù)層數(shù)據(jù),所述grpc方法模板表征grpc方法數(shù)據(jù),所述grpc服務(wù)層模板與所述grpc方法模板之間的占位符號不同。
12.此外,為實(shí)現(xiàn)上述目的,本發(fā)明還提供一種grpc服務(wù)層代碼生成裝置,所述grpc服務(wù)層代碼生成裝置包括:參數(shù)提取模塊,用于確定當(dāng)前服務(wù)項(xiàng)目的protobuf文件和微服務(wù)代碼倉庫;確定所述protobuf文件中的第一目標(biāo)參數(shù)以及確定所述微服務(wù)代碼倉庫中第二目標(biāo)參數(shù);參數(shù)替換模塊,用于將所述第一目標(biāo)參數(shù)和所述第二目標(biāo)參數(shù)填充至預(yù)設(shè)的grpc服務(wù)層代碼模板以得到與所述protobuf文件對應(yīng)的grpc服務(wù)層代碼。
13.此外,為實(shí)現(xiàn)上述目的,本發(fā)明還提供一種grpc服務(wù)層代碼生成設(shè)備,包括處理器、存儲器、以及存儲在所述存儲器上的可被所述處理器執(zhí)行的grpc服務(wù)層代碼生成程序,其中,所述grpc服務(wù)層代碼生成程序被所述處理器執(zhí)行時,實(shí)現(xiàn)如上所述的grpc服務(wù)層代碼生成方法的步驟。
14.本發(fā)明還提供一種計(jì)算機(jī)可讀存儲介質(zhì),所述計(jì)算機(jī)可讀存儲介質(zhì)上存儲有g(shù)rpc服務(wù)層代碼生成程序,其中,所述grpc服務(wù)層代碼生成程序被處理器執(zhí)行時,實(shí)現(xiàn)如上所述的grpc服務(wù)層代碼生成方法的步驟。
15.本發(fā)明技術(shù)方案中的grpc服務(wù)層代碼生成方法,通過步驟:確定當(dāng)前服務(wù)項(xiàng)目的protobuf文件和微服務(wù)代碼倉庫;確定所述protobuf文件中的第一目標(biāo)參數(shù)以及確定所述微服務(wù)代碼倉庫中第二目標(biāo)參數(shù);將所述第一目標(biāo)參數(shù)和所述第二目標(biāo)參數(shù)填充至預(yù)設(shè)的grpc服務(wù)層代碼模板以得到與所述protobuf文件對應(yīng)的grpc服務(wù)層代碼。本發(fā)明解決了人工編寫grpc服務(wù)代碼的方式不僅效率低而且容易出錯的技術(shù)問題。
16.核心地,本發(fā)明主要基于protobuf文件通過自動地確定和提取出其中的多個第一目標(biāo)參數(shù)以及同時確定和提取出微服務(wù)代碼倉庫中多個第二目標(biāo)參數(shù),從而分別出了當(dāng)前服務(wù)項(xiàng)目所對應(yīng)的protobuf文件中和微服務(wù)代碼倉庫中的關(guān)鍵特征參數(shù),將與其他服務(wù)
項(xiàng)目相區(qū)別的第一目標(biāo)參數(shù)和所述第二目標(biāo)參數(shù)自動地填充并替換預(yù)設(shè)的grpc服務(wù)層代碼模板中對應(yīng)的占位符號,grpc服務(wù)層代碼模板中的其他基礎(chǔ)代碼保持不變,就能夠快速高效地自動生成了與protobuf文件對應(yīng)的grpc服務(wù)層代碼,也即是與當(dāng)前服務(wù)項(xiàng)目對應(yīng)的grpc服務(wù)層代碼,基礎(chǔ)該grpc服務(wù)層代碼就可以響應(yīng)用戶在客戶端上各種遠(yuǎn)程調(diào)用操作。本發(fā)明通過將protobuf文件和微服務(wù)代碼倉庫中分別對應(yīng)的關(guān)鍵特征參數(shù)填充到grpc服務(wù)層代碼模板實(shí)現(xiàn)自動生成grpc服務(wù)層代碼的方式,不僅大幅提高了grpc服務(wù)層代碼生成效率,同時也解放了人力操作,避免人工編寫代碼出現(xiàn)的各種錯誤,統(tǒng)一了代碼編寫風(fēng)格規(guī)范,極大地降低了后期對各種grpc服務(wù)層代碼的維護(hù)成本。
附圖說明
17.圖1為本發(fā)明實(shí)施例方案涉及的grpc服務(wù)層代碼生成設(shè)備的硬件運(yùn)行環(huán)境的結(jié)構(gòu)示意圖;圖2為本發(fā)明grpc服務(wù)層代碼生成方法第一實(shí)施例的流程示意圖;圖3為本發(fā)明grpc服務(wù)層代碼生成方法第一實(shí)施例步驟s10的細(xì)化流程圖;圖4為本發(fā)明grpc服務(wù)層代碼生成方法第一實(shí)施例步驟s20的細(xì)化流程圖;圖5為本發(fā)明grpc服務(wù)層代碼生成方法第一實(shí)施例步驟s30的細(xì)化流程圖;圖6為本發(fā)明grpc服務(wù)層代碼生成方法涉及的一實(shí)施例的整體流程圖;圖7為本發(fā)明grpc服務(wù)層代碼生成裝置的框架結(jié)構(gòu)示意圖。
18.本發(fā)明目的的實(shí)現(xiàn)、功能特點(diǎn)及優(yōu)點(diǎn)將結(jié)合實(shí)施例,參照附圖做進(jìn)一步說明。
具體實(shí)施方式
19.應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
20.本發(fā)明技術(shù)方案綜述:基于發(fā)現(xiàn)以及考慮到在mvc(model

view

controller,模型-視圖-控制器)框架下,每個grpc服務(wù)代碼邏輯都非常類似,包括編寫protobuf對應(yīng)的grpc方法、獲取請求參數(shù)、調(diào)用業(yè)務(wù)邏輯服務(wù)代碼,最后返回?cái)?shù)據(jù)等,所以設(shè)計(jì)出本發(fā)明技術(shù)方案,本發(fā)明主要將分別從protobuf文件和微服務(wù)代碼倉庫中獲取到的關(guān)鍵特征參數(shù)填充到grpc服務(wù)層代碼模板對應(yīng)位置的方式,實(shí)現(xiàn)了自動生成grpc服務(wù)層代碼的過程,代替開發(fā)人員的手動編寫代碼,減少人力成本和人工編寫過程出現(xiàn)的各種問題和漏洞,提高grpc服務(wù)層代碼的編寫效率和微服務(wù)項(xiàng)目的開發(fā)效率。
21.本發(fā)明實(shí)施例提出一種grpc服務(wù)層代碼生成設(shè)備。
22.如圖1所示,圖1是本發(fā)明實(shí)施例方案涉及的grpc服務(wù)層代碼生成設(shè)備的硬件運(yùn)行環(huán)境的結(jié)構(gòu)示意圖。
23.如圖1所示,該grpc服務(wù)層代碼生成設(shè)備可以包括:處理器1001,例如cpu,網(wǎng)絡(luò)接口1004,用戶接口1003,存儲器1005,通信總線1002。其中,通信總線1002用于實(shí)現(xiàn)這些組件之間的連接通信。用戶接口1003可以包括顯示器(display)、輸入單元比如控制面板,可選用戶接口1003還可以包括標(biāo)準(zhǔn)的有線接口、無線接口。網(wǎng)絡(luò)接口1004可選的可以包括標(biāo)準(zhǔn)的有線接口、無線接口(如wifi接口)。存儲器1005可以是高速ram存儲器,也可以是穩(wěn)定的存儲器(non-volatile memory),例如磁盤存儲器。存儲器1005可選的還可以是獨(dú)立于前述
處理器1001的存儲裝置。作為一種計(jì)算機(jī)存儲介質(zhì)的存儲器1005中可以包括grpc服務(wù)層代碼生成程序。
24.本領(lǐng)域技術(shù)人員可以理解,圖1中示出的硬件結(jié)構(gòu)并不構(gòu)成對設(shè)備的限定,可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件布置。
25.繼續(xù)參照圖1,圖1中作為一種計(jì)算機(jī)可讀存儲介質(zhì)的存儲器1005可以包括操作系統(tǒng)、用戶接口模塊、網(wǎng)絡(luò)通信模塊以及grpc服務(wù)層代碼生成程序。
26.在圖1中,網(wǎng)絡(luò)通信模塊主要用于連接服務(wù)器,與服務(wù)器進(jìn)行數(shù)據(jù)通信;而處理器1001可以調(diào)用存儲器1005中存儲的grpc服務(wù)層代碼生成程序,并執(zhí)行以下各個實(shí)施例中的步驟。
27.基于上述控制器的硬件結(jié)構(gòu),提出本發(fā)明grpc服務(wù)層代碼生成方法的各個實(shí)施例。
28.本發(fā)明實(shí)施例提供一種grpc服務(wù)層代碼生成方法。
29.請參照圖2,圖2為本發(fā)明grpc服務(wù)層代碼生成方法第一實(shí)施例的流程示意圖;在本發(fā)明第一實(shí)施例中,所述grpc服務(wù)層代碼生成方法應(yīng)用于grpc服務(wù)層代碼生成設(shè)備;所述方法包括以下步驟:步驟s10,確定當(dāng)前服務(wù)項(xiàng)目的protobuf文件和微服務(wù)代碼倉庫;在本實(shí)施例中,可以通過grpc服務(wù)層代碼生成設(shè)備來實(shí)現(xiàn),這里的grpc服務(wù)層代碼生成設(shè)備可以為個人計(jì)算機(jī)、服務(wù)器、工作站等,也可以為其他可以進(jìn)行編程的智能終端。
30.當(dāng)前服務(wù)項(xiàng)目指的是微服務(wù)項(xiàng)目,可以為基于mvc(model

view

controller,模型-視圖-控制器)框架下的微服務(wù)項(xiàng)目,當(dāng)前服務(wù)項(xiàng)目對應(yīng)生成的grpc服務(wù)層代碼可以基于go語言進(jìn)行匯編。
31.其中的protobuf文件也稱為protobuf協(xié)議文件,為谷歌公司內(nèi)部的混合語言數(shù)據(jù)標(biāo)準(zhǔn),是一種輕便高效的結(jié)構(gòu)化數(shù)據(jù)存儲格式,可以用于結(jié)構(gòu)化數(shù)據(jù)串行化,或者說序列化。它很適合做數(shù)據(jù)存儲或rpc(remote procedure call,遠(yuǎn)程過程調(diào)用)數(shù)據(jù)交換格式。可用于通訊協(xié)議、數(shù)據(jù)存儲等領(lǐng)域的語言無關(guān)、平臺無關(guān)、可擴(kuò)展的序列化結(jié)構(gòu)數(shù)據(jù)格式。
32.其中的微服務(wù)代碼倉庫指的是微服務(wù)項(xiàng)目所需要和所指向的代碼倉庫,用于保存各種微服務(wù)項(xiàng)目所需的源代碼。
33.對于如何確定當(dāng)前服務(wù)項(xiàng)目的protobuf文件,請參照圖3,在一實(shí)施例中,所述步驟s10,確定當(dāng)前服務(wù)項(xiàng)目的protobuf文件的步驟,包括:步驟s11,確定所述當(dāng)前服務(wù)項(xiàng)目的命令參數(shù);步驟s12,確定所述命令參數(shù)中的protobuf文件目錄和protobuf文件名;步驟s13,根據(jù)所述protobuf文件目錄和所述protobuf文件名確定protobuf文件。
34.在該實(shí)施例中,命令參數(shù)指的是根據(jù)當(dāng)前服務(wù)項(xiàng)目中的protobuf文件生成對應(yīng)的grpc服務(wù)層代碼的命令(指令),一般不可或缺,命令參數(shù)可以由開發(fā)人員根據(jù)不同的protobuf文件或服務(wù)項(xiàng)目進(jìn)行簡單編碼生成,也可以通過自動化工具直接生成。在命令參數(shù)中包含了protobuf文件的路徑,即protobuf文件目錄和protobuf文件名。在確定了命令參數(shù)中的protobuf文件目錄和protobuf文件名之后,進(jìn)而也就確定了當(dāng)前服務(wù)項(xiàng)目中的protobuf文件所在的位置,具體地,可以先通過protobuf文件目錄確定protobuf文件所在
的由各個protobuf文件組成的protobuf文件集合,根據(jù)protobuf文件名再從protobuf文件目錄,也就是protobuf文件集合中確定該protobuf文件的所在。通過這種檢索確定protobuf文件的方式可以代替開發(fā)人員手動查詢protobuf文件,提高查和確定protobuf文件的效率。
35.步驟s20,確定所述protobuf文件中的第一目標(biāo)參數(shù)以及確定所述微服務(wù)代碼倉庫中第二目標(biāo)參數(shù);在本實(shí)施例中,protobuf文件中的第一目標(biāo)參數(shù)可以為區(qū)別于其他protobuf文件的關(guān)鍵特征參數(shù),通常情況下,各個protobuf文件都有較為標(biāo)準(zhǔn)的框架,不同之處往往在于一些其中的特定參數(shù)上。同理,對于微服務(wù)代碼倉庫而言,由于當(dāng)前服務(wù)項(xiàng)目的特點(diǎn),也可以從微服務(wù)代碼倉庫確定與其他服務(wù)項(xiàng)目不同的一些關(guān)鍵特征參數(shù),即第二目標(biāo)參數(shù)。
36.在一實(shí)施例中,所述步驟s20,確定所述protobuf文件中的第一目標(biāo)參數(shù)的步驟,包括:解析所述protobuf文件以確定所述protobuf文件中的grpc服務(wù)名、grpc方法名、所述grpc方法名對應(yīng)的請求參數(shù)以及所述grpc方法名對應(yīng)的返回參數(shù),將所述grpc服務(wù)名、所述grpc方法名、所述請求參數(shù)以及所述返回參數(shù)作為所述第一目標(biāo)參數(shù)。
37.在該實(shí)施例中,可以通過開源的第三方工具:proto工具,來解析protobuf文件從而確定并提取出protobuf文件中的相關(guān)protobuf協(xié)議信息,即第一目標(biāo)參數(shù),在該實(shí)施例中,第一目標(biāo)參數(shù)可以包括protobuf文件中的grpc服務(wù)名、grpc方法名、grpc方法名對應(yīng)的請求參數(shù)以及grpc方法名對應(yīng)的返回參數(shù),其中的的grpc服務(wù)名對應(yīng)當(dāng)前服務(wù)項(xiàng)目的名稱和相關(guān)微服務(wù)代碼,grpc方法名對應(yīng)grpc方法內(nèi)容,即以什么樣的邏輯方式、方式實(shí)現(xiàn)對遠(yuǎn)程過程調(diào)用功能。這些第一目標(biāo)參數(shù)是protobuf文件區(qū)別于其他protobuf文件在微服務(wù)項(xiàng)目中的關(guān)鍵特征參數(shù),也是當(dāng)前服務(wù)項(xiàng)目區(qū)別于其他服務(wù)項(xiàng)目的關(guān)鍵特征參數(shù)。通過該實(shí)施例,能夠高效精確地確定和提取出protobuf文件中相關(guān)關(guān)鍵特征參數(shù),不需要人工進(jìn)行核實(shí)并根據(jù)相關(guān)參數(shù)進(jìn)行手動從零開始編碼。
38.請參照圖4,在另一實(shí)施例中,所述步驟s20,確定所述微服務(wù)代碼倉庫中第二目標(biāo)參數(shù)的步驟,包括:步驟s21,確定所述微服務(wù)代碼倉庫對應(yīng)的當(dāng)前代碼倉庫地址;步驟s22,確定所述當(dāng)前代碼倉庫地址中的代碼倉庫域名、代碼倉庫分組名以及應(yīng)用名稱;步驟s23,將所述代碼倉庫域名、所述代碼倉庫分組名以及所述應(yīng)用名稱作為第二目標(biāo)參數(shù)。
39.在該實(shí)施例中,每一微服務(wù)項(xiàng)目都有其對應(yīng)的微服務(wù)代碼倉庫,多個微服務(wù)項(xiàng)目也可以使用同一微服務(wù)代碼倉庫,對于如何在微服務(wù)代碼倉庫中確定當(dāng)前服務(wù)項(xiàng)目對應(yīng)的第二目標(biāo)參數(shù),可以先獲取與當(dāng)前服務(wù)項(xiàng)目關(guān)聯(lián)的當(dāng)前代碼倉庫地址,并解析該當(dāng)前代碼倉庫地址,在該當(dāng)前代碼倉庫地址中已經(jīng)包括了代碼倉庫域名、代碼倉庫分組名以及應(yīng)用名稱等參數(shù)在內(nèi)的相關(guān)信息,從而解析當(dāng)前代碼倉庫地址就確定了包括當(dāng)前服務(wù)項(xiàng)目對應(yīng)的代碼倉庫域名、代碼倉庫分組名以及應(yīng)用名稱在內(nèi)的第二目標(biāo)參數(shù)。比如,在一示例中,通過第三方工具獲取到當(dāng)前代碼倉庫為git@git.mycaigou.com:ycg/golang/micro-ddd-demo.git ,經(jīng)過解析之后,可以確定代碼倉庫域名為git.mycaigou.com,代碼倉庫分組名
為ycg/golang,應(yīng)用名稱為micro-ddd-demo。通過該實(shí)施例,能夠高效精確地確定和提取微服務(wù)代碼倉庫對應(yīng)的當(dāng)前代碼倉庫地址,不需要人工進(jìn)行核實(shí)并根據(jù)當(dāng)前代碼倉庫地址進(jìn)行手動從零開始編碼。
40.步驟s30,將所述第一目標(biāo)參數(shù)和所述第二目標(biāo)參數(shù)填充至預(yù)設(shè)的grpc服務(wù)層代碼模板以得到與所述protobuf文件對應(yīng)的grpc服務(wù)層代碼。
41.在預(yù)設(shè)的grpc服務(wù)層代碼模板中,有多個占位符號,各個占位符號沒有實(shí)質(zhì)內(nèi)容。確定第一目標(biāo)參數(shù)對應(yīng)的占位符號以及確定確定第二目標(biāo)參數(shù)對應(yīng)的占位符號,將各個第一目標(biāo)參數(shù)和第二目標(biāo)參數(shù)分別填充至對應(yīng)的占位符號所在的位置,并刪除原來的占位符號中的原有內(nèi)容(可以有表達(dá)各個占位符號含義的參數(shù)),從而基于第一目標(biāo)參數(shù)和第二目標(biāo)參數(shù)以及預(yù)設(shè)的grpc服務(wù)層代碼模板就自動生成了與所述protobuf文件對應(yīng)的grpc服務(wù)層代碼,也即當(dāng)前服務(wù)項(xiàng)目對應(yīng)的grpc服務(wù)層代碼。此外,對于預(yù)設(shè)的grpc服務(wù)層代碼模板,可以參考業(yè)內(nèi)通用規(guī)范結(jié)合具體的業(yè)務(wù)實(shí)際情況和編碼習(xí)慣來制定,比如目錄和文件名規(guī)范可以以小寫英文字母命名,用下劃線連接,還可以設(shè)定特定的文件名后綴,還可以一個服務(wù)層對應(yīng)一個服務(wù)項(xiàng)目,不在服務(wù)層做業(yè)務(wù)編排的規(guī)則,在此不做限制。
42.請參照圖5,在一實(shí)施例中,所述步驟s30,包括:步驟s31,確定預(yù)設(shè)的grpc服務(wù)層代碼中與所述第一目標(biāo)參數(shù)對應(yīng)的第一占位符號,以及確定預(yù)設(shè)的grpc服務(wù)層代碼中與所述第二目標(biāo)參數(shù)對應(yīng)的第二占位符號;步驟s32,將所述第一目標(biāo)參數(shù)填充至所述第一占位符號,以及將所述第二目標(biāo)參數(shù)填充至所述第二占位符號,并刪除所述第一占位符號和所述第二占位符號。
43.在該實(shí)施例中,第一目標(biāo)參數(shù)包括grpc服務(wù)名、grpc方法名、請求參數(shù)以及返回參數(shù),其分別對應(yīng)的第一占位符號可以包括:grpc服務(wù)名對應(yīng)的{{.servername}}或者${servername}、grpc方法名對應(yīng)的${rpcname}、請求參數(shù)對應(yīng)的${requestname}以及返回參數(shù)對應(yīng)的${returnname}。
44.第二目標(biāo)參數(shù)包括的代碼倉庫域名、代碼倉庫分組名以及應(yīng)用名稱,其分別對應(yīng)的第二占位符號可以包括:代碼倉庫域名對應(yīng)的{{.gitaddr}}、代碼倉庫分組名對應(yīng)的{{.groupname}}以及應(yīng)用名稱對應(yīng)的{{.appname}}。
45.在確定各個第一目標(biāo)參數(shù)分別對應(yīng)的第一占位符號,以及各個第二目標(biāo)參數(shù)分別對應(yīng)的第二占位符號之后,分別將各個第一目標(biāo)參數(shù)填充至對應(yīng)的第一占位符號,將第二目標(biāo)參數(shù)填充至對應(yīng)的第二占位符號,并刪除第一占位符號和第二占位符號中的原說明性的占位內(nèi)容,比如{{.groupname}}中的groupname。通過該實(shí)施例,能夠針對性對grpc服務(wù)層代碼模板中相關(guān)參數(shù)(占位符號)進(jìn)行準(zhǔn)確高效地替換,實(shí)現(xiàn)了自動化生成grpc服務(wù)層代碼。
46.為了進(jìn)一步了解上述實(shí)施例,在一實(shí)施例中,所述grpc服務(wù)層代碼模板包括一個grpc服務(wù)層模板和至少一個grpc方法模板,所述grpc服務(wù)層模板表征grpc服務(wù)層數(shù)據(jù),所述grpc方法模板表征grpc方法數(shù)據(jù),所述grpc服務(wù)層模板與所述grpc方法模板之間的占位符號不同。
47.在grpc服務(wù)層代碼模板中除了一些固定的代碼之外,還包括各種占位符號,如下表1所述:
表1在grpc方法模板中,除了一些固定的代碼之外,還包括各種占位符號,如下表2所述:表2通過該實(shí)施例,將grpc服務(wù)層代碼模板分為不同功能和不同占位符號的grpc服務(wù)層模板和至少一個grpc方法模板,能夠精準(zhǔn)地將獲取到的各個目標(biāo)參數(shù)填充替換到對應(yīng)模板的對應(yīng)的占位符號中,避免在通過參數(shù)填充替換占位符號以生成grpc服務(wù)層代碼的過程出錯,提高生成grpc服務(wù)層代碼的穩(wěn)定可靠性。
48.在一實(shí)施例中,所述步驟s30之后,所述方法還包括:步驟a,基于預(yù)設(shè)的目錄規(guī)范,將所述grpc服務(wù)層代碼保存至對應(yīng)的目標(biāo)目錄中;步驟b,當(dāng)接收到與所述grpc服務(wù)層代碼對應(yīng)的調(diào)用指令,執(zhí)行所述目標(biāo)目錄中的grpc服務(wù)層代碼以返回所述調(diào)用指令對應(yīng)的調(diào)用結(jié)果。
49.在該實(shí)施例中,預(yù)設(shè)的目錄規(guī)范可以根據(jù)實(shí)際需要進(jìn)行設(shè)置,目的是將不同的grpc服務(wù)層代碼有序地保存至對應(yīng)的目標(biāo)目錄中,從而在接收到與所述grpc服務(wù)層代碼對應(yīng)的調(diào)用指令時,可以快速定位對應(yīng)的grpc服務(wù)層代碼之所在,進(jìn)而以快速地響應(yīng)用戶在客戶端上各種調(diào)用指令以返回給用戶所需要的結(jié)果,實(shí)現(xiàn)了高效地遠(yuǎn)程調(diào)用。
50.本發(fā)明主要基于protobuf文件通過自動地確定和提取出其中的多個第一目標(biāo)參數(shù)以及同時確定和提取出微服務(wù)代碼倉庫中多個第二目標(biāo)參數(shù),從而分別出了當(dāng)前服務(wù)項(xiàng)目所對應(yīng)的protobuf文件中和微服務(wù)代碼倉庫中的關(guān)鍵特征參數(shù),將與其他服務(wù)項(xiàng)目相區(qū)別的第一目標(biāo)參數(shù)和所述第二目標(biāo)參數(shù)自動地填充并替換預(yù)設(shè)的grpc服務(wù)層代碼模板
中對應(yīng)的占位符號,grpc服務(wù)層代碼模板中的其他基礎(chǔ)代碼保持不變,就能夠快速高效地自動生成了與protobuf文件對應(yīng)的grpc服務(wù)層代碼,也即是與當(dāng)前服務(wù)項(xiàng)目對應(yīng)的grpc服務(wù)層代碼,基礎(chǔ)該grpc服務(wù)層代碼就可以響應(yīng)用戶在客戶端上各種遠(yuǎn)程調(diào)用操作。本發(fā)明通過將protobuf文件和微服務(wù)代碼倉庫中分別對應(yīng)的關(guān)鍵特征參數(shù)填充到grpc服務(wù)層代碼模板實(shí)現(xiàn)自動生成grpc服務(wù)層代碼的方式,不僅大幅提高了grpc服務(wù)層代碼生成效率,同時也解放了人力操作,避免人工編寫代碼出現(xiàn)的各種錯誤,統(tǒng)一了代碼編寫風(fēng)格規(guī)范,極大地降低了后期對各種grpc服務(wù)層代碼的維護(hù)成本。
51.為了進(jìn)一步理解上述各個實(shí)施例,請參照圖6,圖6為本發(fā)明grpc服務(wù)層代碼生成方法涉及的一實(shí)施例的整體流程圖;如圖6所示:1、獲取服務(wù)信息(微服務(wù)代碼倉庫中第二目標(biāo)參數(shù));2、獲取pbservice名(grpc服務(wù)名)、rpc方法名(可以為grpc方法名)、request和response參數(shù)(請求參數(shù)和返回參數(shù));3、拉取預(yù)設(shè)的grpc服務(wù)層代碼模板;4、參數(shù)替換,即將上述的各個參數(shù)替換到grpc服務(wù)層代碼模板中對應(yīng)的占位符號中;5、在參數(shù)替換之后,生成grpc服務(wù)層代碼文件和對應(yīng)的保存目錄。
52.此外,本發(fā)明還提供一種grpc服務(wù)層代碼生成裝置,請參照圖7,所述grpc服務(wù)層代碼生成裝置包括:參數(shù)提取模塊a10,用于確定當(dāng)前服務(wù)項(xiàng)目的protobuf文件和微服務(wù)代碼倉庫;確定所述protobuf文件中的第一目標(biāo)參數(shù)以及確定所述微服務(wù)代碼倉庫中第二目標(biāo)參數(shù);參數(shù)替換模塊a20,用于將所述第一目標(biāo)參數(shù)和所述第二目標(biāo)參數(shù)填充至預(yù)設(shè)的grpc服務(wù)層代碼模板以得到與所述protobuf文件對應(yīng)的grpc服務(wù)層代碼。
53.可選地,所述參數(shù)提取模塊a10,還用于:解析所述protobuf文件以確定所述protobuf文件中的grpc服務(wù)名、grpc方法名、所述grpc方法名對應(yīng)的請求參數(shù)以及所述grpc方法名對應(yīng)的返回參數(shù),將所述grpc服務(wù)名、所述grpc方法名、所述請求參數(shù)以及所述返回參數(shù)作為所述第一目標(biāo)參數(shù)。
54.可選地,所述參數(shù)提取模塊a10,還用于:確定所述微服務(wù)代碼倉庫對應(yīng)的當(dāng)前代碼倉庫地址;確定所述當(dāng)前代碼倉庫地址中的代碼倉庫域名、代碼倉庫分組名以及應(yīng)用名稱;將所述代碼倉庫域名、所述代碼倉庫分組名以及所述應(yīng)用名稱作為第二目標(biāo)參數(shù)。
55.可選地,所述參數(shù)提取模塊a10,還用于:確定所述當(dāng)前服務(wù)項(xiàng)目的命令參數(shù);確定所述命令參數(shù)中的protobuf文件目錄和protobuf文件名;根據(jù)所述protobuf文件目錄和所述protobuf文件名確定protobuf文件。
56.可選地,所述參數(shù)替換模塊a20,還用于:確定預(yù)設(shè)的grpc服務(wù)層代碼中與所述第一目標(biāo)參數(shù)對應(yīng)的第一占位符號,以及確定預(yù)設(shè)的grpc服務(wù)層代碼中與所述第二目標(biāo)參數(shù)對應(yīng)的第二占位符號;將所述第一目標(biāo)參數(shù)填充至所述第一占位符號,以及將所述第二目標(biāo)參數(shù)填充至
所述第二占位符號,并刪除所述第一占位符號和所述第二占位符號。
57.可選地,所述參數(shù)替換模塊a20,還用于:基于預(yù)設(shè)的目錄規(guī)范,將所述grpc服務(wù)層代碼保存至對應(yīng)的目標(biāo)目錄中;當(dāng)接收到與所述grpc服務(wù)層代碼對應(yīng)的調(diào)用指令,執(zhí)行所述目標(biāo)目錄中的grpc服務(wù)層代碼以返回所述調(diào)用指令對應(yīng)的調(diào)用結(jié)果。
58.可選地,所述參數(shù)提取模塊a10,還用于:所述grpc服務(wù)層代碼模板包括一個grpc服務(wù)層模板和至少一個grpc方法模板,所述grpc服務(wù)層模板表征grpc服務(wù)層數(shù)據(jù),所述grpc方法模板表征grpc方法數(shù)據(jù),所述grpc服務(wù)層模板與所述grpc方法模板之間的占位符號不同。
59.本發(fā)明grpc服務(wù)層代碼生成裝置具體實(shí)施方式與上述grpc服務(wù)層代碼生成方法各實(shí)施例基本相同,在此不再贅述。
60.此外,本發(fā)明還提供一種計(jì)算機(jī)可讀存儲介質(zhì)。本發(fā)明計(jì)算機(jī)可讀存儲介質(zhì)上存儲有g(shù)rpc服務(wù)層代碼生成程序,其中,grpc服務(wù)層代碼生成程序被處理器執(zhí)行時,實(shí)現(xiàn)如上述的grpc服務(wù)層代碼生成方法的步驟。
61.其中,grpc服務(wù)層代碼生成程序被執(zhí)行時所實(shí)現(xiàn)的方法可參照本發(fā)明grpc服務(wù)層代碼生成方法的各個實(shí)施例,此處不再贅述。
62.本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲介質(zhì)(包括但不限于磁盤存儲器、cd-rom、光學(xué)存儲器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
63.本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供這些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
64.這些計(jì)算機(jī)程序指令也可存儲在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲器中,使得存儲在該計(jì)算機(jī)可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
65.這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
66.應(yīng)當(dāng)注意的是,在權(quán)利要求中,不應(yīng)將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的部件或步驟。位于部件之前的單詞“一”或“一個”不排除存在多個這樣的部件。本發(fā)明可以借助于包括有若干不同部件的硬件以及借助于適當(dāng)編程的計(jì)算機(jī)來實(shí)現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝
置中的若干個可以是通過同一個硬件項(xiàng)來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序。可將這些單詞解釋為名稱。
67.盡管已描述了本發(fā)明的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實(shí)施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本發(fā)明范圍的所有變更和修改。
68.以上所述僅為本發(fā)明的優(yōu)選實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是在本發(fā)明的發(fā)明構(gòu)思下,利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)變換,或直接/間接運(yùn)用在其他相關(guān)的技術(shù)領(lǐng)域均包括在本發(fā)明的專利保護(hù)范圍內(nèi)。

技術(shù)特征:


1.一種grpc服務(wù)層代碼生成方法,其特征在于,所述grpc服務(wù)層代碼生成方法包括以下步驟:確定當(dāng)前服務(wù)項(xiàng)目的protobuf文件和微服務(wù)代碼倉庫;確定所述protobuf文件中的第一目標(biāo)參數(shù)以及確定所述微服務(wù)代碼倉庫中第二目標(biāo)參數(shù);將所述第一目標(biāo)參數(shù)和所述第二目標(biāo)參數(shù)填充至預(yù)設(shè)的grpc服務(wù)層代碼模板以得到與所述protobuf文件對應(yīng)的grpc服務(wù)層代碼。2.如權(quán)利要求1所述的grpc服務(wù)層代碼生成方法,其特征在于,所述確定所述protobuf文件中的第一目標(biāo)參數(shù)的步驟,包括:解析所述protobuf文件以確定所述protobuf文件中的grpc服務(wù)名、grpc方法名、所述grpc方法名對應(yīng)的請求參數(shù)以及所述grpc方法名對應(yīng)的返回參數(shù),將所述grpc服務(wù)名、所述grpc方法名、所述請求參數(shù)以及所述返回參數(shù)作為所述第一目標(biāo)參數(shù)。3.如權(quán)利要求1所述的grpc服務(wù)層代碼生成方法,其特征在于,所述確定所述微服務(wù)代碼倉庫中第二目標(biāo)參數(shù)的步驟,包括:確定所述微服務(wù)代碼倉庫對應(yīng)的當(dāng)前代碼倉庫地址;確定所述當(dāng)前代碼倉庫地址中的代碼倉庫域名、代碼倉庫分組名以及應(yīng)用名稱;將所述代碼倉庫域名、所述代碼倉庫分組名以及所述應(yīng)用名稱作為第二目標(biāo)參數(shù)。4.如權(quán)利要求1所述的grpc服務(wù)層代碼生成方法,其特征在于,所述確定當(dāng)前服務(wù)項(xiàng)目的protobuf文件的步驟,包括:確定所述當(dāng)前服務(wù)項(xiàng)目的命令參數(shù);確定所述命令參數(shù)中的protobuf文件目錄和protobuf文件名;根據(jù)所述protobuf文件目錄和所述protobuf文件名確定protobuf文件。5.如權(quán)利要求1所述的grpc服務(wù)層代碼生成方法,其特征在于,所述將所述第一目標(biāo)參數(shù)和所述第二目標(biāo)參數(shù)填充至預(yù)設(shè)的grpc服務(wù)層代碼模板以得到與所述protobuf文件對應(yīng)的grpc服務(wù)層代碼的步驟,包括:確定預(yù)設(shè)的grpc服務(wù)層代碼中與所述第一目標(biāo)參數(shù)對應(yīng)的第一占位符號,以及確定預(yù)設(shè)的grpc服務(wù)層代碼中與所述第二目標(biāo)參數(shù)對應(yīng)的第二占位符號;將所述第一目標(biāo)參數(shù)填充至所述第一占位符號,以及將所述第二目標(biāo)參數(shù)填充至所述第二占位符號,并刪除所述第一占位符號和所述第二占位符號。6.如權(quán)利要求1所述的grpc服務(wù)層代碼生成方法,其特征在于,所述將所述第一目標(biāo)參數(shù)和所述第二目標(biāo)參數(shù)填充至預(yù)設(shè)的grpc服務(wù)層代碼模板以得到與所述protobuf文件對應(yīng)的grpc服務(wù)層代碼的步驟之后,所述方法還包括:基于預(yù)設(shè)的目錄規(guī)范,將所述grpc服務(wù)層代碼保存至對應(yīng)的目標(biāo)目錄中;當(dāng)接收到與所述grpc服務(wù)層代碼對應(yīng)的調(diào)用指令,執(zhí)行所述目標(biāo)目錄中的grpc服務(wù)層代碼以返回所述調(diào)用指令對應(yīng)的調(diào)用結(jié)果。7.如權(quán)利要求1所述的grpc服務(wù)層代碼生成方法,其特征在于,所述grpc服務(wù)層代碼模板包括一個grpc服務(wù)層模板和至少一個grpc方法模板,所述grpc服務(wù)層模板表征grpc服務(wù)層數(shù)據(jù),所述grpc方法模板表征grpc方法數(shù)據(jù),所述grpc服務(wù)層模板與所述grpc方法模板之間的占位符號不同。
8.一種grpc服務(wù)層代碼生成裝置,其特征在于,所述grpc服務(wù)層代碼生成裝置包括:參數(shù)提取模塊,用于確定當(dāng)前服務(wù)項(xiàng)目的protobuf文件和微服務(wù)代碼倉庫;確定所述protobuf文件中的第一目標(biāo)參數(shù)以及確定所述微服務(wù)代碼倉庫中第二目標(biāo)參數(shù);參數(shù)替換模塊,用于將所述第一目標(biāo)參數(shù)和所述第二目標(biāo)參數(shù)填充至預(yù)設(shè)的grpc服務(wù)層代碼模板以得到與所述protobuf文件對應(yīng)的grpc服務(wù)層代碼。9.一種grpc服務(wù)層代碼生成設(shè)備,其特征在于,所述grpc服務(wù)層代碼生成設(shè)備包括處理器、存儲器、以及存儲在所述存儲器上的可被所述處理器執(zhí)行的grpc服務(wù)層代碼生成程序,其中,所述grpc服務(wù)層代碼生成程序被所述處理器執(zhí)行時,實(shí)現(xiàn)如權(quán)利要求1至7中任一項(xiàng)所述的grpc服務(wù)層代碼生成方法的步驟。10.一種計(jì)算機(jī)可讀存儲介質(zhì),其特征在于,所述計(jì)算機(jī)可讀存儲介質(zhì)上存儲有g(shù)rpc服務(wù)層代碼生成程序,其中,所述grpc服務(wù)層代碼生成程序被處理器執(zhí)行時,實(shí)現(xiàn)如權(quán)利要求1至7中任一項(xiàng)所述的grpc服務(wù)層代碼生成方法的步驟。

技術(shù)總結(jié)


本發(fā)明公開了一種GRPC服務(wù)層代碼生成方法、裝置、設(shè)備及存儲介質(zhì),屬于代碼轉(zhuǎn)換技術(shù)領(lǐng)域。所述方法包括步驟:確定當(dāng)前服務(wù)項(xiàng)目的protobuf文件和微服務(wù)代碼倉庫;確定所述protobuf文件中的第一目標(biāo)參數(shù)以及確定所述微服務(wù)代碼倉庫中第二目標(biāo)參數(shù);將所述第一目標(biāo)參數(shù)和所述第二目標(biāo)參數(shù)填充至預(yù)設(shè)的GRPC服務(wù)層代碼模板以得到與所述protobuf文件對應(yīng)的GRPC服務(wù)層代碼。通過將本發(fā)明,大幅提高了GRPC服務(wù)層代碼生成效率,避免人工編寫代碼出現(xiàn)的各種錯誤,統(tǒng)一了代碼編寫風(fēng)格規(guī)范,極大地降低了后期對各種GRPC服務(wù)層代碼的維護(hù)成本。成本。成本。


技術(shù)研發(fā)人員:

劉秀聰

受保護(hù)的技術(shù)使用者:

深圳市明源云采購科技有限公司

技術(shù)研發(fā)日:

2022.11.16

技術(shù)公布日:

2022/12/23


文章投稿或轉(zhuǎn)載聲明

本文鏈接:http://m.newhan.cn/zhuanli/patent-1-63524-0.html

來源:專利查詢檢索下載-實(shí)用文體寫作網(wǎng)版權(quán)所有,轉(zhuǎn)載請保留出處。本站文章發(fā)布于 2022-12-26 11:44:34

發(fā)表評論

驗(yàn)證碼:
用戶名: 密碼: 匿名發(fā)表
評論列表 (有 條評論
2人圍觀
參與討論