背景
工作中對接對方服務是GRPC,對方只提供了proto契約文件,需要自己生成對應的實體類以及客戶端代碼,故記錄下操作流程。
Java 代碼生成
實體類:
通過protoc
插件生成實體類
在 https://github.com/protocolbuffers/protobuf/releases 下載對應版本的protoc工具解壓,我這邊用的是3.1.0版本的
proto文件拷貝至protoc同目錄,執行如下命令:
protoc --java_out=./java/ hello.proto
對應生成的文件:
maven pom引用:
<dependencies>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-protobuf</artifactId>
<version>1.17.1</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-stub</artifactId>
<version>1.17.1</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-auth</artifactId>
<version>1.17.1</version>
</dependency>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>3.1.0</version>
</dependency>
</dependencies>
客戶端:
通過protoc
、 protoc-gen-grpc-java
兩個插件生成客戶端代碼
protoc
插件用上面下載好的,protoc-gen-grpc-java
下載地址:https://mvnrepository.com/artifact/io.grpc/protoc-gen-grpc-java
選擇對應版本后(我這邊是1.17.1),點file下載windows下的插件 protoc-gen-grpc-java-1.17.1-windows-x86_64.exe
然后cmd輸入命令:
protoc --plugin=protoc-gen-grpc-java=D:\protoc-gen-grpc-java-1.17.1-windows-x86_64.exe --grpc-java_out=./java/ hello.proto
沒有報錯則會生成HelloGrpc.java,即為客戶端代碼
C# 代碼生成
實體類
由於C#只用到了實體類向java服務轉發,顧沒有生成客戶端代碼的部分,同樣適用protoc插件生成,注意protoc插件版本需要和Google.Protobuf.dll
版本保持一致,否則編譯可能會失敗,我這邊對應的版本是3.2.0,對應下載3.2.0的插件后執行命令:
protoc --csharp_out=./csharp/ hello.proto
生成 Hello.cs即可使用了。