gRPC og højtydende API'er · Lektion

Generering af gRPC-kode

Gennemgå processen med at kompilere Protobuf-definitioner til stubs i forskellige programmeringssprog.

Lektion 2 af 411 trin

Generering af gRPC-kode er en gratis gRPC og højtydende API'er-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i gRPC og højtydende API'er, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. gRPC og højtydende API'er-kurset indeholder 4 lektioner i alt.

Introduktion til kodegenerering

Velkommen tilbage! I den forrige lektion lærte vi, hvordan man definerer datastrukturer og tjenester ved hjælp af Protocol Buffers (Protobuf).

Men hvordan bruger vi egentlig disse definitioner i vores foretrukne programmeringssprog? Det er her, kodegenerering kommer ind i billedet!

Det er processen, hvor kildekode automatisk oprettes ud fra et skema, så du slipper for at skrive gentagen standardkode.

Hvorfor gRPC har brug for stubs

gRPC er i høj grad afhængig af genereret kode, der ofte kaldes stubs eller proxies. Disse stubs fungerer som en bro mellem din applikationslogik og de underliggende gRPC-kommunikationsmekanismer.

  • Klientstubs: Leverer metoder, der afspejler den tjeneste, som er defineret i din .proto-fil. Når du kalder en klientstubmetode, pakker den dataene, sender dem over netværket og pakker svaret ud.
  • Serverstubs: Definerer en grænseflade, som din serverimplementering skal opfylde. Den håndterer modtagelse af anmodninger, videresender dem til din kode og sender svar tilbage.

Mød Protobuf-kompileren

Magien bag genereringen af disse stubber er Protobuf Compiler, der normalt kaldes protoc.

protoc er et kommandolinjeværktøj, som læser dine .proto-filer og genererer kildekode på forskellige sprog ud fra de plugins, du angiver.

Det er en afgørende komponent i ethvert gRPC-projekt, fordi det sikrer stærk typning og ensartede kommunikationsgrænseflader på tværs af forskellige tjenester og programmeringssprog.

Grundlæggende `protoc`-kommando

Den generelle syntaks til brug af protoc ser nogenlunde sådan ud:

protoc --<LANG>_out=. --grpc_out=. my_service.proto
  • --<LANG>_out=.: Dette flag fortæller protoc, at der skal genereres Protobuf-meddelelsesklasser til et bestemt sprog (f.eks. --java_out, --python_out), og hvor de skal placeres (. betyder den aktuelle mappe).
  • --grpc_out=.: Dette flag bruges ofte sammen med et gRPC-specifikt plugin og genererer gRPC-tjenestens grænseflade og stubklasser.
  • my_service.proto: Stien til din Protobuf-definitionsfil.

Installation af `protoc` (konceptuelt)

Før du kan generere kode, skal du installere protoc. Installationsprocessen varierer afhængigt af operativsystemet:

  • Download binærfil: Du kan downloade prækompilerede binærfiler fra den officielle Protobuf-udgivelsesside på GitHub.
  • Pakkehåndteringer: På Linux kan du bruge apt-get install protobuf-compiler. På macOS kan du bruge brew install protobuf.
  • Kompilér fra kildekode: Avancerede brugere kan kompilere det fra kildekoden.

Sørg altid for, at protoc findes i systemets PATH.

Protobuf til vores eksempel

Lad os bruge en enkel greet.proto-fil til at demonstrere kodegenerering. Denne fil definerer en Greeter-tjeneste og dens meddelelser:

syntax = "proto3";

package greeter;

service Greeter {
  rpc SayHello (HelloRequest) returns (HelloReply) {}
}

message HelloRequest {
  string name = 1;
}

message HelloReply {
  string message = 1;
}

Dette er inputtet til vores protoc-compiler.

Generering af Java-stubber

Hvis vi vil generere Java-kode til vores greet.proto, vil vi typisk bruge en kommando som denne:

protoc \
  --plugin=protoc-gen-grpc-java=/path/to/grpc-java-plugin \
  --java_out=. \
  --grpc_out=. \
  greet.proto

Her fortæller --plugin udtrykkeligt protoc, hvor gRPC Java-pluginnet findes. Det er nødvendigt for at generere gRPC-tjenestens grænseflader.

Udforskning af genererede filer

Efter at have kørt protoc finder du nye Java-filer i den angivne outputmappe. For vores greet.proto-eksempel vil du typisk se:

  • GreeterGrpc.java: Indeholder den abstrakte GreeterImplBase-tjeneste og klientens stubklasser (f.eks. GreeterBlockingStub og GreeterFutureStub).
  • Greet.java: En containerklasse, der indeholder de genererede Protobuf-meddelelsesklasser som HelloRequest og HelloReply samt deres builders og accessors.

Disse filer håndterer alle detaljer vedrørende serialisering, deserialisering og netværkskommunikation.

Plugins rolle

Det er vigtigt at forstå, at protoc selv kun genererer de grundlæggende Protobuf-meddelelsesklasser.

For at generere de gRPC-specifikke tjenestegrænseflader og stubber er det afhængigt af plugins. Til Java skal du for eksempel bruge pluginnet protoc-gen-grpc-java.

Hvert sprog, der understøttes af gRPC (Python, Go, C++, Node.js osv.), har sit eget specifikke plugin, som integreres med protoc for at producere den nødvendige gRPC-kode.

Hurtigt tjek: Kodegenerering

Hvilke af følgende udsagn om gRPC-kodegenerering er sande?

Opsummering og næste trin

Godt klaret! Du har lært den grundlæggende proces til generering af gRPC-kode:

  • Du har forstået, hvorfor stubber er afgørende for gRPC-kommunikation.
  • Du har mødt protoc-compileren, værktøjet, der udfører kodegenereringen.
  • Du har set, hvordan plugins udvider protoc, så der kan genereres sprogspecifik gRPC-kode.
  • Du har gennemgået et eksempel på generering af Java-kode fra en .proto-definition.

Derefter skal vi bruge denne genererede kode til at implementere en enkel unary-gRPC-tjeneste og klient!

Gratis at komme i gang

Lær gRPC og højtydende API'er med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
12
Lektioner
48

Ofte stillede spørgsmål

Er lektionen “Generering af gRPC-kode” gratis?

Ja — hele teksten til “Generering af gRPC-kode” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af gRPC og højtydende API'er-kurset, skal du opgradere til CoddyKit PRO. gRPC og højtydende API'er-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Generering af gRPC-kode”?

Gennemgå processen med at kompilere Protobuf-definitioner til stubs i forskellige programmeringssprog. Du øver dig i gRPC og højtydende API'er med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på gRPC og højtydende API'er?

Der kræves ingen tidligere erfaring. gRPC og højtydende API'er på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.

Hvor lang tid tager lektionen “Generering af gRPC-kode”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne gRPC og højtydende API'er-lektion?

Ja. Alle gRPC og højtydende API'er-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Definition af Protobuf-skemaer
  2. Generering af gRPC-kode
  3. En simpel unary gRPC-service
  4. Streaming-RPC'er: Server, klient og tovejs
← Tilbage til gRPC og højtydende API'er