[golang grpc] 框架介绍
官方网站
http://www.grpc.io/docs/quickstart/go.html
grpc安装
• go安装
目前grpc需要go 1.5以上版本支持。go安装可以参考:http://www.cnblogs.com/heartchord/p/5127503.html。
• protocol buffer安装
protocol buffer和go插件安装可以参考:http://www.cnblogs.com/heartchord/p/5337863.html。
• grpc安装
go get google.golang.org/grpc
• 官方例子测试
grpc包下自带测试例子,路径为google.golang.org/grpc/examples,我们使用例子下的helloworld工程进行测试。
▶ 编译server和client:
go install google.golang.org\grpc\examples\helloworld\greeter_server
go install google.golang.org\grpc\examples\helloworld\greeter_client
▶ 开启两个控制台分别运行greeter_server.exe和greeter_client.exe:
helloworld工程分析
• .proto和.pb.go文件
使用过protobuf就会知道,无论什么工程都需要一个.proto文件来定义数据的结构,该文件经过protoc.exe输出即可得到对应语言的源代码文件,例如c++得到的就是xxxx.pb.h和xxxx.pb.cc文件。而对于golang,则需要上述的插件支持,对应得到的是xxxx.pb.go文件。
官方文档:
https://developers.google.com/protocol-buffers/docs/proto3
https://developers.google.com/protocol-buffers/docs/gotutorial
▶ proto文件中HelloRequest和HelloReply消息将被转换为go语言结构体,并自动添加了一些成员函数。
▶ proto文件中Greeter服务将自动生成GreeterClient和GreeterServer接口,其中GreeterClient将拥有一个内部类型greeterClient,greeterClient定义了SayHello的具体行为;而GreeterServer中的SayHello需要自行定义。
▶ greeterClient定义的SayHello具体行为核心一点为调用服务端的SayHello函数:
▶ 服务端需要定义SayHello的具体行为:
• pb.go文件生成命令
// cd $GOPATH/src/google.golang.org/grpc/examples/helloworld
protoc -I helloworld/ helloworld/helloworld.proto --go_out=plugins=grpc:helloworld
最新文章
- SDWebImage添加header
- jrebel实现tomcat热部署
- 使用gnucash查看任意时间段内的所有者权益变动表
- JS匿名函数的理解
- acdream1197 Points In Cuboid
- linux设置和查看环境变量的方法
- Linux02--文件系统与磁盘管理
- Swift - 使用NSURL进行数据的提交和获取(POST与GET)
- instanceof typeof
- JS判断doctype文档模式-document.compatMode
- XML中文乱码问题
- Django之modelform组件
- linkin大话数据结构--Set
- Win 及 Linux 查找mac地址的方法
- 腾讯云centos服务器不能登录的解决过程
- 老男孩Python全栈学习 S9 日常作业 007
- SQL Server同一表不同列数据同步
- go语言之进阶篇Read的使用
- Linux下Miniconda量化环境安装
- 005 Ajax中使用jquery实现三种格式的信息
热门文章
- python2.0_day18_Django自带的用户认证模块的使用
- VS添加命令行参数main(int argc, char** argv)
- Intel S5000VSA(SAS)主板设置RAID 步骤【转】
- 使用类/结构体时关于ZeroMomery用法错误
- 【黑金原创教程】【Modelsim】Modelsim原创教程连载导读【连载完成,共六章】
- Weinre 远程调试移动端手机web页面
- 基于TINY4412的Andorid开发-------简单的LED灯控制
- cocos2dx3.1从零学习(二)菜单、场景切换、场景传值
- Redis高级进阶
- postgresql数据库创建、修改、删除