Generere gRPC-kode
Gå gjennom prosessen med å kompilere Protobuf-definisjoner til stubs for ulike programmeringsspråk.
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 fortellerprotocat det skal generere Protobuf-meldingsklasser for et bestemt språk (for eksempel--java_outeller--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 brukebrew 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.protoHer 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 abstrakteGreeterImplBase-tjenesten og klientstubklassene (for eksempelGreeterBlockingStubogGreeterFutureStub).Greet.java: En beholderklasse som inneholder de genererte Protobuf-meldingsklassene, for eksempelHelloRequestogHelloReply, 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
protocslik 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!
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
- Definere Protobuf-skjemaer
- Generere gRPC-kode
- Enkel unær gRPC-tjeneste
- Strømmende RPC-er: server, klient og toveis