0、转载go-zerodocker-compose搭建课件服务(一):编写服务api和proto0.1源码地址https://github.com/liuyuede123/go-zero-courseware1、创建项目目录mkdirgo-zero-coursewarecdgo-zero-courseware2、安装goctl#安装GOPROXY=https://goproxy.cn/,directgoinstallgithub.com/zeromicro/go-zero/tools/goctl@latest#mac放到/usr/local/bin/下面ln-s~/go/bin/goctl/u
0、转载go-zerodocker-compose搭建课件服务(一):编写服务api和proto0.1源码地址https://github.com/liuyuede123/go-zero-courseware1、创建项目目录mkdirgo-zero-coursewarecdgo-zero-courseware2、安装goctl#安装GOPROXY=https://goproxy.cn/,directgoinstallgithub.com/zeromicro/go-zero/tools/goctl@latest#mac放到/usr/local/bin/下面ln-s~/go/bin/goctl/u
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!cnblogs博客zhihuGithub公众号:一本正经的瞎扯首先,我希望所有golang中用于http请求响应的结构,都使用proto3来定义。麻烦的是,有的情况下某个字段的类型可能是动态的,对应的JSON类型可能是number/string/boolean/null中的其中一种。一开始我尝试用proto.Any类型,就像这样:import"google/protobuf/any.proto";messageMyRequest{google.protobuf.Anyuser_input=1;//用户可能输入number/s
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!cnblogs博客zhihuGithub公众号:一本正经的瞎扯首先,我希望所有golang中用于http请求响应的结构,都使用proto3来定义。麻烦的是,有的情况下某个字段的类型可能是动态的,对应的JSON类型可能是number/string/boolean/null中的其中一种。一开始我尝试用proto.Any类型,就像这样:import"google/protobuf/any.proto";messageMyRequest{google.protobuf.Anyuser_input=1;//用户可能输入number/s
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!cnblogs博客zhihuGithub公众号:一本正经的瞎扯我在多进程插件框架hashicorp/go-plugin的基础上,使用protoreflect来解析proto3语法的IDL文件,通过命令行工具自动生成多进程框架的callee和caller代码。项目的地址请看:https://github.com/ahfuzhang/go-plugin/tree/main/examples/code_generator并且已经提了PR到官方。golang自身的plugin还非常的弱,主要有这些限制:其插件的编译环境必须与宿主进程
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!cnblogs博客zhihuGithub公众号:一本正经的瞎扯我在多进程插件框架hashicorp/go-plugin的基础上,使用protoreflect来解析proto3语法的IDL文件,通过命令行工具自动生成多进程框架的callee和caller代码。项目的地址请看:https://github.com/ahfuzhang/go-plugin/tree/main/examples/code_generator并且已经提了PR到官方。golang自身的plugin还非常的弱,主要有这些限制:其插件的编译环境必须与宿主进程
proto是在当今使用最广泛的IDL之一,起因是dubbo3的Triple协议需要用到proto文件来生成统一规范的跨语言代码,Grpc也有类似的问题,想想一个团队有很多的业务模块,涉及到一些相互调用依赖的问题,如A模块需要用到B模块的接口,就需要找到B模块开发者,请告知一下B模块相关的proto文件是哪些,我需要copy到A模块来生成客户端调用代码,虽说这个场景单看起来条理是清晰的,后续如果越来越多的模块需要相互引用依赖,版本变更,昨天提供给你的proto文件今天已经被提供者加了字段或者删减了字段,需要一一通知到位,并需要重新copy最新的proto文件给使用者,如果B模块又依赖了C模块,这
proto是在当今使用最广泛的IDL之一,起因是dubbo3的Triple协议需要用到proto文件来生成统一规范的跨语言代码,Grpc也有类似的问题,想想一个团队有很多的业务模块,涉及到一些相互调用依赖的问题,如A模块需要用到B模块的接口,就需要找到B模块开发者,请告知一下B模块相关的proto文件是哪些,我需要copy到A模块来生成客户端调用代码,虽说这个场景单看起来条理是清晰的,后续如果越来越多的模块需要相互引用依赖,版本变更,昨天提供给你的proto文件今天已经被提供者加了字段或者删减了字段,需要一一通知到位,并需要重新copy最新的proto文件给使用者,如果B模块又依赖了C模块,这
1、?说明在上一篇文章gRPC之.Net6中的初步使用介绍中,我们简单的介绍了gRPC在服务端、客户端以及Web项目中的使用。有一个问题,不知道大家发现没有,就是不管在服务端项目还是客户端项目中,我们都需要创建相同的proto协议文件,这样就会显得很麻烦,有没有一种办法只创建一次proto协议文件呢?答案是肯定的:有。在介绍实现之前,建议大家先查看一下前一篇文章gRPC之.Net6中的初步使用介绍,方便后面关联性的讲解。2、?实现2.1、?新建类库项目首先我们新建一个名称为Quber.Grpc.Common的类库项目,目的就是用于存放proto协议文件和协议文件生成的对应类文件,如下图所示:2
1、?说明在上一篇文章gRPC之.Net6中的初步使用介绍中,我们简单的介绍了gRPC在服务端、客户端以及Web项目中的使用。有一个问题,不知道大家发现没有,就是不管在服务端项目还是客户端项目中,我们都需要创建相同的proto协议文件,这样就会显得很麻烦,有没有一种办法只创建一次proto协议文件呢?答案是肯定的:有。在介绍实现之前,建议大家先查看一下前一篇文章gRPC之.Net6中的初步使用介绍,方便后面关联性的讲解。2、?实现2.1、?新建类库项目首先我们新建一个名称为Quber.Grpc.Common的类库项目,目的就是用于存放proto协议文件和协议文件生成的对应类文件,如下图所示:2