gRPC og høyytelses-API-er · leksjon

Generere gRPC-kode

Gå gjennom prosessen med å kompilere Protobuf-definisjoner til stubs for ulike programmeringsspråk.

Leksjon 2 av 411 trinn

Generere gRPC-kode er en gratis leksjon i gRPC og høyytelses-API-er på CoddyKit. Dette er leksjon 2 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i gRPC og høyytelses-API-er, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i gRPC og høyytelses-API-er inneholder totalt 4 leksjoner.

Introduksjon til kodegenerering

Velkommen tilbake! I forrige leksjon lærte vi hvordan vi definerer datastrukturer og tjenester ved hjelp av Protocol Buffers (Protobuf).

Men hvordan bruker vi egentlig disse definisjonene i programmeringsspråket vi foretrekker? Det er her kodegenerering kommer inn!

Det er prosessen med å opprette kildekode automatisk fra et skjema, slik at du slipper å skrive gjentakende standardkode.

Hvorfor gRPC trenger stubs

gRPC er i stor grad avhengig av generert kode, ofte kalt stubber eller proxyer. Disse stubene fungerer som en bro mellom programlogikken din og de underliggende mekanismene for gRPC-kommunikasjon.

  • Klientstubber: Tilbyr metoder som gjenspeiler tjenesten som er definert i .proto-filen. Når du kaller en metode på en klientstub, pakker den inn dataene, sender dem over nettverket og pakker ut svaret.
  • Serverstubber: Definerer et grensesnitt som serverimplementasjonen din må oppfylle. Den håndterer mottak av forespørsler, videresender dem til koden din og sender svar tilbake.

Bli kjent med Protobuf-kompilatoren

Magien bak genereringen av disse stubbene er Protobuf Compiler, vanligvis kalt protoc.

protoc er et kommandolinjeverktøy som leser .proto-filene dine og genererer kildekode i ulike språk, basert på programtilleggene du angir.

Det er en avgjørende komponent i alle gRPC-prosjekter, siden det sikrer sterk typing og konsistente kommunikasjonsgrensesnitt på tvers av ulike tjenester og språk.

Grunnleggende `protoc`-kommando

Den generelle syntaksen for bruk av protoc ser omtrent slik ut:

protoc --<LANG>_out=. --grpc_out=. my_service.proto
  • --<LANG>_out=.: Dette flagget forteller protoc at det skal generere Protobuf-meldingsklasser for et bestemt språk (for eksempel --java_out eller --python_out), og hvor de skal plasseres (. betyr gjeldende katalog).
  • --grpc_out=.: Dette flagget, som ofte brukes sammen med et gRPC-spesifikt programtillegg, genererer gRPC-tjenestegrensesnittet og stubklassene.
  • my_service.proto: Banen til Protobuf-definisjonsfilen din.

Installere `protoc` (konseptuelt)

Før du kan generere kode, må du installere protoc. Installasjonsprosessen varierer mellom operativsystemer:

  • Last ned binærfil: Du kan laste ned forhåndskompilerte binærfiler fra den offisielle siden for Protobuf-utgivelser på GitHub.
  • Pakkeadministratorer: På Linux kan du bruke apt-get install protobuf-compiler. På macOS kan du bruke brew install protobuf.
  • Bygg fra kildekode: Avanserte brukere kan kompilere det fra kildekoden.

Kontroller alltid at protoc finnes i systemets PATH.

Protobuf for eksempelet vårt

La oss bruke en enkel greet.proto-fil for å demonstrere kodegenerering. Denne filen definerer en Greeter-tjeneste og meldingene den bruker:

syntax = "proto3";

package greeter;

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

message HelloRequest {
  string name = 1;
}

message HelloReply {
  string message = 1;
}

Dette er inndataene til protoc-kompilatoren vår.

Generere Java-stubber

For å generere Java-kode fra greet.proto bruker vi vanligvis en kommando som denne:

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

Her forteller --plugin eksplisitt protoc hvor gRPC Java-programtillegget finnes. Dette er nødvendig for å generere gRPC-tjenestegrensesnittene.

Utforske genererte filer

Etter at du har kjørt protoc, finner du nye Java-filer i den angitte utdatakatalogen. For eksempelet med greet.proto vil du vanligvis se:

  • GreeterGrpc.java: Inneholder den abstrakte GreeterImplBase-tjenesten og klientstubklassene (for eksempel GreeterBlockingStub og GreeterFutureStub).
  • Greet.java: En beholderklasse som inneholder de genererte Protobuf-meldingsklassene, for eksempel HelloRequest og HelloReply, samt builderne og tilgangsmetodene deres.

Disse filene håndterer all serialisering, deserialisering og nettverkskommunikasjon.

Programtilleggenes rolle

Det er viktig å forstå at protoc i seg selv bare genererer de grunnleggende Protobuf-meldingsklassene.

For å generere gRPC-spesifikke tjenestegrensesnitt og stubber bruker den programtillegg. For Java trenger du for eksempel programtillegget protoc-gen-grpc-java.

Hvert språk som støttes av gRPC (Python, Go, C++, Node.js og så videre) har sitt eget programtillegg, som integreres med protoc for å produsere den nødvendige gRPC-koden.

Kort sjekk: Kodegenerering

Hvilke av følgende påstander om gRPC-kodegenerering er riktige?

Oppsummering og neste steg

Godt jobbet! Du har lært den grunnleggende prosessen for å generere gRPC-kode:

  • Vi har forstått hvorfor stubber er avgjørende for gRPC-kommunikasjon.
  • Vi har blitt kjent med protoc-kompilatoren, verktøyet som utfører kodegenereringen.
  • Vi har sett hvordan programtillegg utvider protoc slik at det kan generere språkspesifikk gRPC-kode.
  • Vi har gått gjennom et eksempel på å generere Java-kode fra en .proto-definisjon.

Deretter skal vi bruke den genererte koden til å implementere en enkel unary gRPC-tjeneste og klient!

Gratis å komme i gang

Lær deg gRPC og høyytelses-API-er med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
12
Leksjoner
48

Ofte stilte spørsmål

Er leksjonen «Generere gRPC-kode» gratis?

Ja – hele teksten i «Generere gRPC-kode» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av gRPC og høyytelses-API-er-kurset, kan du oppgradere til CoddyKit PRO. Kurset i gRPC og høyytelses-API-er inneholder totalt 4 leksjoner.

Hva lærer jeg i «Generere gRPC-kode»?

Gå gjennom prosessen med å kompilere Protobuf-definisjoner til stubs for ulike programmeringsspråk. Du øver på gRPC og høyytelses-API-er med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med gRPC og høyytelses-API-er?

Ingen tidligere erfaring er nødvendig. gRPC og høyytelses-API-er på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.

Hvor lang tid tar leksjonen «Generere gRPC-kode»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne gRPC og høyytelses-API-er-leksjonen?

Ja. Alle gRPC og høyytelses-API-er-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Definere Protobuf-skjemaer
  2. Generere gRPC-kode
  3. Enkel unær gRPC-tjeneste
  4. Strømmende RPC-er: server, klient og toveis
← Tilbake til gRPC og høyytelses-API-er