Generera gRPC-kod
Gå igenom processen för att kompilera Protobuf-definitioner till stubs i olika programmeringsspråk.
Generera gRPC-kod är en gratis lektion i gRPC och högpresterande API:er på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för gRPC och högpresterande API:er, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i gRPC och högpresterande API:er innehåller totalt 4 lektioner.
Introduktion till kodgenerering
Välkommen tillbaka! I den förra lektionen lärde vi oss att definiera datastrukturer och tjänster med Protocol Buffers (Protobuf).
Men hur använder vi egentligen dessa definitioner i vårt favoritprogrammeringsspråk? Det är där kodgenerering kommer in!
Det är processen att automatiskt skapa källkod från ett schema, så att du slipper skriva upprepad standardkod.
Varför gRPC behöver stubs
gRPC är starkt beroende av genererad kod, som ofta kallas stubs eller proxies. Dessa stubs fungerar som en bro mellan programmets logik och de underliggande kommunikationsmekanismerna i gRPC.
- Klientstubs: Tillhandahåller metoder som motsvarar tjänsten som definieras i din
.proto-fil. När du anropar en metod i en klientstub paketerar den data, skickar den över nätverket och packar upp svaret. - Serverstubs: Definierar ett gränssnitt som din serverimplementation måste uppfylla. Den hanterar mottagandet av begäranden, skickar dem vidare till din kod och returnerar svar.
Möt Protobuf-kompilatorn
Magin bakom genereringen av dessa stubs är Protobuf Compiler, som vanligtvis kallas protoc.
protoc är ett kommandoradsverktyg som läser dina .proto-filer och genererar källkod på olika språk, baserat på de plugins du anger.
Det är en viktig komponent i alla gRPC-projekt, eftersom det säkerställer stark typning och konsekventa kommunikationsgränssnitt mellan olika tjänster och språk.
Grundläggande `protoc`-kommando
Den allmänna syntaxen för att använda protoc ser ut ungefär så här:
protoc --<LANG>_out=. --grpc_out=. my_service.proto--<LANG>_out=.: Den här flaggan anger attprotocska generera Protobuf-meddelandeklasser för ett specifikt språk (till exempel--java_out,--python_out) och var de ska placeras (.för den aktuella katalogen).--grpc_out=.: Den här flaggan, som ofta används tillsammans med ett gRPC-specifikt plugin, genererar gRPC-tjänstens gränssnitt och stubklasser.my_service.proto: Sökvägen till din Protobuf-definitionsfil.
Installera `protoc` (översikt)
Innan du kan generera kod måste du installera protoc. Installationsprocessen varierar beroende på operativsystem:
- Ladda ned binärfil: Du kan ladda ned förkompilerade binärfiler från den officiella sidan för Protobuf-utgåvor på GitHub.
- Pakethanterare: På Linux kan du använda
apt-get install protobuf-compiler. På macOS använder dubrew install protobuf. - Bygg från källkod: Avancerade användare kan kompilera det från källkoden.
Se alltid till att protoc finns i systemets PATH.
Protobuf för vårt exempel
Vi använder en enkel greet.proto-fil för att demonstrera kodgenerering. Den här filen definierar tjänsten Greeter och dess meddelanden:
syntax = "proto3";
package greeter;
service Greeter {
rpc SayHello (HelloRequest) returns (HelloReply) {}
}
message HelloRequest {
string name = 1;
}
message HelloReply {
string message = 1;
}Det här är indata till vår protoc-kompilator.
Generera Java-stubs
För att generera Java-kod från vår greet.proto använder vi vanligtvis ett kommando som detta:
protoc \
--plugin=protoc-gen-grpc-java=/path/to/grpc-java-plugin \
--java_out=. \
--grpc_out=. \
greet.protoHär anger --plugin uttryckligen för protoc var gRPC Java-pluginet finns, vilket krävs för att generera gRPC-tjänstens gränssnitt.
Utforska genererade filer
När du har kört protoc hittar du nya Java-filer i den angivna utdatakatalogen. För vårt greet.proto-exempel ser du vanligtvis:
GreeterGrpc.java: Innehåller den abstrakta tjänstenGreeterImplBaseoch klientens stubklasser (till exempelGreeterBlockingStubochGreeterFutureStub).Greet.java: En behållarklass som innehåller de genererade Protobuf-meddelandeklasserna, till exempelHelloRequestochHelloReply, tillsammans med deras builders och accessors.
De här filerna hanterar all information om serialisering, deserialisering och nätverkskommunikation.
Pluginens roll
Det är viktigt att förstå att protoc i sig bara genererar de grundläggande Protobuf-meddelandeklasserna.
För att generera de gRPC-specifika tjänstegränssnitten och stubbarna använder det plugins. För Java behöver du till exempel pluginet protoc-gen-grpc-java.
Varje språk som stöds av gRPC (Python, Go, C++, Node.js med flera) har ett eget specifikt plugin som integreras med protoc för att skapa den gRPC-kod som behövs.
Snabbkontroll: kodgenerering
Vilka av följande påståenden om gRPC-kodgenerering är sanna?
Sammanfattning och nästa steg
Bra jobbat! Du har lärt dig den grundläggande processen för att generera gRPC-kod:
- Du har förstått varför stubbar är viktiga för gRPC-kommunikation.
- Du har bekantat dig med
protoc-kompilatorn, verktyget som utför kodgenereringen. - Du har sett hur plugins utökar
protocför att generera språkspecifik gRPC-kod. - Du har gått igenom ett exempel på hur Java-kod genereras från en
.proto-definition.
Nästa steg är att använda den genererade koden för att implementera en enkel unary gRPC-tjänst och klient!
Lär dig gRPC och högpresterande API:er med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 12
- Lektioner
- 48
Vanliga frågor
Är lektionen ”Generera gRPC-kod” gratis?
Ja – hela texten till ”Generera gRPC-kod” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i gRPC och högpresterande API:er, kan Ni uppgradera till CoddyKit PRO. Kursen i gRPC och högpresterande API:er innehåller totalt 4 lektioner.
Vad lär jag mig i ”Generera gRPC-kod”?
Gå igenom processen för att kompilera Protobuf-definitioner till stubs i olika programmeringsspråk. Ni övar på gRPC och högpresterande API:er med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig gRPC och högpresterande API:er?
Du behöver inga förkunskaper. Utbildningen i gRPC och högpresterande API:er på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”Generera gRPC-kod”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här gRPC och högpresterande API:er-lektionen?
Ja. Varje gRPC och högpresterande API:er-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Definition av Protobuf-scheman
- Generera gRPC-kod
- Enkel unary-gRPC-tjänst
- Streamande RPC-anrop: server, klient och dubbelriktade