1. Installationsprotokoll
Download-Adresse: https://github.com/protocolbuffers/protobuf/release
(Hinweis: https://github.com /protocolbuffers/protobuf ist die Quellcodebibliothek. Wenn die Quellcodebibliothek zum Herunterladen zu langsam ist, können Sie sie in Code Cloud durchsuchen. Die Downloadgeschwindigkeit ist relativ hoch Natürlich können Sie es auch selbst in der Code Cloud erstellen.)
Die neueste Version ist 3.12.2
Ich habe ein Windows 10 64-Bit-Betriebssystem, also wähle ich die Version: protoc-3.12.2-win64.zip
Sie können es direkt mit dem Browser herunterladen
Wenn die Netzwerkgeschwindigkeit nicht gut ist, können Sie es auch mit Thunder herunterladen: https://github.com/protocolbuffers/protobuf/releases/download/v3.12.2/protoc-3.12. 2-win64.zip
Nach der Dekomprimierung kopieren Sie protoc.exe in das Verzeichnis $GOPATH/bin. Weiter
Wenn mehrere GOPATHs vorhanden sind, platzieren Sie diese im GOPATH, wo sich die öffentliche Bibliothek eines Drittanbieters befindet, damit mehrere Projekte sie verwenden können
2. Installieren Sie gRPC
gRPC-Quellcode: https://github.com/grpc/grpc -go.git
Die auf der offiziellen Website angegebene Installationsmethode lautet: go get -u google.golang.org/grpc
In China tritt jedoch häufig der folgende Fehler auf:
$ go get -u google.golang.org/grpc package google.golang.org/grpc: unrecognized import path "google.golang.org/grpc" (https fetch: Get https://google.golang.org/grpc?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)
Da der Zugriff auf google.golang.org in China schwierig ist, schlägt der Download fehl.
Die offizielle Website bietet auch mehrere Lösungen:
https://github.com/grpc/grpc-go
Wir verwenden die zweite Methode, um den Quellcode direkt lokal zu klonen
Geben Sie das Verzeichnis $GOPATH/src ein und führen Sie den Befehl aus:
git clone https://github.com/grpc/grpc-go.git $GOPATH/src/google.golang.org/grpc
Die Download-Geschwindigkeit ist manchmal schnell und manchmal langsam. Sie können den Vorgang abbrechen und erneut starten, dann wird es gelegentlich schneller.
Nachdem der Download abgeschlossen ist, installieren Sie gRPC:
ASUS@LAPTOP-V7SMQSCI MINGW64 ~/go/src $ go install google.golang.org/grpc/ google.golang.org\grpc\credentials\credentials.go:31:2: cannot find package "github.com/golang/protobuf/proto" in any of: D:\Go\src\github.com\golang\protobuf\proto (from $GOROOT) C:\Users\ASUS\go\src\github.com\golang\protobuf\proto (from $GOPATH) google.golang.org\grpc\internal\binarylog\method_logger.go:28:2: cannot find package "github.com/golang/protobuf/ptypes" in any of: D:\Go\src\github.com\golang\protobuf\ptypes (from $GOROOT) C:\Users\ASUS\go\src\github.com\golang\protobuf\ptypes (from $GOPATH) google.golang.org\grpc\binarylog\grpc_binarylog_v1\binarylog.pb.go:9:2: cannot find package "github.com/golang/protobuf/ptypes/duration" in any of: D:\Go\src\github.com\golang\protobuf\ptypes\duration (from $GOROOT) C:\Users\ASUS\go\src\github.com\golang\protobuf\ptypes\duration (from $GOPATH) google.golang.org\grpc\binarylog\grpc_binarylog_v1\binarylog.pb.go:10:2: cannot find package "github.com/golang/protobuf/ptypes/timestamp" in any of: D:\Go\src\github.com\golang\protobuf\ptypes\timestamp (from $GOROOT) C:\Users\ASUS\go\src\github.com\golang\protobuf\ptypes\timestamp (from $GOPATH) google.golang.org\grpc\internal\transport\controlbuf.go:28:2: cannot find package "golang.org/x/net/http2" in any of: D:\Go\src\golang.org\x\net\http2 (from $GOROOT) C:\Users\ASUS\go\src\golang.org\x\net\http2 (from $GOPATH) google.golang.org\grpc\internal\transport\controlbuf.go:29:2: cannot find package "golang.org/x/net/http2/hpack" in any of: D:\Go\src\golang.org\x\net\http2\hpack (from $GOROOT) C:\Users\ASUS\go\src\golang.org\x\net\http2\hpack (from $GOPATH) google.golang.org\grpc\server.go:36:2: cannot find package "golang.org/x/net/trace" in any of: D:\Go\src\golang.org\x\net\trace (from $GOROOT) C:\Users\ASUS\go\src\golang.org\x\net\trace (from $GOPATH) google.golang.org\grpc\status\status.go:34:2: cannot find package "google.golang.org/genproto/googleapis/rpc/status" in any of: D:\Go\src\google.golang.org\genproto\googleapis\rpc\status (from $GOROOT) C:\Users\ASUS\go\src\google.golang.org\genproto\googleapis\rpc\status (from $GOPATH)
Sie können feststellen, dass es aufgrund der Eingabeaufforderungen zu vielen Fehlern kommt. Wir werden die Fehlermeldungen nicht nach und nach analysieren bit hier, aber geben Sie direkt die erforderlichen Abhängigkeitspakete und Download-Methoden an (Führen Sie den Befehl im Verzeichnis $GOPATH/src aus):
1) Textpaket
git clone https://github.com/golang/text.git ./golang.org/x/text
2) Netzpaket
git clone https://github.com/golang/net.git ./golang.org/x/net
3) Genproto-Paket
git clone https://github.com/google/go-genproto.git ./google.golang.org/genproto
4 ) Protobuf-Paket
Beide:
git clone https://github.com/protocolbuffers/protobuf-go.git ./google.golang.org/protobuf
git clone https://github.com/golang/protobuf.git ./github.com/golang/protobuf
Beide herunterladen, github Ein Teil des Codes von .com/golang/protobuf hängt von google.golang.org/protobuf ab
Nachdem Sie alle oben genannten abhängigen Bibliotheken heruntergeladen haben, installieren Sie gRPC neu:
ASUS@LAPTOP-V7SMQSCI MINGW64 ~/go/src $ go install google.golang.org/grpc/ ASUS@LAPTOP-V7SMQSCI MINGW64 ~/go/src $
It Es ist ersichtlich, dass es keine Fehler und keine Ausgabe gibt. . .
Überprüfen Sie, ob gRPC in Ordnung ist. Öffnen Sie zwei Bash-Fenster und führen Sie jeweils die folgenden Befehle aus:
go run google.golang.org/grpc/examples/helloworld/greeter_server/main.go
go run google.golang.org/grpc/examples/helloworld/greeter_client/main.go. Wie im Bild gezeigt, können Sie sehen, dass der Server die vom Client gesendete Nachricht empfangen hat.
3 rpc
Dafür muss die geschriebene Protodatei kompiliert werden, um eine .go-Datei zu werden, zum Beispiel:$GOPATHgoogle.golang.orggrpcexampleshelloworldhelloworld Es gibt die folgenden Dateien im Verzeichnis:
ASUS@LAPTOP-V7SMQSCI MINGW64 ~/go/src/google.golang.org/grpc/examples/helloworld/helloworld (master) $ ll total 16 -rw-r--r-- 1 ASUS 197121 4938 6月 1 21:46 helloworld.pb.go -rw-r--r-- 1 ASUS 197121 1208 6月 1 21:46 helloworld.proto -rw-r--r-- 1 ASUS 197121 2823 6月 1 21:46 helloworld_grpc.pb.go
Lassen Sie uns zuerst die .go-Datei sichern
ASUS@LAPTOP-V7SMQSCI MINGW64 ~/go/src/google.golang.org/grpc/examples/helloworld/helloworld (master) $ mv helloworld.pb.go helloworld.pb.go.bak ASUS@LAPTOP-V7SMQSCI MINGW64 ~/go/src/google.golang.org/grpc/examples/helloworld/helloworld (master) $ mv helloworld_grpc.pb.go helloworld_grpc.pb.go.bak ASUS@LAPTOP-V7SMQSCI MINGW64 ~/go/src/google.golang.org/grpc/examples/helloworld/helloworld (master) $ ll total 16 -rw-r--r-- 1 ASUS 197121 4938 6月 1 21:46 helloworld.pb.go.bak -rw-r--r-- 1 ASUS 197121 1208 6月 1 21:46 helloworld.proto -rw-r--r-- 1 ASUS 197121 2823 6月 1 21:46 helloworld_grpc.pb.go.bak
und dann ausführen:
ASUS@LAPTOP-V7SMQSCI MINGW64 ~/go/src/google.golang.org/grpc/examples/helloworld/helloworld (master) $ protoc --go_out=plugins=grpc:. helloworld.proto 'protoc-gen-go' ????????????????????????е???? ????????????? --go_out: protoc-gen-go: Plugin failed with status code 1.Es wurde ein Fehler festgestellt, Sie müssen protoc-gen-go installieren.
Führen Sie den folgenden Befehl zur Installation aus:
ASUS@LAPTOP-V7SMQSCI MINGW64 ~/go/src $ go install github.com/golang/protobuf/protoc-gen-go/ ASUS@LAPTOP-V7SMQSCI MINGW64 ~/go/src $ cd ../bin ASUS@LAPTOP-V7SMQSCI MINGW64 ~/go/bin $ ll total 11852 -rwxr-xr-x 1 ASUS 197121 3702272 5月 27 07:06 protoc.exe* -rwxr-xr-x 1 ASUS 197121 8431104 6月 1 23:13 protoc-gen-go.exe*
Nach Abschluss der Installation wird die Datei protoc-gen-go.exe angezeigt wird im Verzeichnis $GOPATH/bin generiert
Dann führen Sie die Kompilierungsprotodatei aus:Es wird eine helloworld.pb.go-Datei generiert
Es gibt mehrere Bibliotheken, über die Sie Bescheid wissen müssen:
Dies ist die Open-Source-Protobuf-Quellcodebibliothek. Enthält den Quellcode für die Implementierung von Protobuf in verschiedenen häufig verwendeten Sprachen
2 /golang/protobuf
Diese Bibliothek ist die Protobuf-Open-Source-Bibliothek von Golang. Überprüfen Sie die README.md dieser Bibliothek und Sie können feststellen, dass diese Bibliothek Klicken Sie stattdessen auf diesen Link und Sie werden das entsprechende Quellcode-Git-Repository finden Die Bibliothek lautet: https://github.com/protocolbuffers/protobuf-go muss immer noch Githubs protoc-gen-go verwenden,
Wenn Sie google.golang.org/protobuf/cmd/protoc-gen-go verwenden (d. h. installieren Sie google.golang. org/protobuf/cmd/protoc-gen-go, Dadurch wird auch protoc-gen-go.exe im Verzeichnis $GOPATH/bin generiert, was den folgenden Fehler verursacht
ASUS@LAPTOP-V7SMQSCI MINGW64 ~/go/src/google.golang.org/grpc/examples/helloworld/helloworld (master) $ protoc --go_out=plugins=grpc:. helloworld.proto --go_out: protoc-gen-go: plugins are not supported; use 'protoc --go-grpc_out=...' to generate gRPC ASUS@LAPTOP-V7SMQSCI MINGW64 ~/go/src/google.golang.org/grpc/examples/helloworld/helloworld (master) $ protoc --go-grpc_out=. helloworld.proto 'protoc-gen-go-grpc' ????????????????????????е???? ????????????? --go-grpc_out: protoc-gen-go-grpc: Plugin failed with status code 1.
Es wird ein separates protoc-gen-go-grpc zum Generieren der grpc-Schnittstelle geben, aber das ist so befindet sich noch in der Code-Review-Phase und soll veröffentlicht werden. . . google.golang.org/protobuf