背景
工作中对接对方服务是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即可使用了。
原文地址:https://www.cnblogs.com/whoisrain/p/11508150.html