這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
官方網站
http://www.grpc.io/
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_servergo 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/helloworldprotoc -I helloworld/ helloworld/helloworld.proto --go_out=plugins=grpc:helloworld