背景

工作中对接对方服务是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. 和小哥哥一起刷洛谷(7) 图论之dijkistra算法

    关于dijkstra 维基百科 戴克斯特拉算法(英语:Dijkstra's algorithm,又译迪杰斯特拉算法)由荷兰计算机科学家艾兹赫尔·戴克斯特拉在1956年提出.戴克斯特拉算法使用了广度优先 ...

  2. virtualBox虚拟机Ubuntu系统与主机Windows共享文件夹

    1.在virtualBox虚拟机中安装Ubuntu系统 2.打开虚拟机后,安装VirtualBox增强功能包(VBoxGuestAdditions),参照下图,如果确认已经安装就直接跳过至第4步. 3 ...

  3. linux清除git账号密码

    执行vi ~/.git-credentials,可以看到被保存的账号密码,删掉或者修改都可以了! eg:http://账号:密码@git仓库http地址

  4. linux网卡参数NM_CONTROLLED【转】

    安装操作系统时,自动生成的网卡配置文件,/etc/sysconfig/network-scripts/ifcfg-eth0里面有如下的参数:NM_CONTROLLED=yes说明 Network ma ...

  5. face morhper

    图像变形背后的想法很简单.给定两个图像,我们想通过将图像和混合来创建中间图像.图像的混合和由参数控制的是在0和1之间().当为0时,变形看起来像,而当为1 时,变形看起来像.天真的,您可以在每个像素上 ...

  6. [转]BigDecimal使用(整理)

    原文地址:https://www.jianshu.com/p/2947868d76eb 应用场景 大多数的商业计算中,一般采用java.math.BigDecimal类来进行精确计算.比如:货币 使用 ...

  7. 小D课堂 - 零基础入门SpringBoot2.X到实战_第4节 Springboot2.0单元测试进阶实战和自定义异常处理_17、SpringBootTest单元测试实战

    笔记 1.@SpringBootTest单元测试实战     简介:讲解SpringBoot的单元测试         1.引入相关依赖              <!--springboot程 ...

  8. linux安装Erlang

    Erlang一种通用的面向并发的编程语言. 1.安装Erlang编译依赖: yum -y install gcc glibc-devel make ncurses-devel openssl-deve ...

  9. Java Utils工具类大全

    源码和jar见:https://github.com/evil0ps/utils #Java Utils --- 封装了一些常用Java操作方法,便于重复开发利用. 另外希望身为Java牛牛的你们一起 ...

  10. Qt编写气体安全管理系统23-类型设置

    一.前言 类型设置这个功能模块大大拓展了整个系统的灵活性,将整个系统中所有用到的控制器型号.探测器数量.探测器型号.气体种类.气体符号都存储到数据库表中,用户在类型设置中可以自由添加删除和修改,这样后 ...