在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
gRPC是一个高性能、通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计,基于ProtoBuf(Protocol Buffers)序列化协议开发,且支持众多开发语言。gRPC提供了一种简单的方法来精确地定义服务和为iOS、Android和后台支持服务自动生成可靠性很强的客户端功能库。客户端充分利用高级流和链接功能,从而有助于节省带宽、降低的TCP链接次数、节省CPU使用、和电池寿命。
这次看到的例子来自: gRPC in 3 minutes (Go)
分别获得客户端和服务器端的代码如下:
强大的IDL特征 gRPC使用ProtoBuf来定义服务,ProtoBuf是由Google开发的一种数据序列化协议(类似于XML、JSON、hessian)。ProtoBuf能够将数据进行序列化,并广泛应用在数据存储、通信协议等方面。 这里例子中IDL文件用的是这个:https://github.com/grpc/grpc-common/blob/master/protos/helloworld.proto 我们这里直接用已经基于这个proto文件生产的Go文件: https://github.com/grpc/grpc-common/blob/master/go/helloworld/helloworld.pb.go 这里我们没有用 protoc 工具。
由于墙的原因,我们一些依赖的包文件可以通过下面方式下载到: 在 github 可以找到源码,下载后复制到对应目录即可的: google.golang.org/grpc 对应的代码地址在: https://github.com/grpc/grpc-go google.golang.org/cloud/compute/metadata 对应的代码地址在: https://github.com/GoogleCloudPlatform/gcloud-golang golang.org/x/oauth2 对应的代码地址在: https://github.com/golang/oauth2 golang.org/x/net/context 对应的代码地址在: https://github.com/golang/net 这里的包导入时候, 可能会收到下面错误: code in directory /Users/ghj1976/project/mygocode/src/github.com/grpc/grpc-go expects import "google.golang.org/grpc"
原因: http://stackoverflow.com/questions/27344013/go-get-error-cant-load-package
https://github.com/tools/godep/issues/156 我们这里可以忽略这个错误, 下载好后,copy过去。 这些包的源码也可以通过 http://gopm.io/ 或者 http://golangtc.com/download/package 进行下载.
go get –a 这样的命令, –a 参数是go install的参数,不是go get的参数。 参考: https://github.com/astaxie/build-web-application-with-golang/blob/master/zh/01.3.md
服务器端代码 注意我这里为了方便查看,增加每次请求打印一条信息: 客户端代码: |
请发表评论