背景

工作中对接对方服务是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>

客户端:

通过protocprotoc-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即可使用了。

grpc proto文件生成java、.net实体类以及客户端代码的更多相关文章

  1. (转) 使用jdk的xjc命令由schema文件生成相应的实体类

    背景:在webservice的开发过程中涉及到这一知识点,又必要来学习一下. 1 根据编写的schema来生成对应的java实体 1.1 实战 xcj命令有schema文件生成Java实体类 1.使用 ...

  2. 【grpc proto】python使用proto文件生成简易的服务端和客户端

    1.安装python-grpc(注意,是grpcio包,不是grpc包!) pip install grpcio 2.编写.proto文件 grpc教程:http://doc.oschina.net/ ...

  3. XSD文件生成C#VO实体类

    最近公司要做一个项目,需要和现有的其他项目对接,由于不知道他们的数据库,只有XSD文件.所以,我们在修改相应的程序时,就需要根据他们提供的XSD文件,来写我们的VO实体类,由于我写过根据Oracle数 ...

  4. 使用jdk的xjc命令由schema文件生成相应的实体类

    xjc D:\operate-process.xsd -d D:\workspace\wmsc\src\main\java -p com.yd.wmsc.util operate-process.xs ...

  5. 5.7 Liquibase:与具体数据库独立的追踪、管理和应用数据库Scheme变化的工具。-mybatis-generator将数据库表反向生成对应的实体类及基于mybatis的mapper接口和xml映射文件(类似代码生成器)

    一. liquibase 使用说明 功能概述:通过xml文件规范化维护数据库表结构及初始化数据. 1.配置不同环境下的数据库信息 (1)创建不同环境的数据库. (2)在resource/liquiba ...

  6. 高速创建和mysql表相应的java domain实体类

    今天创建了一个表有十几个字段,创建完之后必定要写一个与之相应的java domain实体类. 这不是反复的工作吗?为什么不先把这个表的全部的字段查出来,然后放到linux环境下,用sed工具在每一行的 ...

  7. c#实例化继承类,必须对被继承类的程序集做引用 .net core Redis分布式缓存客户端实现逻辑分析及示例demo 数据库笔记之索引和事务 centos 7下安装python 3.6笔记 你大波哥~ C#开源框架(转载) JSON C# Class Generator ---由json字符串生成C#实体类的工具

    c#实例化继承类,必须对被继承类的程序集做引用   0x00 问题 类型“Model.NewModel”在未被引用的程序集中定义.必须添加对程序集“Model, Version=1.0.0.0, Cu ...

  8. 使用T4模板生成MySql数据库实体类

    注:本文系作者原创,但可随意转载. 现在呆的公司使用的数据库几乎都是MySQL.编程方式DatabaseFirst.即先写数据库设计,表设计按照规范好的文档写进EXCEL里,然后用公司的宏,生成建表脚 ...

  9. Myeclipse 10使用hibernate生成注解(annotation)实体类

    以MySQL数据库为例,请在数据库里面建好对应的表. 1.配置数据库链接 打开Myelipse Database Explorer视图 Window-->Open Perspective--&g ...

随机推荐

  1. vue + .net core 项目,源码在GitHub 希望对大家有所帮助

    一. github UI库 : iview 前端部分 vue .net core + DI + EF(dbfirst) 后端API 部分 .Net Core 二. 往期相关博客 SqlServer 获 ...

  2. template里面要做数据渲染,但是数据还没有出来

    <el-dialog title="企业详情" :visible.sync="showEditPayment" @close="closeDia ...

  3. 数组不能用for each ,

    数组不能用for each 不能用这 for(String xkz:xkzzj){ SjshdcDTO sjshdcDTO = cpcyService.findSjshdcDTOById(xkz); ...

  4. js中引入js

    第一个js文件(被引入的js文件),文件名one.js,内容如下 function alertInOne(){    alert('in one');} 第二个js文件,文件名two.js,内容如下 ...

  5. 【JVM】虚拟机字节码执行引擎

    概念模型上,典型的帧栈结构如下(栈是线程私有的,也就是每个线程都会有自己的栈).                     典型的帧栈结构 局部变量表 存放方法参数和方法内部定义的局部变量.在编译阶段, ...

  6. Centos7 中查找文件、目录、内容

    1.查找文件 find / -name ‘filename’ 2.查找目录 find / -name ‘path’ -type d 3.查找内容 find . | xargs grep -ri ‘co ...

  7. Windows和Linux下putenv()函数导致composer更新失败

    bug复现: 原因: putenv() 函数设置特定的环境变量有可能是一个潜在的安全漏洞,所以这个函数在php配置文件中是默认禁止的,在 php.ini 中查找此函数,然后将此函数删除掉,重载配置即可 ...

  8. PEP 476 -- Enabling certificate verification by default for stdlib http clients

    SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate ch ...

  9. MiniUI增删改查操作及确认按钮

    原文:https://blog.csdn.net/codezdx/article/details/81565043 1.动态创建列:尽量不要直接在html文件里创建列,动态设置在js文件里方面添加.修 ...

  10. 漫谈企业应用架构的演变 CRM & etc

    漫谈企业应用架构的演变 goYangKunhttps://mp.weixin.qq.com/s?__biz=MzIzMTc3NTA2NQ==&mid=2247483698&idx=1& ...