Självstudie: Skapa en gRPC-klient och -server i ASP.NET Core
Den här handledningen visar hur du skapar en .NET Core gRPC klient och en ASP.NET Core gRPC server. I slutet har du en gRPC-klient som kommunicerar med gRPC Greeter-tjänsten.
I den här handledningen:
- Skapa en gRPC-server.
- Skapa en gRPC-klient.
- Testa gRPC-klienten med gRPC Greeter-tjänsten.
Förutsättningar
Visual Studio 2022 med arbetsbelastningen ASP.NET och webbutveckling.
Skapa en gRPC-tjänst
- Starta Visual Studio 2022 och välj Nytt projekt.
- I dialogrutan Skapa ett nytt projekt söker du efter
gRPC
. Välj ASP.NET Core gRPC Service och välj Nästa. - I dialogrutan Konfigurera ditt nya projekt anger du
GrpcGreeter
för Projektnamn. Det är viktigt att namnge projektet GrpcGreeter så att namnrymderna matchar när du kopierar och klistrar in kod. - Välj Nästa.
- I dialogrutan Ytterligare information väljer du .NET 9.0 (Standard Term Support) och väljer sedan Skapa.
Kör tjänsten
Tryck på Ctrl+F5 för att köra utan felsökningsprogrammet.
Visual Studio visar följande dialogruta när ett projekt ännu inte har konfigurerats för att använda SSL:
Välj Ja om du litar på IIS Express SSL-certifikatet.
Följande dialogruta visas:
Dialogrutan
Välj Ja om du samtycker till att lita på utvecklingscertifikatet.
Information om hur du litar på Webbläsaren Firefox finns i Firefox SEC_ERROR_INADEQUATE_KEY_USAGE certifikatfel.
Visual Studio:
- Startar Kestrel server.
- Startar en webbläsare.
- Navigerar till
http://localhost:port
, till exempelhttp://localhost:7042
.- port: Ett slumpmässigt tilldelat portnummer för appen.
-
localhost
: Standardvärdnamnet för den lokala datorn. Localhost hanterar endast webbbegäranden från den lokala datorn.
Loggarna visar att tjänsten lyssnar på https://localhost:<port>
, där <port>
är det localhost-portnummer som tilldelas slumpmässigt när projektet skapas och sorteras i Properties/launchSettings.json
.
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:<port>
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
Not
GRPC-mallen är konfigurerad för att använda Transport Layer Security (TLS). gRPC-klienter måste använda HTTPS för att anropa servern. Portnumret för gRPC-tjänsten localhost tilldelas slumpmässigt när projektet skapas och anges i Egenskaper\launchSettings.jspå fil i gRPC-tjänstprojektet.
Granska projektfilerna
GrpcGreeter projektfiler:
-
Protos/greet.proto
: definierarGreeter
gRPC och används för att generera gRPC-servertillgångarna. Mer information finns i Introduktion till gRPC-. -
Services
mapp: Innehåller implementeringen avGreeter
-tjänsten. -
appSettings.json
: Innehåller konfigurationsdata som det protokoll som används av Kestrel. Mer information finns i Configuration i ASP.NET Core. -
Program.cs
, som innehåller:- Startpunkten för gRPC-tjänsten. Mer information finns i .NET Generic Host i ASP.NET Core.
- Kod som konfigurerar appbeteende. Mer information finns i App-start.
Skapa gRPC-klienten i en .NET-konsolapp
- Öppna en andra instans av Visual Studio och välj Nytt projekt.
- I dialogrutan Skapa ett nytt projekt väljer du Konsolappoch väljer Nästa.
- I textrutan Projektnamn anger du GrpcGreeterClient och väljer Nästa.
- I dialogrutan Ytterligare information väljer du .NET 9.0 (Standard Term Support) och väljer sedan Skapa.
Lägga till nödvändiga NuGet-paket
GRPC-klientprojektet kräver följande NuGet-paket:
- Grpc.Net.Client, som innehåller .NET Core-klienten.
- Google.Protobuf, som innehåller protobuf-meddelande-API:er för C#.
-
Grpc.Tools, som innehåller C#-verktygsstöd för protobuf-filer. Verktygspaketet krävs inte vid körningstid, så beroendet markeras med
PrivateAssets="All"
.
Installera paketen med antingen Package Manager Console (PMC) eller Hantera NuGet-paket.
PMC-alternativ för att installera paket
I Visual Studio väljer du Tools>NuGet Package Manager>Package Manager Console
Från fönstret Package Manager Console kör du
cd GrpcGreeterClient
för att ändra kataloger till mappen som innehållerGrpcGreeterClient.csproj
-filerna.Kör följande kommandon:
Install-Package Grpc.Net.Client Install-Package Google.Protobuf Install-Package Grpc.Tools
Hantera NuGet-paket för att installera paket
- Högerklicka på projektet i Solution Explorer>Hantera NuGet-paket.
- Välj fliken Bläddra.
- Ange Grpc.Net.Client i sökrutan.
- Välj Grpc.Net.Client-paketet på fliken Bläddra och välj Installera.
- Upprepa för
Google.Protobuf
ochGrpc.Tools
.
Lägg till greet.proto
Skapa en Protos- mapp i gRPC-klientprojektet.
Kopiera filen Protos\greet.proto från gRPC Greeter-tjänsten till mappen Protos i gRPC-klientprojektet.
Uppdatera namnområdet i filen
greet.proto
till projektets namnområde:option csharp_namespace = "GrpcGreeterClient";
Redigera
GrpcGreeterClient.csproj
-projektfilen:
Högerklicka på projektet och välj Redigera projektfil.
Lägg till en objektgrupp med ett
<Protobuf>
element som refererar till filen greet.proto:<ItemGroup> <Protobuf Include="Protos\greet.proto" GrpcServices="Client" /> </ItemGroup>
Skapa Greeter-klienten
- Skapa klientprojektet för att skapa typerna i
GrpcGreeterClient
namnområdet.
Notera
De GrpcGreeterClient
typerna genereras automatiskt av byggprocessen. Verktygspaketet Grpc.Tools genererar följande filer baserat på filen greet.proto:
-
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs
: Den protokollbuffertkod som fyller, serialiserar och hämtar meddelandetyperna för begäran och svar. -
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs
: Innehåller de genererade klientklasserna.
Mer information om C#-tillgångarna som genereras automatiskt av Grpc.Toolsfinns i gRPC-tjänster med C#: Genererade C#-tillgångar.
Uppdatera gRPC-klientens
Program.cs
fil med följande kod.using Grpc.Net.Client; using GrpcGreeterClient; // The port number must match the port of the gRPC server. using var channel = GrpcChannel.ForAddress("https://localhost:7042"); var client = new Greeter.GreeterClient(channel); var reply = await client.SayHelloAsync( new HelloRequest { Name = "GreeterClient" }); Console.WriteLine("Greeting: " + reply.Message); Console.WriteLine("Press any key to exit..."); Console.ReadKey();
I föregående markerade kod ersätter du portnumret localhost
7042
med detHTTPS
portnummer som anges iProperties/launchSettings.json
iGrpcGreeter
-tjänstprojektet.
Program.cs
innehåller startpunkten och logiken för gRPC-klienten.
Greeter-klienten skapas av:
- Instansiera en
GrpcChannel
som innehåller information för att skapa anslutningen till gRPC-tjänsten. - Använd
GrpcChannel
för att skapa Greeter-klienten:
// The port number must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:7042");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
Greeter-klienten kallar på den asynkrona metoden SayHello
. Resultatet av SayHello
-anropet visas:
// The port number must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:7042");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
Testa gRPC-klienten med gRPC Greeter-tjänsten
Uppdatera filen appsettings.Development.json
genom att lägga till följande markerade rader:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning",
"Microsoft.AspNetCore.Hosting": "Information",
"Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information"
}
}
}
- I
GrpcGreeter
-tjänstprojektet trycker du påCtrl+F5
för att starta servern utan felsökningsprogrammet. - I
GrpcGreeterClient
-konsolprojektet trycker du påCtrl+F5
för att starta klienten utan felsökningsprogrammet.
Klienten skickar en hälsning till tjänsten med ett meddelande som innehåller dess namn, GreeterClient. Tjänsten skickar meddelandet "Hello GreeterClient" som ett svar. Svaret "Hello GreeterClient" visas i kommandotolken:
Greeting: Hello GreeterClient
Press any key to exit...
gRPC-tjänsten registrerar information om det lyckade anropet i loggarna som skrivs ut till kommandotolken.
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:<port>
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
Content root path: C:\GH\aspnet\docs\4\Docs\aspnetcore\tutorials\grpc\grpc-start\sample\GrpcGreeter
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
Request starting HTTP/2 POST https://localhost:<port>/greet.Greeter/SayHello application/grpc
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
Executing endpoint 'gRPC - /greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
Executed endpoint 'gRPC - /greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
Request finished HTTP/2 POST https://localhost:7042/greet.Greeter/SayHello - 200 - application/grpc 40.4615ms
Obs
Koden i den här artikeln kräver ASP.NET Core HTTPS-utvecklingscertifikat för att skydda gRPC-tjänsten. Om .NET gRPC-klienten misslyckas med meddelandet The remote certificate is invalid according to the validation procedure.
eller The SSL connection could not be established.
är utvecklingscertifikatet inte är betrodd. Information om hur du åtgärdar det här problemet finns i Anropa en gRPC-tjänst med ett ej betrott/ogiltigt certifikat.
Nästa steg
Den här självstudien visar hur du skapar en .NET Core-gRPC--klient och en ASP.NET Core-gRPC-server. I slutet har du en gRPC-klient som kommunicerar med gRPC Greeter-tjänsten.
I den här handledningen:
- Skapa en gRPC-server.
- Skapa en gRPC-klient.
- Testa gRPC-klienten med gRPC Greeter-tjänsten.
Förutsättningar
Visual Studio 2022 med arbetsbelastningen ASP.NET och webbutveckling.
Skapa en gRPC-tjänst
- Starta Visual Studio 2022 och välj Nytt projekt.
- I dialogrutan Skapa ett nytt projekt söker du efter
gRPC
. Välj ASP.NET Core gRPC Service och välj Nästa. - I dialogrutan Konfigurera ditt nya projekt anger du
GrpcGreeter
för Projektnamn. Det är viktigt att namnge projektet GrpcGreeter så att namnrymderna matchar när du kopierar och klistrar in kod. - Välj Nästa.
- I dialogrutan Ytterligare information väljer du .NET 8.0 (långsiktig support) och väljer sedan Skapa.
Kör tjänsten
Tryck på Ctrl+F5 för att köra utan felsökningsprogrammet.
Visual Studio visar följande dialogruta när ett projekt ännu inte har konfigurerats för att använda SSL:
Välj Ja om du litar på IIS Express SSL-certifikatet.
Följande dialogruta visas:
dialogrutan
Välj Ja om du samtycker till att lita på utvecklingscertifikatet.
Information om hur du litar på Webbläsaren Firefox finns i Firefox SEC_ERROR_INADEQUATE_KEY_USAGE certifikatfel.
Visual Studio:
- Startar servern Kestrel.
- Startar en webbläsare.
- Navigerar till
http://localhost:port
, till exempelhttp://localhost:7042
.- port: Ett slumpmässigt tilldelat portnummer för appen.
-
localhost
: Standardvärdnamnet för den lokala datorn. Localhost hanterar endast webbbegäranden från den lokala datorn.
Loggarna visar att tjänsten lyssnar på https://localhost:<port>
, där <port>
är det localhost-portnummer som tilldelas slumpmässigt när projektet skapas och sätts i Properties/launchSettings.json
.
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:<port>
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
Anteckning
GRPC-mallen är konfigurerad för att använda Transport Layer Security (TLS). gRPC-klienter måste använda HTTPS för att anropa servern. Portnumret för gRPC-tjänsten localhost tilldelas slumpmässigt när projektet skapas och anges i Egenskaper\launchSettings.jspå fil i gRPC-tjänstprojektet.
Granska projektfilerna
GrpcGreeter projektfiler:
-
Protos/greet.proto
: definierarGreeter
gRPC och används för att generera gRPC-servertillgångarna. Mer information finns i Introduktion till gRPC-. -
Services
mapp: Innehåller implementeringen avGreeter
-tjänsten. -
appSettings.json
: Innehåller konfigurationsdata som det protokoll som används av Kestrel. Mer information finns i Configuration i ASP.NET Core. -
Program.cs
, som innehåller:- Startpunkten för gRPC-tjänsten. Mer information finns i .NET Generic Host i ASP.NET Core.
- Kod som konfigurerar appbeteende. Mer information finns i App-uppstart.
Skapa gRPC-klienten i en .NET-konsolapp
- Öppna en andra instans av Visual Studio och välj Nytt projekt.
- I dialogrutan Skapa ett nytt projekt väljer du Konsolappoch väljer Nästa.
- I textrutan Projektnamn anger du GrpcGreeterClient och väljer Nästa.
- I dialogrutan Ytterligare information väljer du .NET 8.0 (långsiktig support) och väljer sedan Skapa.
Lägga till nödvändiga NuGet-paket
GRPC-klientprojektet kräver följande NuGet-paket:
- Grpc.Net.Client, som innehåller .NET Core-klienten.
- Google.Protobuf, som innehåller protobuf-meddelande-API:er för C#.
-
Grpc.Tools, som innehåller C#-verktygsstöd för protobuf-filer. Verktygspaketet behövs inte vid körning, så beroendet har märkts med
PrivateAssets="All"
.
Installera paketen med antingen Package Manager Console (PMC) eller Hantera NuGet-paket.
PMC-alternativ för att installera paket
I Visual Studio väljer du Tools>NuGet Package Manager>Package Manager Console
Från fönstret Package Manager Console kör du
cd GrpcGreeterClient
för att ändra kataloger till mappen som innehållerGrpcGreeterClient.csproj
-filerna.Kör följande kommandon:
Install-Package Grpc.Net.Client Install-Package Google.Protobuf Install-Package Grpc.Tools
Alternativet 'Hantera NuGet-paket' för att installera paket
- Högerklicka på projektet i Solution Explorer>Hantera NuGet-paket.
- Välj fliken Bläddra.
- Ange Grpc.Net.Client i sökrutan.
- Välj Grpc.Net.Client-paketet på fliken Bläddra och välj Installera.
- Upprepa för
Google.Protobuf
ochGrpc.Tools
.
Lägg till greet.proto
Skapa en Protos- mapp i gRPC-klientprojektet.
Kopiera filen Protos\greet.proto från gRPC Greeter-tjänsten till mappen Protos i gRPC-klientprojektet.
Uppdatera namnområdet i filen
greet.proto
till projektets namnområde:option csharp_namespace = "GrpcGreeterClient";
Redigera
GrpcGreeterClient.csproj
-projektfilen:
Högerklicka på projektet och välj Redigera projektfil.
Lägg till en objektgrupp med ett
<Protobuf>
element som refererar till filen greet.proto:<ItemGroup> <Protobuf Include="Protos\greet.proto" GrpcServices="Client" /> </ItemGroup>
Skapa Greeter-klienten
- Skapa klientprojektet för att skapa typerna i
GrpcGreeterClient
namnområdet.
Not
De GrpcGreeterClient
typerna genereras automatiskt av byggprocessen. Verktygspaketet Grpc.Tools genererar följande filer baserat på filen greet.proto:
-
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs
: Den protokollbuffertkod som fyller, serialiserar och hämtar meddelandetyperna för begäran och svar. -
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs
: Innehåller de genererade klientklasserna.
Mer information om C#-tillgångarna som genereras automatiskt av Grpc.Toolsfinns i gRPC-tjänster med C#: Genererade C#-tillgångar.
Uppdatera gRPC-klientens
Program.cs
fil med följande kod.using System.Threading.Tasks; using Grpc.Net.Client; using GrpcGreeterClient; // The port number must match the port of the gRPC server. using var channel = GrpcChannel.ForAddress("https://localhost:7042"); var client = new Greeter.GreeterClient(channel); var reply = await client.SayHelloAsync( new HelloRequest { Name = "GreeterClient" }); Console.WriteLine("Greeting: " + reply.Message); Console.WriteLine("Press any key to exit..."); Console.ReadKey();
I föregående markerade kod ersätter du portnumret localhost
7042
med detHTTPS
portnummer som anges iProperties/launchSettings.json
iGrpcGreeter
-tjänstprojektet.
Program.cs
innehåller startpunkten och logiken för gRPC-klienten.
Greeter-klienten skapas av:
- Instansiera en
GrpcChannel
som innehåller information för att skapa anslutningen till gRPC-tjänsten. - Använd
GrpcChannel
för att skapa Greeter-klienten:
// The port number must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:7042");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
Greeter-klienten anropar den asynkrona SayHello
-metoden. Resultatet av SayHello
-anropet visas:
// The port number must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:7042");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
Testa gRPC-klienten med gRPC Greeter-tjänsten
Uppdatera filen appsettings.Development.json
genom att lägga till följande markerade rader:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
,"Microsoft.AspNetCore.Hosting": "Information",
"Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information"
}
}
}
- I greeter-tjänsten trycker du på
Ctrl+F5
för att starta servern utan felsökningsprogrammet. - I
GrpcGreeterClient
-projektet trycker du påCtrl+F5
för att starta klienten utan felsökningsprogrammet.
Klienten skickar en hälsning till tjänsten med ett meddelande som innehåller dess namn, GreeterClient. Tjänsten skickar meddelandet "Hello GreeterClient" som ett svar. Svaret "Hello GreeterClient" visas i kommandotolken:
Greeting: Hello GreeterClient
Press any key to exit...
gRPC-tjänsten registrerar information om det lyckade anropet i de loggar som visas i kommandotolken.
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:<port>
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
Content root path: C:\GH\aspnet\docs\4\Docs\aspnetcore\tutorials\grpc\grpc-start\sample\GrpcGreeter
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
Request starting HTTP/2 POST https://localhost:<port>/Greet.Greeter/SayHello application/grpc
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
Executing endpoint 'gRPC - /Greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
Executed endpoint 'gRPC - /Greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
Request finished in 78.32260000000001ms 200 application/grpc
Not
Koden i den här artikeln kräver ASP.NET Core HTTPS-utvecklingscertifikat för att skydda gRPC-tjänsten. Om .NET gRPC-klienten misslyckas med meddelandet The remote certificate is invalid according to the validation procedure.
eller The SSL connection could not be established.
, är utvecklingscertifikatet inte att lita på. Information om hur du åtgärdar det här problemet finns i Anropa en gRPC-tjänst med ett ej betrott/ogiltigt certifikat.
Nästa steg
Den här handledningen visar hur du skapar en .NET Core-gRPC--klient och en ASP.NET Core gRPC-server. I slutet har du en gRPC-klient som kommunicerar med gRPC Greeter-tjänsten.
I den här handledningen:
- Skapa en gRPC-server.
- Skapa en gRPC-klient.
- Testa gRPC-klienten med gRPC Greeter-tjänsten.
Förutsättningar
Visual Studio 2022 med arbetsbelastningen ASP.NET och webbutveckling.
Skapa en gRPC-tjänst
- Starta Visual Studio 2022 och välj Skapa ett nytt projekt.
- I dialogrutan Skapa ett nytt projekt söker du efter
gRPC
. Välj ASP.NET Core gRPC Service och välj Nästa. - I dialogrutan Konfigurera ditt nya projekt anger du
GrpcGreeter
för Projektnamn. Det är viktigt att namnge projektet GrpcGreeter så att namnrymderna matchar när du kopierar och klistrar in kod. - Välj Nästa.
- I dialogrutan Ytterligare information väljer du .NET 6.0 (långsiktigt stöd) och väljer sedan Skapa.
Kör tjänsten
Tryck på Ctrl+F5 för att köra utan felsökningsprogrammet.
Visual Studio visar följande dialogruta när ett projekt ännu inte har konfigurerats för att använda SSL:
Välj Ja om du litar på IIS Express SSL-certifikatet.
Följande dialogruta visas:
Välj Ja om du samtycker till att lita på utvecklingscertifikatet.
Information om hur du litar på Webbläsaren Firefox finns i Firefox SEC_ERROR_INADEQUATE_KEY_USAGE certifikatfel.
Visual Studio:
- Startar Kestrel-servern.
- Startar en webbläsare.
- Navigerar till
http://localhost:port
, till exempelhttp://localhost:7042
.- port: Ett slumpmässigt tilldelat portnummer för appen.
-
localhost
: Standardvärdnamnet för den lokala datorn. Localhost hanterar endast webbbegäranden från den lokala datorn.
Loggarna visar tjänsten som lyssnar på https://localhost:<port>
, där <port>
är det localhost-portnummer som tilldelas slumpmässigt när projektet skapas och anges i Properties/launchSettings.json
.
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:<port>
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
Notera
GRPC-mallen är konfigurerad för att använda Transport Layer Security (TLS). gRPC-klienter måste använda HTTPS för att anropa servern. Portnumret för gRPC-tjänsten localhost tilldelas slumpmässigt när projektet skapas och anges i Egenskaper\launchSettings.jspå fil i gRPC-tjänstprojektet.
macOS stöder inte ASP.NET Core gRPC med TLS. Ytterligare konfiguration krävs för att köra gRPC-tjänster på macOS. Mer information finns i Det går inte att starta ASP.NET Core gRPC-appen på macOS-.
Granska projektfilerna
GrpcGreeter projektfiler:
-
Protos/greet.proto
: definierarGreeter
gRPC och används för att generera gRPC-servertillgångarna. Mer information finns i Introduktion till gRPC-. -
Services
mapp: Innehåller implementeringen avGreeter
-tjänsten. -
appSettings.json
: Innehåller konfigurationsdata som det protokoll som används av Kestrel. Mer information finns i Configuration i ASP.NET Core. -
Program.cs
, som innehåller:- Startpunkten för gRPC-tjänsten. Mer information finns i .NET Generic Host i ASP.NET Core.
- Kod som konfigurerar appbeteende. Mer information finns i Appstart.
Skapa gRPC-klienten i en .NET-konsolapp
- Öppna en andra instans av Visual Studio och välj Skapa ett nytt projekt.
- I dialogrutan Skapa ett nytt projekt väljer du Konsolprogramoch väljer Nästa.
- I textrutan Projektnamn anger du GrpcGreeterClient och väljer Nästa.
- I dialogrutan Ytterligare information väljer du .NET 6.0 (långsiktigt stöd) och väljer sedan Skapa.
Lägga till nödvändiga NuGet-paket
GRPC-klientprojektet kräver följande NuGet-paket:
- Grpc.Net.Client, som innehåller .NET Core-klienten.
- Google.Protobuf, som innehåller protobuf-meddelande-API:er för C#.
-
Grpc.Tools, som innehåller C#-verktygsstöd för protobuf-filer. Verktygspaketet krävs inte vid körning, så beroendet markeras med
PrivateAssets="All"
.
Installera paketen med antingen Package Manager Console (PMC) eller Hantera NuGet-paket.
PMC-alternativ för att installera paket
I Visual Studio väljer du Tools>NuGet Package Manager>Package Manager Console
Från fönstret Package Manager Console kör du
cd GrpcGreeterClient
för att ändra kataloger till mappen som innehållerGrpcGreeterClient.csproj
-filerna.Kör följande kommandon:
Install-Package Grpc.Net.Client Install-Package Google.Protobuf Install-Package Grpc.Tools
Alternativet Hantera NuGet-paket för att installera paket
- Högerklicka på projektet i Solution Explorer>Hantera NuGet-paket.
- Välj fliken Bläddra.
- Ange Grpc.Net.Client i sökrutan.
- Välj Grpc.Net.Client-paketet på fliken Bläddra och välj Installera.
- Upprepa för
Google.Protobuf
ochGrpc.Tools
.
Lägg till greet.proto
Skapa en Protos- mapp i gRPC-klientprojektet.
Kopiera filen Protos\greet.proto från gRPC Greeter-tjänsten till mappen Protos i gRPC-klientprojektet.
Uppdatera namnområdet i filen
greet.proto
till projektets namnområde:option csharp_namespace = "GrpcGreeterClient";
Redigera
GrpcGreeterClient.csproj
-projektfilen:
Högerklicka på projektet och välj Redigera projektfil.
Lägg till en objektgrupp med ett
<Protobuf>
element som refererar till filen greet.proto:<ItemGroup> <Protobuf Include="Protos\greet.proto" GrpcServices="Client" /> </ItemGroup>
Skapa Greeter-klienten
- Skapa klientprojektet för att skapa typerna i
GrpcGreeterClient
namnområdet.
Not
De GrpcGreeterClient
typerna genereras automatiskt av byggprocessen. Verktygspaketet Grpc.Tools genererar följande filer baserat på filen greet.proto:
-
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs
: Den protokollbuffertkod som fyller, serialiserar och hämtar meddelandetyperna för begäran och svar. -
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs
: Innehåller de genererade klientklasserna.
Mer information om C#-tillgångarna som genereras automatiskt av Grpc.Toolsfinns i gRPC-tjänster med C#: Genererade C#-tillgångar.
Uppdatera gRPC-klientens
Program.cs
fil med följande kod.using System.Threading.Tasks; using Grpc.Net.Client; using GrpcGreeterClient; // The port number must match the port of the gRPC server. using var channel = GrpcChannel.ForAddress("https://localhost:7042"); var client = new Greeter.GreeterClient(channel); var reply = await client.SayHelloAsync( new HelloRequest { Name = "GreeterClient" }); Console.WriteLine("Greeting: " + reply.Message); Console.WriteLine("Press any key to exit..."); Console.ReadKey();
I föregående markerade kod ersätter du portnumret localhost
7042
med detHTTPS
portnummer som anges iProperties/launchSettings.json
iGrpcGreeter
-tjänstprojektet.
Program.cs
innehåller startpunkten och logiken för gRPC-klienten.
Greeter-klienten skapas av:
- Instansiera en
GrpcChannel
som innehåller information för att skapa anslutningen till gRPC-tjänsten. - Använd
GrpcChannel
för att skapa Greeter-klienten:
// The port number must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:7042");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
Greeterklienten anropar den asynkrona metoden SayHello
. Resultatet av SayHello
-anropet visas:
// The port number must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:7042");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
Testa gRPC-klienten med gRPC Greeter-tjänsten
Uppdatera filen appsettings.Development.json
genom att lägga till följande markerade rader:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
,"Microsoft.AspNetCore.Hosting": "Information",
"Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information"
}
}
}
- I greeter-tjänsten trycker du på
Ctrl+F5
för att starta servern utan felsökningsprogrammet. - I
GrpcGreeterClient
-projektet trycker du påCtrl+F5
för att starta klienten utan felsökningsprogrammet.
Klienten skickar en hälsning till tjänsten med ett meddelande som innehåller dess namn, GreeterClient. Tjänsten skickar meddelandet "Hello GreeterClient" som ett svar. Svaret "Hello GreeterClient" visas i kommandotolken:
Greeting: Hello GreeterClient
Press any key to exit...
gRPC-tjänsten registrerar information om det lyckade anropet i loggarna som skrivs ut till kommandotolken.
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:<port>
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
Content root path: C:\GH\aspnet\docs\4\Docs\aspnetcore\tutorials\grpc\grpc-start\sample\GrpcGreeter
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
Request starting HTTP/2 POST https://localhost:<port>/Greet.Greeter/SayHello application/grpc
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
Executing endpoint 'gRPC - /Greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
Executed endpoint 'gRPC - /Greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
Request finished in 78.32260000000001ms 200 application/grpc
Anteckning
Koden i den här artikeln kräver ASP.NET Core HTTPS-utvecklingscertifikat för att skydda gRPC-tjänsten. Om .NET gRPC-klienten misslyckas med meddelandet The remote certificate is invalid according to the validation procedure.
eller The SSL connection could not be established.
är utvecklingscertifikatet inte pålitligt. Information om hur du åtgärdar det här problemet finns i Anropa en gRPC-tjänst med ett ej betrott/ogiltigt certifikat.
Nästa steg
Den här handledningen visar hur du skapar en .NET Core gRPC klient och en ASP.NET Core gRPC-server. I slutet har du en gRPC-klient som kommunicerar med gRPC Greeter-tjänsten.
I den här handledningen ska du:
- Skapa en gRPC-server.
- Skapa en gRPC-klient.
- Testa gRPC-klienten med gRPC Greeter-tjänsten.
Förutsättningar
- Visual Studio 2022 med arbetsuppgiften ASP.NET och webbutveckling.
- .NET 6.0 SDK
Skapa en gRPC-tjänst
- Starta Visual Studio 2022 och välj Skapa ett nytt projekt.
- I dialogrutan Skapa ett nytt projekt söker du efter
gRPC
. Välj ASP.NET Core gRPC Service och välj Nästa. - I dialogrutan Konfigurera ditt nya projekt anger du
GrpcGreeter
för Projektnamn. Det är viktigt att namnge projektet GrpcGreeter så att namnrymderna matchar när du kopierar och klistrar in kod. - Välj Nästa.
- I dialogrutan Ytterligare information väljer du .NET 6.0 (långsiktigt stöd) och väljer sedan Skapa.
Kör tjänsten
Tryck på Ctrl+F5 för att köra utan felsökningsprogrammet.
Visual Studio visar följande dialogruta när ett projekt ännu inte har konfigurerats för att använda SSL:
Välj Ja om du litar på IIS Express SSL-certifikatet.
Följande dialogruta visas:
säkerhetsvarningsdialogruta
Välj Ja om du samtycker till att lita på utvecklingscertifikatet.
Information om att lita på webbläsaren Firefox finns i Firefox SEC_ERROR_INADEQUATE_KEY_USAGE certifikatfel.
Visual Studio:
- Startar servern Kestrel.
- Startar en webbläsare.
- Navigerar till
http://localhost:port
, till exempelhttp://localhost:7042
.- port: Ett slumpmässigt tilldelat portnummer för appen.
-
localhost
: Standardvärdnamnet för den lokala datorn. Localhost hanterar endast webbbegäranden från den lokala datorn.
Loggarna visar att tjänsten lyssnar på https://localhost:<port>
, där <port>
är det lokala portnummer som slumpmässigt tilldelas när projektet skapas och som anges i Properties/launchSettings.json
.
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:<port>
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
Obs
GRPC-mallen är konfigurerad för att använda Transport Layer Security (TLS). gRPC-klienter måste använda HTTPS för att anropa servern. Portnumret för gRPC-tjänsten localhost tilldelas slumpmässigt när projektet skapas och anges i Egenskaper\launchSettings.jspå fil i gRPC-tjänstprojektet.
macOS stöder inte ASP.NET Core gRPC med TLS. Ytterligare konfiguration krävs för att köra gRPC-tjänster på macOS. Mer information finns i Det går inte att starta ASP.NET Core gRPC-appen på macOS-.
Granska projektfilerna
GrpcGreeter projektfiler:
-
Protos/greet.proto
: definierarGreeter
gRPC och används för att generera gRPC-servertillgångarna. Mer information finns i Introduktion till gRPC-. -
Services
mapp: Innehåller implementeringen avGreeter
-tjänsten. -
appSettings.json
: Innehåller konfigurationsdata som det protokoll som används av Kestrel. Mer information finns i Configuration i ASP.NET Core. -
Program.cs
, som innehåller:- Startpunkten för gRPC-tjänsten. Mer information finns i .NET Generic Host i ASP.NET Core.
- Kod som konfigurerar appbeteende. Mer information finns i App-start.
Skapa gRPC-klienten i en .NET-konsolapp
- Öppna en andra instans av Visual Studio och välj Skapa ett nytt projekt.
- I dialogrutan Skapa ett nytt projekt väljer du Konsolprogramoch väljer Nästa.
- I textrutan Projektnamn anger du GrpcGreeterClient och väljer Nästa.
- I dialogrutan Ytterligare information väljer du .NET 6.0 (långsiktigt stöd) och väljer sedan Skapa.
Lägga till nödvändiga NuGet-paket
GRPC-klientprojektet kräver följande NuGet-paket:
- Grpc.Net.Client, som innehåller .NET Core-klienten.
- Google.Protobuf, som innehåller protobuf-meddelande-API:er för C#.
-
Grpc.Tools, som innehåller C#-verktygsstöd för protobuf-filer. Verktygspaketet krävs inte vid körning, så beroendet markeras med
PrivateAssets="All"
.
Installera paketen med antingen Package Manager Console (PMC) eller Hantera NuGet-paket.
PMC-alternativ för att installera paket
I Visual Studio väljer du Tools>NuGet Package Manager>Package Manager Console
Från fönstret Package Manager Console kör du
cd GrpcGreeterClient
för att ändra kataloger till mappen som innehållerGrpcGreeterClient.csproj
-filerna.Kör följande kommandon:
Install-Package Grpc.Net.Client Install-Package Google.Protobuf Install-Package Grpc.Tools
Hantera alternativet för NuGet-paket för att installera paket
- Högerklicka på projektet i Solution Explorer>Hantera NuGet-paket.
- Välj fliken Bläddra.
- Ange Grpc.Net.Client i sökrutan.
- Välj Grpc.Net.Client-paketet på fliken Bläddra och välj Installera.
- Upprepa för
Google.Protobuf
ochGrpc.Tools
.
Lägg till greet.proto
Skapa en Protos- mapp i gRPC-klientprojektet.
Kopiera filen Protos\greet.proto från gRPC Greeter-tjänsten till mappen Protos i gRPC-klientprojektet.
Uppdatera namnområdet i filen
greet.proto
till projektets namnområde:option csharp_namespace = "GrpcGreeterClient";
Redigera
GrpcGreeterClient.csproj
-projektfilen:
Högerklicka på projektet och välj Redigera projektfil.
Lägg till en objektgrupp med ett
<Protobuf>
element som refererar till filen greet.proto:<ItemGroup> <Protobuf Include="Protos\greet.proto" GrpcServices="Client" /> </ItemGroup>
Skapa Greeter-klienten
- Skapa klientprojektet för att skapa typerna i
GrpcGreeterClient
namnområdet.
Anteckning
De GrpcGreeterClient
typerna genereras automatiskt av byggprocessen. Verktygspaketet Grpc.Tools genererar följande filer baserat på filen greet.proto:
-
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs
: Den protokollbuffertkod som fyller, serialiserar och hämtar meddelandetyperna för begäran och svar. -
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs
: Innehåller de genererade klientklasserna.
Mer information om C#-tillgångarna som genereras automatiskt av Grpc.Toolsfinns i gRPC-tjänster med C#: Genererade C#-tillgångar.
Uppdatera gRPC-klientens
Program.cs
fil med följande kod.using System.Threading.Tasks; using Grpc.Net.Client; using GrpcGreeterClient; // The port number must match the port of the gRPC server. using var channel = GrpcChannel.ForAddress("https://localhost:7042"); var client = new Greeter.GreeterClient(channel); var reply = await client.SayHelloAsync( new HelloRequest { Name = "GreeterClient" }); Console.WriteLine("Greeting: " + reply.Message); Console.WriteLine("Press any key to exit..."); Console.ReadKey();
I föregående markerade kod ersätter du portnumret localhost
7042
med detHTTPS
portnummer som anges iProperties/launchSettings.json
iGrpcGreeter
-tjänstprojektet.
Program.cs
innehåller startpunkten och logiken för gRPC-klienten.
Greeter-klienten skapas av:
- Instansiera en
GrpcChannel
som innehåller information för att skapa anslutningen till gRPC-tjänsten. - Använd
GrpcChannel
för att skapa Greeter-klienten:
// The port number must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:7042");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
Greeter-klientprogrammet anropar den asynkrona metoden SayHello
. Resultatet av SayHello
-anropet visas:
// The port number must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:7042");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
Testa gRPC-klienten med gRPC Greeter-tjänsten
- I greeter-tjänsten trycker du på
Ctrl+F5
för att starta servern utan felsökningsprogrammet. - I
GrpcGreeterClient
-projektet trycker du påCtrl+F5
för att starta klienten utan felsökningsprogrammet.
Klienten skickar en hälsning till tjänsten med ett meddelande som innehåller dess namn, GreeterClient. Tjänsten skickar meddelandet "Hello GreeterClient" som ett svar. Svaret "Hello GreeterClient" visas i kommandotolken:
Greeting: Hello GreeterClient
Press any key to exit...
gRPC-tjänsten registrerar detaljerna av det lyckade anropet i loggarna som skrivits till kommandotolken.
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:<port>
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
Content root path: C:\GH\aspnet\docs\4\Docs\aspnetcore\tutorials\grpc\grpc-start\sample\GrpcGreeter
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
Request starting HTTP/2 POST https://localhost:<port>/Greet.Greeter/SayHello application/grpc
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
Executing endpoint 'gRPC - /Greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
Executed endpoint 'gRPC - /Greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
Request finished in 78.32260000000001ms 200 application/grpc
Uppdatera filen appsettings.Development.json
genom att lägga till följande rader:
"Microsoft.AspNetCore.Hosting": "Information",
"Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information"
Noter
Koden i den här artikeln kräver ASP.NET Core HTTPS-utvecklingscertifikat för att skydda gRPC-tjänsten. Om .NET gRPC-klienten misslyckas och ger meddelandet The remote certificate is invalid according to the validation procedure.
eller The SSL connection could not be established.
är utvecklingscertifikatet inte tillförlitligt. Information om hur du åtgärdar det här problemet finns i Anropa en gRPC-tjänst med ett ej betrott/ogiltigt certifikat.
Nästa steg
Den här självstudien visar hur du skapar en .NET Core-gRPC--klient och en ASP.NET Core gRPC Server.
I slutet har du en gRPC-klient som kommunicerar med gRPC Greeter-tjänsten.
Visa eller ladda ned exempelkod (hur du laddar ned).
I den här handledningen:
- Skapa en gRPC-server.
- Skapa en gRPC-klient.
- Testa gRPC-klienten med gRPC Greeter-tjänsten.
Förutsättningar
- Visual Studio 2019 16.8 eller senare med arbetsbelastning för ASP.NET och webbutveckling
- .NET 5.0 SDK
Skapa en gRPC-tjänst
- Starta Visual Studio och välj Skapa ett nytt projekt.
- I dialogrutan Skapa ett nytt projekt väljer du gRPC Service och väljer Nästa.
- I dialogrutan Konfigurera ditt nya projekt anger du
GrpcGreeter
för Projektnamn. Det är viktigt att namnge projektet GrpcGreeter så att namnrymderna matchar när du kopierar och klistrar in kod. - Välj Nästa.
- I dialogrutan Ytterligare information väljer du .NET 5.0 i listrutan Target Framework.
- Välj Skapa.
Kör tjänsten
Tryck på Ctrl+F5 för att köra utan felsökningsprogrammet.
Visual Studio visar följande dialogruta när ett projekt ännu inte har konfigurerats för att använda SSL:
Välj Ja om du litar på IIS Express SSL-certifikatet.
Följande dialogruta visas:
Dialogrutan för
Välj Ja om du samtycker till att lita på utvecklingscertifikatet.
För information om hur du kan få förtroende för webbläsaren Firefox, se Firefox SEC_ERROR_INADEQUATE_KEY_USAGE certifikatfel.
Visual Studio startar IIS Express och kör appen. Adressfältet visar
localhost:port#
och inte något som liknarexample.com
. Det beror på attlocalhost
är standardvärdnamnet för den lokala datorn. Localhost hanterar endast webbbegäranden från den lokala datorn. När Visual Studio skapar ett webbprojekt används en slumpmässig port för webbservern.
Tjänsten visar att loggarna lyssnar på https://localhost:5001
.
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:5001
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
Anteckning
GRPC-mallen är konfigurerad för att använda Transport Layer Security (TLS). gRPC-klienter måste använda HTTPS för att anropa servern.
macOS stöder inte ASP.NET Core gRPC med TLS. Ytterligare konfiguration krävs för att köra gRPC-tjänster på macOS. Mer information finns i Det går inte att starta ASP.NET Core gRPC-appen på macOS-.
Granska projektfilerna
GrpcGreeter projektfiler:
-
greet.proto: Filen Protos/greet.proto definierar
Greeter
gRPC och används för att generera gRPC-servertillgångarna. Mer information finns i Introduktion till gRPC-. -
Services mapp: Innehåller implementeringen av
Greeter
-tjänsten. -
appsettings.json
: Innehåller konfigurationsdata, till exempel protokoll som används av Kestrel. Mer information finns i Configuration i ASP.NET Core. -
Program.cs
: Innehåller startpunkten för gRPC-tjänsten. Mer information finns i .NET Generic Host i ASP.NET Core. -
Startup.cs
: Innehåller kod som konfigurerar appbeteende. Mer information finns i appstart.
Skapa gRPC-klienten i en .NET-konsolapp
- Öppna en andra instans av Visual Studio och välj Skapa ett nytt projekt.
- I dialogrutan Skapa ett nytt projekt väljer du Console App (.NET Core) och väljer Nästa.
- I textrutan Projektnamn anger du GrpcGreeterClient och väljer Skapa.
Lägga till nödvändiga paket
GRPC-klientprojektet kräver följande paket:
- Grpc.Net.Client, som innehåller .NET Core-klienten.
- Google.Protobuf, som innehåller protobuf-meddelande-API:er för C#.
-
Grpc.Tools, som innehåller C#-verktygsstöd för protobuf-filer. Verktygspaketet krävs inte vid körning, så beroendet markeras med
PrivateAssets="All"
.
Installera paketen med antingen Package Manager Console (PMC) eller Hantera NuGet-paket.
PMC-alternativ för att installera paket
I Visual Studio väljer du Tools>NuGet Package Manager>Package Manager Console
Från fönstret Package Manager Console kör du
cd GrpcGreeterClient
för att ändra kataloger till mappen som innehållerGrpcGreeterClient.csproj
-filerna.Kör följande kommandon:
Install-Package Grpc.Net.Client Install-Package Google.Protobuf Install-Package Grpc.Tools
Alternativet "Hantera NuGet-paket" för att installera paket
- Högerklicka på projektet i Solution Explorer>Hantera NuGet-paket.
- Välj fliken Bläddra.
- Ange Grpc.Net.Client i sökrutan.
- Välj Grpc.Net.Client-paketet på fliken Bläddra och välj Installera.
- Upprepa för
Google.Protobuf
ochGrpc.Tools
.
Lägg till greet.proto
Skapa en Protos- mapp i gRPC-klientprojektet.
Kopiera filen Protos\greet.proto från gRPC Greeter-tjänsten till mappen Protos i gRPC-klientprojektet.
Uppdatera namnområdet i filen
greet.proto
till projektets namnområde:option csharp_namespace = "GrpcGreeterClient";
Redigera
GrpcGreeterClient.csproj
-projektfilen:Högerklicka på projektet och välj Redigera projektfil.
Lägg till en objektgrupp med ett
<Protobuf>
element som refererar till filen greet.proto:<ItemGroup> <Protobuf Include="Protos\greet.proto" GrpcServices="Client" /> </ItemGroup>
Skapa Greeter-klienten
- Skapa klientprojektet för att skapa typerna i
GrpcGreeterClient
namnområdet.
Obs
De GrpcGreeterClient
typerna genereras automatiskt av byggprocessen. Verktygspaketet Grpc.Tools genererar följande filer baserat på filen greet.proto:
-
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs
: Den protokollbuffertkod som fyller, serialiserar och hämtar meddelandetyperna för begäran och svar. -
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs
: Innehåller de genererade klientklasserna.
Mer information om C#-tillgångarna som genereras automatiskt av Grpc.Toolsfinns i gRPC-tjänster med C#: Genererade C#-tillgångar.
Uppdatera gRPC-klientens
Program.cs
fil med följande kod:using System; using System.Net.Http; using System.Threading.Tasks; using Grpc.Net.Client; namespace GrpcGreeterClient { class Program { static async Task Main(string[] args) { // The port number(5001) must match the port of the gRPC server. using var channel = GrpcChannel.ForAddress("https://localhost:5001"); var client = new Greeter.GreeterClient(channel); var reply = await client.SayHelloAsync( new HelloRequest { Name = "GreeterClient" }); Console.WriteLine("Greeting: " + reply.Message); Console.WriteLine("Press any key to exit..."); Console.ReadKey(); } } }
Program.cs
innehåller startpunkten och logiken för gRPC-klienten.
Greeter-klienten skapas av:
- Instansiera en
GrpcChannel
som innehåller information för att skapa anslutningen till gRPC-tjänsten. - Använd
GrpcChannel
för att skapa Greeter-klienten:
static async Task Main(string[] args)
{
// The port number(5001) must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:5001");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
Greeter-klienten anropar den asynkrona SayHello
-metoden. Resultatet av SayHello
-anropet visas:
static async Task Main(string[] args)
{
// The port number(5001) must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:5001");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
Testa gRPC-klienten med gRPC Greeter-tjänsten
- I greeter-tjänsten trycker du på
Ctrl+F5
för att starta servern utan felsökningsprogrammet. - I
GrpcGreeterClient
-projektet trycker du påCtrl+F5
för att starta klienten utan felsökningsprogrammet.
Klienten skickar en hälsning till tjänsten med ett meddelande som innehåller dess namn, GreeterClient. Tjänsten skickar meddelandet "Hello GreeterClient" som ett svar. Svaret "Hello GreeterClient" visas i kommandotolken:
Greeting: Hello GreeterClient
Press any key to exit...
gRPC-tjänsten registrerar information om det lyckade anropet i loggarna som skrivits till kommandoprompten.
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:5001
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
Content root path: C:\GH\aspnet\docs\4\Docs\aspnetcore\tutorials\grpc\grpc-start\sample\GrpcGreeter
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
Request starting HTTP/2 POST https://localhost:5001/Greet.Greeter/SayHello application/grpc
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
Executing endpoint 'gRPC - /Greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
Executed endpoint 'gRPC - /Greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
Request finished in 78.32260000000001ms 200 application/grpc
Not
Koden i den här artikeln kräver ASP.NET Core HTTPS-utvecklingscertifikat för att skydda gRPC-tjänsten. Om .NET gRPC-klienten ger felmeddelandet The remote certificate is invalid according to the validation procedure.
eller The SSL connection could not be established.
är utvecklingscertifikatet inte betrott. Information om hur du åtgärdar det här problemet finns i Anropa en gRPC-tjänst med ett ej betrott/ogiltigt certifikat.
Nästa steg
Den här självstudien visar hur du skapar en .NET Core-gRPC--klient och en ASP.NET Core gRPC-server.
I slutet har du en gRPC-klient som kommunicerar med gRPC Greeter-tjänsten.
Visa eller ladda ned exempelkod (hur du laddar ned).
I den här handledningen:
- Skapa en gRPC-server.
- Skapa en gRPC-klient.
- Testa gRPC-klienten med gRPC Greeter-tjänsten.
Förutsättningar
- Visual Studio 2019 16.4 eller senare med ASP.NET och webbutvecklingsarbetsbelastning
- .NET Core 3.1 SDK
Skapa en gRPC-tjänst
Starta Visual Studio och välj Skapa ett nytt projekt. Alternativt, på Visual Studio Arkiv menyn, välj Nytt>Projekt.
I dialogrutan Skapa ett nytt projekt väljer du gRPC Service och väljer Nästa:
Ge projektet namnet GrpcGreeter. Det är viktigt att namnge projektet GrpcGreeter så att namnrymderna matchar när du kopierar och klistrar in kod.
Välj Skapa.
I dialogrutan Skapa en ny gRPC-tjänst:
- Mallen gRPC Service är markerad.
- Välj Skapa.
Kör tjänsten
Tryck på Ctrl+F5 för att köra utan felsökningsprogrammet.
Visual Studio visar följande dialogruta när ett projekt ännu inte har konfigurerats för att använda SSL:
Välj Ja om du litar på IIS Express SSL-certifikatet.
Följande dialogruta visas:
säkerhetsvarningsdialogrutan
Välj Ja om du samtycker till att lita på utvecklingscertifikatet.
Information om hur du kan lita på webbläsaren Firefox finns i Firefox SEC_ERROR_INADEQUATE_KEY_USAGE certifikatfel.
Visual Studio startar IIS Express och kör appen. Adressfältet visar
localhost:port#
och inte något som liknarexample.com
. Det beror på attlocalhost
är standardvärdnamnet för den lokala datorn. Localhost hanterar endast webbbegäranden från den lokala datorn. När Visual Studio skapar ett webbprojekt används en slumpmässig port för webbservern.
Loggarna visar att tjänsten lyssnar på https://localhost:5001
.
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:5001
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
Anteckning
GRPC-mallen är konfigurerad för att använda Transport Layer Security (TLS). gRPC-klienter måste använda HTTPS för att anropa servern.
macOS stöder inte ASP.NET Core gRPC med TLS. Ytterligare konfiguration krävs för att köra gRPC-tjänster på macOS. Mer information finns i Det går inte att starta ASP.NET Core gRPC-appen på macOS-.
Granska projektfilerna
GrpcGreeter projektfiler:
-
greet.proto: Filen Protos/greet.proto definierar
Greeter
gRPC och används för att generera gRPC-servertillgångarna. Mer information finns i Introduktion till gRPC-. -
Services mapp: Innehåller implementeringen av
Greeter
-tjänsten. -
appsettings.json
: Innehåller konfigurationsdata, till exempel protokoll som används av Kestrel. Mer information finns i Configuration i ASP.NET Core. -
Program.cs
: Innehåller startpunkten för gRPC-tjänsten. Mer information finns i .NET Generic Host i ASP.NET Core. -
Startup.cs
: Innehåller kod som konfigurerar appbeteende. Mer information finns i Appstart.
Skapa gRPC-klienten i en .NET-konsolapp
- Öppna en andra instans av Visual Studio och välj Skapa ett nytt projekt.
- I dialogrutan Skapa ett nytt projekt väljer du Console App (.NET Core) och väljer Nästa.
- I textrutan Projektnamn anger du GrpcGreeterClient och väljer Skapa.
Lägga till nödvändiga paket
GRPC-klientprojektet kräver följande paket:
- Grpc.Net.Client, som innehåller .NET Core-klienten.
- Google.Protobuf, som innehåller protobuf-meddelande-API:er för C#.
-
Grpc.Tools, som innehåller C#-verktygsstöd för protobuf-filer. Verktygspaketet krävs inte vid körning, så beroendet markeras med
PrivateAssets="All"
.
Installera paketen med antingen Package Manager Console (PMC) eller Hantera NuGet-paket.
PMC-alternativ för att installera paket
I Visual Studio väljer du Tools>NuGet Package Manager>Package Manager Console
Från fönstret Package Manager Console kör du
cd GrpcGreeterClient
för att ändra kataloger till mappen som innehållerGrpcGreeterClient.csproj
-filerna.Kör följande kommandon:
Install-Package Grpc.Net.Client Install-Package Google.Protobuf Install-Package Grpc.Tools
Alternativet "Hantera NuGet-paket" för att installera paket
- Högerklicka på projektet i Solution Explorer>Hantera NuGet-paket.
- Välj fliken Bläddra.
- Ange Grpc.Net.Client i sökrutan.
- Välj Grpc.Net.Client-paketet på fliken Bläddra och välj Installera.
- Upprepa för
Google.Protobuf
ochGrpc.Tools
.
Lägg till greet.proto
Skapa en Protos- mapp i gRPC-klientprojektet.
Kopiera filen Protos\greet.proto från gRPC Greeter-tjänsten till mappen Protos i gRPC-klientprojektet.
Uppdatera namnområdet i filen
greet.proto
till projektets namnområde:option csharp_namespace = "GrpcGreeterClient";
Redigera
GrpcGreeterClient.csproj
-projektfilen:Högerklicka på projektet och välj Redigera projektfil.
Lägg till en objektgrupp med ett
<Protobuf>
element som refererar till filen greet.proto:<ItemGroup> <Protobuf Include="Protos\greet.proto" GrpcServices="Client" /> </ItemGroup>
Skapa Greeter-klienten
- Skapa klientprojektet för att skapa typerna i
GrpcGreeterClient
namnområdet.
Not
De GrpcGreeterClient
typerna genereras automatiskt av byggprocessen. Verktygspaketet Grpc.Tools genererar följande filer baserat på filen greet.proto:
-
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs
: Den protokollbuffertkod som fyller, serialiserar och hämtar meddelandetyperna för begäran och svar. -
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs
: Innehåller de genererade klientklasserna.
Mer information om C#-tillgångarna som genereras automatiskt av Grpc.Toolsfinns i gRPC-tjänster med C#: Genererade C#-tillgångar.
Uppdatera gRPC-klientens Program.cs
fil med följande kod:
using System;
using System.Net.Http;
using System.Threading.Tasks;
using Grpc.Net.Client;
namespace GrpcGreeterClient
{
class Program
{
static async Task Main(string[] args)
{
// The port number(5001) must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:5001");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
}
}
Program.cs
innehåller startpunkten och logiken för gRPC-klienten.
Greeter-klienten skapas av:
- Instansiera en
GrpcChannel
som innehåller information för att skapa anslutningen till gRPC-tjänsten. - Använd
GrpcChannel
för att skapa Greeter-klienten:
static async Task Main(string[] args)
{
// The port number(5001) must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:5001");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
Greeter-klienten anropar den asynkrona metoden SayHello
. Resultatet av SayHello
-anropet visas:
static async Task Main(string[] args)
{
// The port number(5001) must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:5001");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
Testa gRPC-klienten med gRPC Greeter-tjänsten
- I greeter-tjänsten trycker du på
Ctrl+F5
för att starta servern utan felsökningsprogrammet. - I
GrpcGreeterClient
-projektet trycker du påCtrl+F5
för att starta klienten utan felsökningsprogrammet.
Klienten skickar en hälsning till tjänsten med ett meddelande som innehåller dess namn, GreeterClient. Tjänsten skickar meddelandet "Hello GreeterClient" som ett svar. Svaret "Hello GreeterClient" visas i kommandotolken:
Greeting: Hello GreeterClient
Press any key to exit...
gRPC-tjänsten registrerar information om det lyckade anropet i loggarna som skrivs ut till kommandotolken.
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:5001
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
Content root path: C:\GH\aspnet\docs\4\Docs\aspnetcore\tutorials\grpc\grpc-start\sample\GrpcGreeter
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
Request starting HTTP/2 POST https://localhost:5001/Greet.Greeter/SayHello application/grpc
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
Executing endpoint 'gRPC - /Greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
Executed endpoint 'gRPC - /Greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
Request finished in 78.32260000000001ms 200 application/grpc
Notera
Koden i den här artikeln kräver ASP.NET Core HTTPS-utvecklingscertifikat för att skydda gRPC-tjänsten. Om .NET gRPC-klienten misslyckas och visar meddelandet The remote certificate is invalid according to the validation procedure.
eller The SSL connection could not be established.
, är utvecklingscertifikatet inte betrott. Information om hur du åtgärdar det här problemet finns i Anropa en gRPC-tjänst med ett ej betrott/ogiltigt certifikat.
Nästa steg
ASP.NET Core