首页 > 其他分享 >这次终于搞清楚了,关于 protoc 工具的小问题

这次终于搞清楚了,关于 protoc 工具的小问题

时间:2024-09-14 12:23:38浏览次数:11  
标签:插件 protoc 搞清楚 grpc go 工具 gen out


protoc 工具可以干什么?

protoc 工具可以 通过相关插件 将 .proto 文件编译成 CC++GolangJavaPythonPHP 等多种语言的代码。

本文主要讨论通过 protoc 生成 Golang 代码,例如我们常见的命令:

protoc -I . --go_out=xxx

想了解更多参数,执行 protoc --help 查看。

遇到的小问题

一、如何知道 protoc 使用的什么插件?

例如:--go_out 使用的是什么插件?

最终了解到使用的是 protoc-gen-go 插件。

例如:--go-grpc_out 使用的是什么插件?

最终了解到使用的是 protoc-gen-go-grpc 插件。

也通过使用其他插件,总结出一个规律:

  • go_out 对应 protoc-gen-go 插件;
  • go-grpc_out 对应 protoc-gen-go-grpc 插件;
  • ...
  • *_out 对应 protoc-gen-* 插件;

二、例如新老项目使用的 protoc-gen-go 插件版本不同怎么办?

我能想到两个方案解决:

  1. 通过两个环境去完成,例如,打两个 docker 环境,新项目在一个环境中生成,旧项目在另一个环境中生成。
  2. 通过区分插件名称去完成,例如,将新版本命名为 protoc-gen-go-new,将旧版本命名为 protoc-gen-go-old,生成新版本时使用 --go-new_out,生成旧版本时使用 --go-old_out

很显然,第 2 个方案成本更小。

三、protoc-gen-goprotoc-gen-go-grpc 这两个插件有什么不同?

当使用参数 --go_out=plugins=grpc:xxx 生成时,生成的文件 *.pb.go 包含消息序列化代码和 gRPC 代码。

当使用参数 --go_out=xxx --go-grpc_out=xxx 生成时,会生成两个文件 *.pb.go*._grpc.pb.go ,它们分别是消息序列化代码和 gRPC 代码。

为什么会存在这两种生成方式?它们有什么不同?这是我查询到的资料:

这次终于搞清楚了,关于 protoc 工具的小问题_版本号

原文:https://stackoverflow.com/questions/64828054/differences-between-protoc-gen-go-and-protoc-gen-go-grpc

四、protoc 和 protoc-gen-xxx 插件 和 grpc 和 protobuf 在选择哪个版本组合使用时,有没有推荐组合的版本号?

例如,组合的版本号为:

  • protoc v3.18.1
  • protoc-gen-go v1.27.1
  • protoc-gen-go-grpc v1.1.0
  • grpc v1.41.0
  • protobuf v1.27.1

关于上述的版本号,有没有官方文档推荐使用的版本组合?

有朋友们知道吗?欢迎留言评论 ~

标签:插件,protoc,搞清楚,grpc,go,工具,gen,out
From: https://blog.51cto.com/u_15183360/12015801

相关文章

  • 代理工具
    nc简介Netcat是一个简单的Unix工具,用于在TCP或UDP协议上读取和写入数据。由于其简单、灵活的特性,它经常被用于网络调试或在各种网络脚本中。TCP协议概述TCP(传输控制协议)是一种面向连接的协议,用于在网络上可靠地传输数据。它提供了一种可靠的、有序的、基于字节流的数据传输服......
  • 安卓玩机工具-----多设备同时投屏操控的安卓手机设备投屏工具 工作室推荐
    多设备QtScrcpy投屏工具        对于安卓设备较多的机型。在电脑端实时操作必备工具。他可以同时投屏连接到当前电脑端的安卓设备,而且可以同时操作。对于工作室或者多安卓设备玩家推荐使用。工具特点           QtScrcpy是一款在Scrc......
  • GIS进阶-Openlayers、Vue+Openlayers、Leaflet、Geoserver、PostGis、Java集成Geotool
    场景作为一名非专业GIS开发者,在日常企业级开发中遇到GIS领域相关业务需求时,参考资料较少,各种体系生态不明确。往往因为错过了好多大神封装好的工具、借口、三方框架、api等白白浪费时间。最主要的是此专栏会持续更新,毕竟GIS的知识体系远不止如此,后续会持续记录、共同积累、共同......
  • 软件测试的步骤、工具及预期结果介绍
    软件测试是确保软件质量、性能和可靠性的重要过程。它涉及多个步骤,使用各种工具,并期望达到特定的结果。以下是软件测试的详细描述: 一、软件测试的步骤1.需求分析:在测试之前,先要理解软件的需求规格说明书(SRS),明确软件的功能、性能、安全性等要求。2.测试计划:基于需求分析,制......
  • modbus调试助手/mqtt调试工具/超轻巧物联网组件/多线程实时采集/各种协议支持
    一、前言说明搞物联网开发很多年,用的最多的当属modbus协议,一个稳定好用的物联网组件是物联网平台持续运行多年的基石,所以这个物联网组件从一开始就定位于自研,为了满足各种场景的需求,当然最重要的一点就是大大提升了自己对该协议的深度理解和应用,尤其是面对各种场景需求,逐步调整迭......
  • 最新微信群发群发引流工具,解放双手快速引流
    本文介绍了一款微信群管理助手软件,该软件提供了一系列自动化功能,旨在帮助用户更高效地管理微信群和好友。功能概述微信群管理助手软件是一款专为微信用户设计的管理工具,通过自动化技术简化微信群的日常操作。主要功能一键自动加微信群:快速加入多个微信群,提高社交效......
  • 最新微信群发群发引流工具,解放双手快速引流
    本文介绍了一款微信群管理助手软件,该软件提供了一系列自动化功能,旨在帮助用户更高效地管理微信群和好友。功能概述微信群管理助手软件是一款专为微信用户设计的管理工具,通过自动化技术简化微信群的日常操作。主要功能一键自动加微信群:快速加入多个微信群,提高社交效......
  • 强!推荐一款Python开源自动化脚本工具:AutoKey!
    1、前言在数字化时代,自动化工具成为了提升工作效率和生产力的重要手段。Python作为一种广泛使用的编程语言,以其强大的功能和易用性受到许多开发者的青睐。而今天给大家推荐一款开源的自动化脚本工具:AutoKey。结合Python的强大编程能力与AutoKey的任务自动化特性,用户可以高效地......
  • uniapp精仿支付宝UI界面,首页/理财/消息/生活/口碑/我的,还有模拟支付宝扫码支付/收付款
    uniapp精仿支付宝UI界面,首页/理财/消息/生活/口碑/我的,还有模拟支付宝扫码支付/收付款等功能,界面漂亮颜值高,视频商城小工具等,蚂蚁森林种树养鸡农场偷菜样样齐用于视频,商城,直播,聊天等sumer-alipay介绍uniapp精仿支付宝UI界面,首页/理财/消息/生活/口碑/我的,还有模拟支付宝......
  • CANoe_CDD_DTC_Excel辅助导入工具
    1、工具背景介绍        VectorCANDelaStudio10中关于DTC使用Vector提供的标准模板可以快速导入DTC,这个方面可以自行百度学习。今天我们介绍在拿到客户的诊断问卷调查表之后,将相关信息快速导入到模板Excel然后再导入到CDD中。2、工具UI1、诊断问卷中调取的规则2......