Zelfstudie: Een gRPC-client en -server maken in ASP.NET Core
Deze zelfstudie laat zien hoe u een .NET Core-gRPC--client en een ASP.NET Core gRPC-server maakt. Aan het einde hebt u een gRPC-client die communiceert met de gRPC Greeter-service.
In deze zelfstudie gaat u het volgende doen:
- Maak een gRPC-server.
- Maak een gRPC-client.
- Test de gRPC-client met de gRPC Greeter-service.
Voorwaarden
Visual Studio 2022 met de ASP.NET- en webontwikkelingsworkload.
Een gRPC-service maken
- Start Visual Studio 2022 en selecteer Nieuw project.
- Zoek in het dialoogvenster Een nieuw project maken naar
gRPC
. Selecteer ASP.NET Core gRPC Service en selecteer Volgende. - Voer in het dialoogvenster Uw nieuwe project configureren
GrpcGreeter
in voor Projectnaam. Het is belangrijk om het project een naam te geven GrpcGreeter zodat de naamruimten overeenkomen wanneer u code kopieert en plakt. - Selecteer Volgende.
- Selecteer in het dialoogvenster Aanvullende informatie.NET 9.0 (Standard Term Support) en selecteer vervolgens Maken.
De service uitvoeren
Druk op Ctrl+F5 om uit te voeren zonder het foutopsporingsprogramma.
Visual Studio geeft het volgende dialoogvenster weer wanneer een project nog niet is geconfigureerd voor het gebruik van SSL:
Selecteer Ja als u het IIS Express SSL-certificaat vertrouwt.
Het volgende dialoogvenster wordt weergegeven:
Selecteer Ja als u akkoord gaat met het vertrouwen van het ontwikkelingscertificaat.
Zie Firefox SEC_ERROR_INADEQUATE_KEY_USAGE certificaatfoutvoor meer informatie over het vertrouwen van de Firefox-browser.
Visual Studio:
- Start Kestrel-server.
- Hiermee wordt een browser gestart.
- Hiermee gaat u naar
http://localhost:port
, zoalshttp://localhost:7042
.- poort: een willekeurig toegewezen poortnummer voor de app.
-
localhost
: de standaardhostnaam voor de lokale computer. Localhost dient alleen webaanvragen van de lokale computer.
In de logboeken wordt de service weergegeven die luistert op https://localhost:<port>
, waarbij <port>
het localhost-poortnummer is dat willekeurig is toegewezen wanneer het project wordt gemaakt en ingesteld in 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
Notitie
De gRPC-sjabloon is geconfigureerd voor het gebruik van TLS-(Transport Layer Security). gRPC-clients moeten HTTPS gebruiken om de server aan te roepen. Het localhostpoortnummer van de gRPC-service wordt willekeurig toegewezen wanneer het project wordt gemaakt en ingesteld in de Eigenschappen\launchSettings.jsop bestand van het gRPC-serviceproject.
De projectbestanden onderzoeken
GrpcGreeter projectbestanden:
-
Protos/greet.proto
: definieert deGreeter
gRPC en wordt gebruikt om de gRPC-serverassets te genereren. Zie Inleiding tot gRPC-voor meer informatie. -
Services
map: Bevat de implementatie van deGreeter
-service. -
appSettings.json
: bevat configuratiegegevens zoals het protocol dat door Kestrelwordt gebruikt. Zie Configuratie in ASP.NET Corevoor meer informatie. -
Program.cs
, die het volgende bevat:- Het toegangspunt voor de gRPC-service. Zie .NET Generic Host in ASP.NET Corevoor meer informatie.
- Code waarmee app-gedrag wordt geconfigureerd. Voor meer informatie, zie App-opstart.
De gRPC-client maken in een .NET-console-app
- Open een tweede exemplaar van Visual Studio en selecteer Nieuw project.
- Selecteer in het dialoogvenster Een nieuw project makenConsole-appen selecteer Volgende.
- Voer in het tekstvak ProjectnaamGrpcGreeterClient in en selecteer Volgende.
- Selecteer in het dialoogvenster Aanvullende informatie.NET 9.0 (Standaardtermijnondersteuning) en selecteer daarna Maken.
Vereiste NuGet-pakketten toevoegen
Voor het gRPC-clientproject zijn de volgende NuGet-pakketten vereist:
- Grpc.Net.Client, die de .NET Core-client bevat.
- Google.Protobuf, die protobuf-bericht-API's voor C# bevat.
-
Grpc.Tools, die C#-toolingondersteuning voor protobuf-bestanden bevatten. Het hulpprogrammapakket is niet vereist tijdens runtime, dus de afhankelijkheid wordt gemarkeerd met
PrivateAssets="All"
.
Installeer de pakketten met behulp van de Package Manager Console (PMC) of NuGet-pakketten beheren.
PMC-optie voor het installeren van pakketten
Kies in Visual Studio Tools>NuGet Package Manager>Package Manager Console
Voer in het Venster Package Manager Console
cd GrpcGreeterClient
uit om mappen te wijzigen in de map met deGrpcGreeterClient.csproj
-bestanden.Voer de volgende opdrachten uit:
Install-Package Grpc.Net.Client Install-Package Google.Protobuf Install-Package Grpc.Tools
Optie NuGet-pakketten beheren om pakketten te installeren
- Klik met de rechtermuisknop op het project in Solution Explorer>NuGet-pakketten beheren.
- Selecteer het tabblad Bladeren.
- Voer Grpc.Net.Client- in het zoekvak in.
- Selecteer het pakket Grpc.Net.Client op het tabblad Bladeren en selecteer Installeren.
- Herhaal dit voor
Google.Protobuf
enGrpc.Tools
.
Voeg greet.proto toe
Maak een Protos- map in het gRPC-clientproject.
Kopieer het bestand Protos\greet.proto van de gRPC Greeter-service naar de map Protos in het gRPC-clientproject.
Werk de naamruimte in het
greet.proto
-bestand bij naar de naamruimte van het project:option csharp_namespace = "GrpcGreeterClient";
Bewerk het
GrpcGreeterClient.csproj
projectbestand:
Klik met de rechtermuisknop op het project en selecteer Projectbestand bewerken.
Voeg een itemgroep toe met een
<Protobuf>
-element dat verwijst naar het bestand greet.proto:<ItemGroup> <Protobuf Include="Protos\greet.proto" GrpcServices="Client" /> </ItemGroup>
De Greeter-client maken
- Bouw het clientproject om de typen in de
GrpcGreeterClient
naamruimte te maken.
Notitie
De GrpcGreeterClient
typen worden automatisch gegenereerd door het buildproces. Het hulpprogrammapakket Grpc.Tools genereert de volgende bestanden op basis van het bestand greet.proto:
-
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs
: de protocolbuffercode die de aanvraag- en antwoordberichttypen vult, serialiseert en ophaalt. -
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs
: bevat de gegenereerde clientklassen.
Voor meer informatie over de C#-assets die automatisch worden gegenereerd door Grpc.Tools, zie gRPC-services met C#: Gegenereerde C#-assets.
Werk het gRPC-clientbestand
Program.cs
bij met de volgende code.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();
Vervang in de voorgaande gemarkeerde code het localhost-poortnummer
7042
door hetHTTPS
poortnummer dat is opgegeven inProperties/launchSettings.json
binnen hetGrpcGreeter
-serviceproject.
Program.cs
bevat het toegangspunt en de logica voor de gRPC-client.
De Greeter-client wordt gemaakt door:
- Instantieer een
GrpcChannel
met de informatie voor het maken van de verbinding met de gRPC-dienst. - De
GrpcChannel
gebruiken om de Greeter-client te maken:
// 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();
De Greeter-client roept de asynchrone SayHello
methode aan. Het resultaat van de SayHello
-aanroep wordt weergegeven:
// 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();
De gRPC-client testen met de gRPC Greeter-service
Werk het appsettings.Development.json
bestand bij door de volgende gemarkeerde regels toe te voegen:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning",
"Microsoft.AspNetCore.Hosting": "Information",
"Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information"
}
}
}
- Druk in het
GrpcGreeter
serviceproject opCtrl+F5
om de server te starten zonder het foutopsporingsprogramma. - Druk in het
GrpcGreeterClient
consoleproject opCtrl+F5
om de client te starten zonder het foutopsporingsprogramma.
De client stuurt een begroeting naar de service met een bericht met de naam, GreeterClient. De service verzendt het bericht Hello GreeterClient als antwoord. Het antwoord 'Hello GreeterClient' wordt weergegeven in de opdrachtprompt:
Greeting: Hello GreeterClient
Press any key to exit...
De gRPC-service registreert de details van de geslaagde aanroep in de logboeken die naar de opdrachtprompt zijn geschreven:
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
Notitie
Voor de code in dit artikel is het ASP.NET Core HTTPS-ontwikkelingscertificaat vereist om de gRPC-service te beveiligen. Als de .NET gRPC-client mislukt met het bericht The remote certificate is invalid according to the validation procedure.
of The SSL connection could not be established.
, wordt het ontwikkelingscertificaat niet vertrouwd. Zie Een gRPC-service aanroepen met een niet-vertrouwd/ongeldig certificaatom dit probleem op te lossen.
Volgende stappen
- Bekijk of download de voltooide voorbeeldcode voor deze handleiding (hoe jekunt downloaden).
- Overzicht van gRPC op .NET
- gRPC-services met C#
- gRPC migreren van C-core naar gRPC voor .NET-
Deze zelfstudie laat zien hoe u een .NET Core-gRPC--client en een ASP.NET Core gRPC-server maakt. Aan het einde hebt u een gRPC-client die communiceert met de gRPC Greeter-service.
In deze zelfstudie gaat u het volgende doen:
- Maak een gRPC-server.
- Maak een gRPC-client.
- Test de gRPC-client met de gRPC Greeter-service.
Voorwaarden
Visual Studio 2022 met de ASP.NET- en webontwikkelingsworkload.
Een gRPC-service maken
- Start Visual Studio 2022 en selecteer Nieuw project.
- In het dialoogvenster Een nieuw project maken, zoek naar
gRPC
. Selecteer ASP.NET Core gRPC Service en selecteer Volgende. - Voer in het dialoogvenster Uw nieuwe project configureren
GrpcGreeter
in voor Projectnaam. Het is belangrijk om het project een naam te geven GrpcGreeter zodat de naamruimten overeenkomen wanneer u code kopieert en plakt. - Selecteer Volgende.
- Selecteer in het dialoogvenster Aanvullende informatie de optie .NET 8.0 (Long Term Support) en selecteer vervolgens Maken.
De service uitvoeren
Druk op Ctrl+F5 om uit te voeren zonder het foutopsporingsprogramma.
Visual Studio geeft het volgende dialoogvenster weer wanneer een project nog niet is geconfigureerd voor het gebruik van SSL:
Selecteer Ja als u het IIS Express SSL-certificaat vertrouwt.
Het volgende dialoogvenster wordt weergegeven:
Selecteer Ja als u akkoord gaat met het vertrouwen van het ontwikkelingscertificaat.
Zie Firefox SEC_ERROR_INADEQUATE_KEY_USAGE certificaatfoutvoor meer informatie over het vertrouwen van de Firefox-browser.
Visual Studio:
- Start de Kestrel server.
- Hiermee wordt een browser gestart.
- Hiermee navigeert u naar
http://localhost:port
, bijvoorbeeldhttp://localhost:7042
.- poort: een willekeurig toegewezen poortnummer voor de app.
-
localhost
: de standaardhostnaam voor de lokale computer. Localhost dient alleen webaanvragen van de lokale computer.
In de logboeken wordt de service weergegeven die luistert op https://localhost:<port>
, waarbij <port>
het localhost-poortnummer is dat willekeurig is toegewezen wanneer het project wordt gemaakt en ingesteld in 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
Notitie
De gRPC-sjabloon is geconfigureerd voor het gebruik van TLS-(Transport Layer Security). gRPC-clients moeten HTTPS gebruiken om de server aan te roepen. Het localhostpoortnummer van de gRPC-service wordt willekeurig toegewezen wanneer het project wordt gemaakt en ingesteld in de Eigenschappen\launchSettings.jsop bestand van het gRPC-serviceproject.
De projectbestanden onderzoeken
GrpcGreeter projectbestanden :
-
Protos/greet.proto
: definieert deGreeter
gRPC en wordt gebruikt om de gRPC-serverassets te genereren. Zie Inleiding tot gRPC-voor meer informatie. -
Services
map: Bevat de implementatie van deGreeter
-service. -
appSettings.json
: bevat configuratiegegevens zoals het protocol dat door Kestrelwordt gebruikt. Zie Configuratie in ASP.NET Corevoor meer informatie. -
Program.cs
, die het volgende bevat:- Het toegangspunt voor de gRPC-service. Zie .NET Generic Host in ASP.NET Corevoor meer informatie.
- Code waarmee app-gedrag wordt geconfigureerd. Voor meer informatie, zie app-opstart.
De gRPC-client maken in een .NET-console-app
- Open een tweede exemplaar van Visual Studio en selecteer Nieuw project.
- Selecteer in het dialoogvenster Een nieuw project makenConsole-appen selecteer Volgende.
- Voer in het tekstvak ProjectnaamGrpcGreeterClient in en selecteer Volgende.
- Kies in het dialoogvenster Aanvullende informatie.NET 8.0 (Langdurige Ondersteuning) en kies vervolgens Maken.
Vereiste NuGet-pakketten toevoegen
Voor het gRPC-clientproject zijn de volgende NuGet-pakketten vereist:
- Grpc.Net.Client, die de .NET Core-client bevat.
- Google.Protobuf, die protobuf-bericht-API's voor C# bevat.
-
Grpc.Tools, die C#-toolingondersteuning voor protobuf-bestanden bevatten. Het hulpprogrammapakket is niet vereist tijdens runtime, dus de afhankelijkheid wordt gemarkeerd met
PrivateAssets="All"
.
Installeer de pakketten met behulp van de Package Manager Console (PMC) of NuGet-pakketten beheren.
PMC-optie voor het installeren van pakketten
Kies in Visual Studio Hulpmiddelen>NuGet Package Manager>Package Manager Console
Voer in het Venster Package Manager Console
cd GrpcGreeterClient
uit om mappen te wijzigen in de map met deGrpcGreeterClient.csproj
-bestanden.Voer de volgende opdrachten uit:
Install-Package Grpc.Net.Client Install-Package Google.Protobuf Install-Package Grpc.Tools
Optie NuGet-pakketten beheren om pakketten te installeren
- Klik met de rechtermuisknop op het project in Solution Explorer>NuGet-pakketten beheren.
- Selecteer het tabblad Bladeren.
- Voer Grpc.Net.Client- in het zoekvak in.
- Selecteer het Grpc.Net.Client-pakket op het tabblad Bladeren en kies Installeren.
- Herhaal dit voor
Google.Protobuf
enGrpc.Tools
.
Voeg greet.proto toe
Maak een Protos- map in het gRPC-clientproject.
Kopieer het bestand Protos\greet.proto van de gRPC Greeter-service naar de map Protos in het gRPC-clientproject.
Werk de naamruimte in het
greet.proto
-bestand bij naar de naamruimte van het project:option csharp_namespace = "GrpcGreeterClient";
Bewerk het
GrpcGreeterClient.csproj
projectbestand:
Klik met de rechtermuisknop op het project en selecteer Projectbestand bewerken.
Voeg een itemgroep toe met een
<Protobuf>
-element dat verwijst naar het bestand greet.proto:<ItemGroup> <Protobuf Include="Protos\greet.proto" GrpcServices="Client" /> </ItemGroup>
De Greeter-client maken
- Bouw het clientproject om de typen in de
GrpcGreeterClient
naamruimte te maken.
Notitie
De GrpcGreeterClient
typen worden automatisch gegenereerd door het buildproces. Het hulpprogrammapakket Grpc.Tools genereert de volgende bestanden op basis van het bestand greet.proto:
-
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs
: de protocolbuffercode die de aanvraag- en antwoordberichttypen vult, serialiseert en ophaalt. -
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs
: bevat de gegenereerde clientklassen.
Zie voor meer informatie over de C#-assets die automatisch worden gegenereerd door Grpc.Tools, gRPC-services met C#: Gegenereerde C#-assets.
Werk het gRPC-clientbestand
Program.cs
bij met de volgende code.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();
Vervang in de voorgaande gemarkeerde code het localhost-poortnummer
7042
door hetHTTPS
poortnummer dat is opgegeven inProperties/launchSettings.json
binnen hetGrpcGreeter
-serviceproject.
Program.cs
bevat het toegangspunt en de logica voor de gRPC-client.
De Greeter-client wordt gemaakt door:
- Instantieer een
GrpcChannel
met de informatie voor het maken van de verbinding met de gRPC-service. - De
GrpcChannel
gebruiken om de Greeter-client te maken:
// 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();
De Greeter-client roept de asynchrone SayHello
methode aan. Het resultaat van de SayHello
-aanroep wordt weergegeven:
// 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();
De gRPC-client testen met de gRPC Greeter-service
Werk het appsettings.Development.json
bestand bij door de volgende gemarkeerde regels toe te voegen:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
,"Microsoft.AspNetCore.Hosting": "Information",
"Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information"
}
}
}
- Druk in de Greeter-service op
Ctrl+F5
om de server te starten zonder het foutopsporingsprogramma. - Druk in het
GrpcGreeterClient
project opCtrl+F5
om de client te starten zonder het foutopsporingsprogramma.
De client stuurt een begroeting naar de service met een bericht met de naam, GreeterClient. De service verzendt het bericht Hello GreeterClient als antwoord. Het antwoord 'Hello GreeterClient' wordt weergegeven in de opdrachtprompt:
Greeting: Hello GreeterClient
Press any key to exit...
De gRPC-service registreert de details van de geslaagde aanroep in de logboeken die naar de opdrachtprompt zijn geschreven:
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
Notitie
Voor de code in dit artikel is het ASP.NET Core HTTPS-ontwikkelingscertificaat vereist om de gRPC-service te beveiligen. Als de .NET gRPC-client mislukt met het bericht The remote certificate is invalid according to the validation procedure.
of The SSL connection could not be established.
, wordt het ontwikkelingscertificaat niet vertrouwd. Zie Een gRPC-service aanroepen met een niet-vertrouwd/ongeldig certificaatom dit probleem op te lossen.
Volgende stappen
- Bekijk of download de voltooide voorbeeldcode voor deze zelfstudie (hoe ukunt downloaden).
- Een overzicht van voor gRPC op .NET
- De gRPC-services met C#
- gRPC migreren van C-core naar gRPC voor .NET-
Deze zelfstudie laat zien hoe u een .NET Core-gRPC--client en een ASP.NET Core gRPC-server maakt. Aan het einde hebt u een gRPC-client die communiceert met de gRPC Greeter-service.
In deze zelfstudie gaat u het volgende doen:
- Maak een gRPC-server.
- Maak een gRPC-client.
- Test de gRPC-client met de gRPC Greeter-service.
Voorwaarden
Visual Studio 2022 met de ASP.NET- en webontwikkelingsworkload.
Een gRPC-service maken
- Start Visual Studio 2022 en selecteer Een nieuw project maken.
- Zoek in het dialoogvenster Een nieuw project maken naar
gRPC
. Selecteer ASP.NET Core gRPC Service en selecteer Volgende. - In het dialoogvenster Configure your new project voer
GrpcGreeter
in voor Project name. Het is belangrijk om het project een naam te geven GrpcGreeter zodat de naamruimten overeenkomen wanneer u code kopieert en plakt. - Selecteer Volgende.
- Selecteer in het dialoogvenster Aanvullende informatie de optie .NET 6.0 (Long-term support) en selecteer vervolgens Maken.
De service uitvoeren
Druk op Ctrl+F5 om uit te voeren zonder het foutopsporingsprogramma.
Visual Studio geeft het volgende dialoogvenster weer wanneer een project nog niet is geconfigureerd voor het gebruik van SSL:
Selecteer Ja als u het IIS Express SSL-certificaat vertrouwt.
Het volgende dialoogvenster wordt weergegeven:
Selecteer Ja als u akkoord gaat met het vertrouwen van het ontwikkelingscertificaat.
Zie Firefox SEC_ERROR_INADEQUATE_KEY_USAGE certificaatfoutvoor meer informatie over het vertrouwen van de Firefox-browser.
Visual Studio:
- Starten Kestrel server.
- Hiermee wordt een browser gestart.
- Hiermee navigeert u naar
http://localhost:port
, bijvoorbeeldhttp://localhost:7042
.- poort: een willekeurig toegewezen poortnummer voor de app.
-
localhost
: de standaardhostnaam voor de lokale computer. Localhost dient alleen webaanvragen van de lokale computer.
In de logboeken wordt de service weergegeven die luistert op https://localhost:<port>
, waarbij <port>
het localhost-poortnummer is dat willekeurig is toegewezen wanneer het project wordt gemaakt en ingesteld in 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
Notitie
De gRPC-sjabloon is geconfigureerd voor het gebruik van TLS-(Transport Layer Security). gRPC-clients moeten HTTPS gebruiken om de server aan te roepen. Het localhostpoortnummer van de gRPC-service wordt willekeurig toegewezen wanneer het project wordt gemaakt en ingesteld in de Eigenschappen\launchSettings.jsop bestand van het gRPC-serviceproject.
macOS biedt geen ondersteuning voor ASP.NET Core gRPC met TLS. Aanvullende configuratie is vereist voor het uitvoeren van gRPC-services op macOS. Zie Kan ASP.NET Core gRPC-app niet starten op macOS-voor meer informatie.
De projectbestanden onderzoeken
GrpcGreeter projectbestanden:
-
Protos/greet.proto
: definieert deGreeter
gRPC en wordt gebruikt om de gRPC-serverassets te genereren. Zie Inleiding tot gRPC-voor meer informatie. -
Services
map: Bevat de implementatie van deGreeter
-service. -
appSettings.json
: bevat configuratiegegevens zoals het protocol dat door Kestrelwordt gebruikt. Zie Configuratie in ASP.NET Corevoor meer informatie. -
Program.cs
, die het volgende bevat:- Het toegangspunt voor de gRPC-service. Zie .NET Generic Host in ASP.NET Corevoor meer informatie.
- Code waarmee app-gedrag wordt geconfigureerd. Voor meer informatie, zie App startup.
De gRPC-client maken in een .NET-console-app
- Open een tweede exemplaar van Visual Studio en selecteer Een nieuw project maken.
- Selecteer in het dialoogvenster Een nieuw project makenConsoletoepassingen selecteer Volgende.
- Voer in het tekstvak ProjectnaamGrpcGreeterClient in en selecteer Volgende.
- Selecteer in het dialoogvenster Aanvullende informatie.NET 6.0 (langdurige ondersteuning) en selecteer vervolgens Maak.
Vereiste NuGet-pakketten toevoegen
Voor het gRPC-clientproject zijn de volgende NuGet-pakketten vereist:
- Grpc.Net.Client, die de .NET Core-client bevat.
- Google.Protobuf, die protobuf-bericht-API's voor C# bevat.
-
Grpc.Tools, die C#-toolingondersteuning voor protobuf-bestanden bevatten. Het hulpprogrammapakket is niet vereist tijdens runtime, dus de afhankelijkheid wordt gemarkeerd met
PrivateAssets="All"
.
Installeer de pakketten met behulp van de Package Manager Console (PMC) of NuGet-pakketten beheren.
PMC-optie voor het installeren van pakketten
Selecteer in Visual Studio Tools>NuGet Package Manager>Package Manager Console
Voer in het -venster Package Manager Console
cd GrpcGreeterClient
uit om de directory te wijzigen naar de map met deGrpcGreeterClient.csproj
-bestanden.Voer de volgende opdrachten uit:
Install-Package Grpc.Net.Client Install-Package Google.Protobuf Install-Package Grpc.Tools
Optie NuGet-pakketten beheren om pakketten te installeren
- Klik met de rechtermuisknop op het project in Solution Explorer>NuGet-pakketten beheren.
- Selecteer het tabblad Bladeren.
- Voer Grpc.Net.Client- in het zoekvak in.
- Selecteer het pakket Grpc.Net.Client op het tabblad Bladeren en selecteer Installeren.
- Herhaal dit voor
Google.Protobuf
enGrpc.Tools
.
Voeg greet.proto toe
Maak een Protos- map in het gRPC-clientproject.
Kopieer het bestand Protos\greet.proto van de gRPC Greeter-service naar de map Protos in het gRPC-clientproject.
Werk de naamruimte in het
greet.proto
-bestand bij naar de naamruimte van het project:option csharp_namespace = "GrpcGreeterClient";
Bewerk het
GrpcGreeterClient.csproj
projectbestand:
Klik met de rechtermuisknop op het project en selecteer Projectbestand bewerken.
Voeg een itemgroep toe met een
<Protobuf>
-element dat verwijst naar het bestand greet.proto:<ItemGroup> <Protobuf Include="Protos\greet.proto" GrpcServices="Client" /> </ItemGroup>
De Greeter-client maken
- Bouw het clientproject om de typen in de
GrpcGreeterClient
naamruimte te maken.
Notitie
De GrpcGreeterClient
typen worden automatisch gegenereerd door het buildproces. Het hulpprogrammapakket Grpc.Tools genereert de volgende bestanden op basis van het bestand greet.proto:
-
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs
: de protocolbuffercode die de aanvraag- en antwoordberichttypen vult, serialiseert en ophaalt. -
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs
: bevat de gegenereerde clientklassen.
Voor meer informatie over de C#-assets die automatisch worden gegenereerd door Grpc.Tools, zie gRPC-services met C#: Gegenereerde C#-assets.
Werk het gRPC-clientbestand
Program.cs
bij met de volgende code.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();
Vervang in de voorgaande gemarkeerde code het localhost-poortnummer
7042
door hetHTTPS
poortnummer dat is opgegeven inProperties/launchSettings.json
binnen hetGrpcGreeter
-serviceproject.
Program.cs
bevat het toegangspunt en de logica voor de gRPC-client.
De Greeter-client wordt gemaakt door:
- Instantieer een
GrpcChannel
met de informatie voor het maken van de verbinding met de gRPC-service. - De
GrpcChannel
gebruiken om de Greeter-client te maken:
// 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();
De Greeter-client roept de asynchrone SayHello
methode aan. Het resultaat van de SayHello
-aanroep wordt weergegeven:
// 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();
De gRPC-client testen met de gRPC Greeter-service
Werk het appsettings.Development.json
bestand bij door de volgende gemarkeerde regels toe te voegen:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
,"Microsoft.AspNetCore.Hosting": "Information",
"Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information"
}
}
}
- Druk in de Greeter-service op
Ctrl+F5
om de server te starten zonder het foutopsporingsprogramma. - Druk in het
GrpcGreeterClient
project opCtrl+F5
om de client te starten zonder het foutopsporingsprogramma.
De client stuurt een begroeting naar de service met een bericht met de naam, GreeterClient. De service verzendt het bericht Hello GreeterClient als antwoord. Het antwoord 'Hello GreeterClient' wordt weergegeven in de opdrachtprompt:
Greeting: Hello GreeterClient
Press any key to exit...
De gRPC-service registreert de details van de geslaagde aanroep in de logboeken die naar de opdrachtprompt zijn geschreven:
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
Notitie
Voor de code in dit artikel is het ASP.NET Core HTTPS-ontwikkelingscertificaat vereist om de gRPC-service te beveiligen. Als de .NET gRPC-client mislukt met het bericht The remote certificate is invalid according to the validation procedure.
of The SSL connection could not be established.
, wordt het ontwikkelingscertificaat niet vertrouwd. Zie Een gRPC-service aanroepen met een niet-vertrouwd/ongeldig certificaatom dit probleem op te lossen.
Volgende stappen
- Bekijk of download de voltooide voorbeeldcode voor deze tutorial (hoe te downloaden).
- overzicht van voor gRPC op .NET-
- gRPC-services met C#
- gRPC migreren van C-core naar gRPC voor .NET-
Deze zelfstudie laat zien hoe u een .NET Core-gRPC--client en een ASP.NET Core gRPC-server maakt. Aan het einde hebt u een gRPC-client die communiceert met de gRPC Greeter-service.
In deze zelfstudie gaat u het volgende doen:
- Maak een gRPC-server.
- Maak een gRPC-client.
- Test de gRPC-client met de gRPC-groetendienst.
Voorwaarden
- Visual Studio 2022 met de ASP.NET- en webontwikkelingsworkload.
- .NET 6.0 SDK
Een gRPC-service maken
- Start Visual Studio 2022 en selecteer Een nieuw project maken.
- In het dialoogvenster Een nieuw project maken, zoek naar
gRPC
. Selecteer ASP.NET Core gRPC Service en selecteer Volgende. - Voer in het dialoogvenster Uw nieuwe project configureren
GrpcGreeter
in voor projectnaam. Het is belangrijk om het project een naam te geven GrpcGreeter zodat de naamruimten overeenkomen wanneer u code kopieert en plakt. - Selecteer Volgende.
- Selecteer in het dialoogvenster Aanvullende informatie.NET 6.0 (Long-term support) en selecteer vervolgens Maken.
De service uitvoeren
Druk op Ctrl+F5 om uit te voeren zonder het foutopsporingsprogramma.
Visual Studio geeft het volgende dialoogvenster weer wanneer een project nog niet is geconfigureerd voor het gebruik van SSL:
Selecteer Ja als u het IIS Express SSL-certificaat vertrouwt.
Het volgende dialoogvenster wordt weergegeven:
Selecteer Ja als u akkoord gaat met het vertrouwen van het ontwikkelingscertificaat.
Zie Firefox SEC_ERROR_INADEQUATE_KEY_USAGE certificaatfoutvoor meer informatie over het vertrouwen van de Firefox-browser.
Visual Studio:
- Start de Kestrel server.
- Hiermee wordt een browser gestart.
- Hiermee navigeert u naar
http://localhost:port
, bijvoorbeeld naarhttp://localhost:7042
.- poort: een willekeurig toegewezen poortnummer voor de app.
-
localhost
: de standaardhostnaam voor de lokale computer. Localhost dient alleen webaanvragen van de lokale computer.
In de logboeken wordt weergegeven dat de service luistert op https://localhost:<port>
, waarbij <port>
het localhost-poortnummer is dat willekeurig wordt toegewezen wanneer het project wordt gemaakt en ingesteld op 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
Notitie
De gRPC-sjabloon is geconfigureerd voor het gebruik van TLS-(Transport Layer Security). gRPC-clients moeten HTTPS gebruiken om de server aan te roepen. Het localhostpoortnummer van de gRPC-service wordt willekeurig toegewezen wanneer het project wordt gemaakt en ingesteld in de Eigenschappen\launchSettings.jsop bestand van het gRPC-serviceproject.
macOS biedt geen ondersteuning voor ASP.NET Core gRPC met TLS. Aanvullende configuratie is vereist voor het uitvoeren van gRPC-services op macOS. Zie Kan ASP.NET Core gRPC-app niet starten op macOS-voor meer informatie.
De projectbestanden onderzoeken
GrpcGreeter projectbestanden:
-
Protos/greet.proto
: definieert deGreeter
gRPC en wordt gebruikt om de gRPC-serverassets te genereren. Zie Inleiding tot gRPC-voor meer informatie. -
Services
map: Bevat de implementatie van deGreeter
-service. -
appSettings.json
: bevat configuratiegegevens zoals het protocol dat door Kestrelwordt gebruikt. Zie Configuratie in ASP.NET Corevoor meer informatie. -
Program.cs
, die het volgende bevat:- Het toegangspunt voor de gRPC-service. Zie .NET Generic Host in ASP.NET Corevoor meer informatie.
- Code waarmee app-gedrag wordt geconfigureerd. Voor meer informatie, zie App startup.
De gRPC-client maken in een .NET-console-app
- Open een tweede exemplaar van Visual Studio en selecteer Een nieuw project maken.
- Selecteer in het dialoogvenster 'Een nieuw project maken' de optie 'Consoletoepassing'en klik op 'Volgende'.
- Voer in het tekstvak ProjectnaamGrpcGreeterClient in en selecteer Volgende.
- Selecteer in het dialoogvenster Aanvullende informatie.NET 6.0 (langdurige ondersteuning) en selecteer vervolgens Maken.
Vereiste NuGet-pakketten toevoegen
Voor het gRPC-clientproject zijn de volgende NuGet-pakketten vereist:
- Grpc.Net.Client, die de .NET Core-client bevat.
- Google.Protobuf, die protobuf-bericht-API's voor C# bevat.
-
Grpc.Tools, die C#-toolingondersteuning voor protobuf-bestanden bevatten. Het hulpprogrammapakket is niet vereist tijdens runtime, dus de afhankelijkheid wordt gemarkeerd met
PrivateAssets="All"
.
Installeer de pakketten met behulp van de Package Manager Console (PMC) of NuGet-pakketten beheren.
PMC-optie voor het installeren van pakketten
Selecteer in Visual Studio Hulpmiddelen>NuGet Package Manager>Package Manager Console
Voer in het Venster Package Manager Console
cd GrpcGreeterClient
uit om mappen te wijzigen in de map met deGrpcGreeterClient.csproj
-bestanden.Voer de volgende opdrachten uit:
Install-Package Grpc.Net.Client Install-Package Google.Protobuf Install-Package Grpc.Tools
Optie NuGet-pakketten beheren om pakketten te installeren
- Klik met de rechtermuisknop op het project in Solution Explorer>NuGet-pakketten beheren.
- Selecteer het tabblad Bladeren.
- Voer Grpc.Net.Client- in het zoekvak in.
- Selecteer het pakket Grpc.Net.Client op het tabblad Bladeren en selecteer Installeren.
- Herhaal dit voor
Google.Protobuf
enGrpc.Tools
.
Voeg greet.proto toe
Maak een Protos- map in het gRPC-clientproject.
Kopieer het bestand Protos\greet.proto van de gRPC Greeter-service naar de map Protos in het gRPC-clientproject.
Werk de naamruimte in het
greet.proto
-bestand bij naar de naamruimte van het project:option csharp_namespace = "GrpcGreeterClient";
Bewerk het
GrpcGreeterClient.csproj
projectbestand:
Klik met de rechtermuisknop op het project en selecteer Projectbestand bewerken.
Voeg een itemgroep toe met een
<Protobuf>
-element dat verwijst naar het bestand greet.proto:<ItemGroup> <Protobuf Include="Protos\greet.proto" GrpcServices="Client" /> </ItemGroup>
De Greeter-client maken
- Bouw het clientproject om de typen in de
GrpcGreeterClient
naamruimte te maken.
Notitie
De GrpcGreeterClient
typen worden automatisch gegenereerd door het buildproces. Het hulpprogrammapakket Grpc.Tools genereert de volgende bestanden op basis van het bestand greet.proto:
-
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs
: de protocolbuffercode die de aanvraag- en antwoordberichttypen vult, serialiseert en ophaalt. -
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs
: bevat de gegenereerde clientklassen.
Voor meer informatie over de C#-assets die automatisch worden gegenereerd door Grpc.Tools, zie gRPC-services met C#: Gegenereerde C#-assets.
Werk het gRPC-clientbestand
Program.cs
bij met de volgende code.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();
Vervang in de voorgaande gemarkeerde code het localhost-poortnummer
7042
door hetHTTPS
poortnummer dat is opgegeven inProperties/launchSettings.json
binnen hetGrpcGreeter
-serviceproject.
Program.cs
bevat het toegangspunt en de logica voor de gRPC-client.
De Greeter-client wordt gemaakt door:
- Een
GrpcChannel
instantiëren die de informatie bevat voor het creëren van de verbinding met de gRPC-service. - De
GrpcChannel
gebruiken om de Greeter-client te maken:
// 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();
De Greeter-client roept de asynchrone SayHello
methode aan. Het resultaat van de SayHello
-aanroep wordt weergegeven:
// 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();
De gRPC-client testen met de gRPC Greeter-service
- Druk in de Greeter-service op
Ctrl+F5
om de server te starten zonder het foutopsporingsprogramma. - Druk in het
GrpcGreeterClient
project opCtrl+F5
om de client te starten zonder het foutopsporingsprogramma.
De client stuurt een begroeting naar de service met een bericht met de naam, GreeterClient. De service verzendt het bericht Hello GreeterClient als antwoord. Het antwoord 'Hello GreeterClient' wordt weergegeven in de opdrachtprompt:
Greeting: Hello GreeterClient
Press any key to exit...
De gRPC-service registreert de details van de geslaagde aanroep in de logboeken die naar de opdrachtprompt zijn geschreven:
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
Werk het appsettings.Development.json
-bestand bij door de volgende regels toe te voegen:
"Microsoft.AspNetCore.Hosting": "Information",
"Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information"
Notitie
Voor de code in dit artikel is het ASP.NET Core HTTPS-ontwikkelingscertificaat vereist om de gRPC-service te beveiligen. Als de .NET gRPC-client mislukt met het bericht The remote certificate is invalid according to the validation procedure.
of The SSL connection could not be established.
, wordt het ontwikkelingscertificaat niet vertrouwd. Zie Een gRPC-service aanroepen met een niet-vertrouwd/ongeldig certificaatom dit probleem op te lossen.
Volgende stappen
- Bekijk of download de voltooide voorbeeldcode voor deze zelfstudie (hoe ukunt downloaden).
- Overzicht voor gRPC op .NET
- gRPC-services met C#
- gRPC migreren van C-core naar gRPC voor .NET-
Deze zelfstudie laat zien hoe u een .NET Core-gRPC--client en een ASP.NET Core gRPC-server maakt.
Aan het einde hebt u een gRPC-client die communiceert met de gRPC Greeter-service.
Voorbeeldcode bekijken of downloaden (hoe u kunt downloaden).
In deze zelfstudie gaat u het volgende doen:
- Maak een gRPC-server.
- Maak een gRPC-client.
- Test de gRPC-client met de gRPC Greeter-service.
Voorwaarden
- Visual Studio 2019 16.8 of hoger met de ASP.NET- en webontwikkelingsworkload
- .NET 5.0 SDK
Een gRPC-service maken
- Start Visual Studio en selecteer Een nieuw project maken.
- Selecteer in het dialoogvenster Een nieuw project makengRPC-service en selecteer Volgende.
- Voer in het dialoogvenster uw nieuwe project configureren
GrpcGreeter
voor projectnaamin. Het is belangrijk om het project een naam te geven GrpcGreeter zodat de naamruimten overeenkomen wanneer u code kopieert en plakt. - Selecteer Volgende.
- Selecteer in het dialoogvenster Aanvullende informatie.NET 5.0 in de vervolgkeuzelijst Target Framework.
- Selecteer maken.
De service uitvoeren
Druk op Ctrl+F5 om uit te voeren zonder het foutopsporingsprogramma.
Visual Studio geeft het volgende dialoogvenster weer wanneer een project nog niet is geconfigureerd voor het gebruik van SSL:
Selecteer Ja als u het IIS Express SSL-certificaat vertrouwt.
Het volgende dialoogvenster wordt weergegeven:
Selecteer Ja als u akkoord gaat met het vertrouwen van het ontwikkelingscertificaat.
Zie Firefox SEC_ERROR_INADEQUATE_KEY_USAGE certificaatfoutvoor meer informatie over het vertrouwen van de Firefox-browser.
Visual Studio startt IIS Express en voert de app uit. De adresbalk toont
localhost:port#
en niet iets alsexample.com
. Dat komt doordatlocalhost
de standaardhostnaam is voor de lokale computer. Localhost dient alleen webaanvragen van de lokale computer. Wanneer Visual Studio een webproject maakt, wordt er een willekeurige poort gebruikt voor de webserver.
De logboeken tonen dat de service luistert op 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
Notitie
De gRPC-sjabloon is geconfigureerd voor het gebruik van TLS-(Transport Layer Security). gRPC-clients moeten HTTPS gebruiken om de server aan te roepen.
macOS biedt geen ondersteuning voor ASP.NET Core gRPC met TLS. Aanvullende configuratie is vereist voor het uitvoeren van gRPC-services op macOS. Zie Kan ASP.NET Core gRPC-app niet starten op macOS-voor meer informatie.
De projectbestanden onderzoeken
GrpcGreeter projectbestanden:
-
greet.proto: Het bestand Protos/greet.proto definieert de
Greeter
gRPC en wordt gebruikt om de gRPC-serverassets te genereren. Zie Inleiding tot gRPC-voor meer informatie. -
Services map: Bevat de implementatie van de
Greeter
-service. -
appsettings.json
: bevat configuratiegegevens, zoals het protocol dat wordt gebruikt door Kestrel. Zie Configuratie in ASP.NET Corevoor meer informatie. -
Program.cs
: bevat het toegangspunt voor de gRPC-service. Zie .NET Generic Host in ASP.NET Corevoor meer informatie. -
Startup.cs
: bevat code waarmee app-gedrag wordt geconfigureerd. Zie App-opstartvoor meer informatie.
De gRPC-client maken in een .NET-console-app
- Open een tweede exemplaar van Visual Studio en selecteer Een nieuw project maken.
- In het dialoogvenster Een nieuw project maken, selecteer Console-app (.NET Core) en selecteer Volgende.
- Voer in het tekstvak ProjectnaamGrpcGreeterClient in en selecteer Maken.
Vereiste pakketten toevoegen
Voor het gRPC-clientproject zijn de volgende pakketten vereist:
- Grpc.Net.Client, die de .NET Core-client bevat.
- Google.Protobuf, die protobuf-bericht-API's voor C# bevat.
-
Grpc.Tools, die C#-toolingondersteuning voor protobuf-bestanden bevat. Het hulpprogrammapakket is niet vereist tijdens runtime, dus de afhankelijkheid wordt gemarkeerd met
PrivateAssets="All"
.
Installeer de pakketten met behulp van de Package Manager Console (PMC) of NuGet-pakketten beheren.
PMC-optie voor het installeren van pakketten
Kies in Visual Studio Tools>NuGet Package Manager>Package Manager Console
Voer in het Venster Package Manager Console
cd GrpcGreeterClient
uit om mappen te wijzigen in de map met deGrpcGreeterClient.csproj
-bestanden.Voer de volgende opdrachten uit:
Install-Package Grpc.Net.Client Install-Package Google.Protobuf Install-Package Grpc.Tools
Optie NuGet-pakketten beheren om pakketten te installeren
- Klik met de rechtermuisknop op het project in Solution Explorer>NuGet-pakketten beheren.
- Selecteer het tabblad Bladeren.
- Voer Grpc.Net.Client- in het zoekvak in.
- Selecteer het pakket Grpc.Net.Client op het tabblad Bladeren en selecteer Installeren.
- Herhaal dit voor
Google.Protobuf
enGrpc.Tools
.
Voeg greet.proto toe
Maak een Protos- map in het gRPC-clientproject.
Kopieer het bestand Protos\greet.proto van de gRPC Greeter-service naar de map Protos in het gRPC-clientproject.
Werk de naamruimte in het
greet.proto
-bestand bij naar de naamruimte van het project:option csharp_namespace = "GrpcGreeterClient";
Bewerk het
GrpcGreeterClient.csproj
projectbestand:Klik met de rechtermuisknop op het project en selecteer Projectbestand bewerken.
Voeg een itemgroep toe met een
<Protobuf>
-element dat verwijst naar het bestand greet.proto:<ItemGroup> <Protobuf Include="Protos\greet.proto" GrpcServices="Client" /> </ItemGroup>
De Greeter-client maken
- Bouw het clientproject om de typen in de
GrpcGreeterClient
naamruimte te maken.
Notitie
De GrpcGreeterClient
typen worden automatisch gegenereerd door het buildproces. Het hulpprogrammapakket Grpc.Tools genereert de volgende bestanden op basis van het bestand greet.proto:
-
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs
: de protocolbuffercode die de aanvraag- en antwoordberichttypen vult, serialiseert en ophaalt. -
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs
: bevat de gegenereerde clientklassen.
Voor meer informatie over de C#-assets die automatisch worden gegenereerd door Grpc.Tools, zie gRPC-services met C#: Gegenereerde C#-assets.
Werk het
Program.cs
-bestand van de gRPC-client bij met de volgende code: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
bevat het toegangspunt en de logica voor de gRPC-client.
De Greeter-client wordt gemaakt door:
- Een
GrpcChannel
instantiëren met de informatie om de verbinding met de gRPC-service tot stand te brengen. - De
GrpcChannel
gebruiken om de Greeter-client te maken:
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();
}
De Greeter-client roept de asynchrone SayHello
methode aan. Het resultaat van de SayHello
-aanroep wordt weergegeven:
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();
}
De gRPC-client testen met de gRPC Greeter-service
- Druk in de Greeter-service op
Ctrl+F5
om de server te starten zonder het foutopsporingsprogramma. - Druk in het
GrpcGreeterClient
project opCtrl+F5
om de client te starten zonder het foutopsporingsprogramma.
De client stuurt een begroeting naar de service met een bericht met de naam, GreeterClient. De service verzendt het bericht Hello GreeterClient als antwoord. Het antwoord 'Hello GreeterClient' wordt weergegeven in de opdrachtprompt:
Greeting: Hello GreeterClient
Press any key to exit...
De gRPC-service registreert de details van de geslaagde aanroep in de logboeken die naar de opdrachtprompt zijn geschreven:
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
Notitie
Voor de code in dit artikel is het ASP.NET Core HTTPS-ontwikkelingscertificaat vereist om de gRPC-service te beveiligen. Als de .NET gRPC-client mislukt met het bericht The remote certificate is invalid according to the validation procedure.
of The SSL connection could not be established.
, wordt het ontwikkelingscertificaat niet vertrouwd. Zie Een gRPC-service aanroepen met een niet-vertrouwd/ongeldig certificaatom dit probleem op te lossen.
Volgende stappen
Deze zelfstudie laat zien hoe u een .NET Core-gRPC--client en een ASP.NET Core gRPC-server maakt.
Aan het einde hebt u een gRPC-client die communiceert met de gRPC Greeter-service.
voorbeeldcode bekijken of downloaden (hoe te downloaden).
In deze zelfstudie gaat u het volgende doen:
- Maak een gRPC-server.
- Maak een gRPC-client.
- Test de gRPC-client met de gRPC Greeter-service.
Voorwaarden
- Visual Studio 2019 16.4 of hoger met de ASP.NET- en webontwikkelingsworkload
- .NET Core 3.1 SDK
Een gRPC-service maken
Start Visual Studio en selecteer Een nieuw project maken. U kunt ook in het menu Bestand Visual StudioNew>Projectselecteren.
Selecteer in het dialoogvenster Een nieuw project makengRPC Service en selecteer Volgende:
Geef het project de naam GrpcGreeter. Het is belangrijk om het project een naam te geven GrpcGreeter zodat de naamruimten overeenkomen wanneer u code kopieert en plakt.
Selecteer Maak.
In het dialoogvenster Een nieuwe gRPC-service maken:
- De gRPC-service sjabloon is geselecteerd.
- Selecteer Maak.
De service uitvoeren
Druk op Ctrl+F5 om uit te voeren zonder het foutopsporingsprogramma.
Visual Studio geeft het volgende dialoogvenster weer wanneer een project nog niet is geconfigureerd voor het gebruik van SSL:
Selecteer Ja als u het IIS Express SSL-certificaat vertrouwt.
Het volgende dialoogvenster wordt weergegeven:
Selecteer Ja als u akkoord gaat met het vertrouwen van het ontwikkelingscertificaat.
Zie Firefox SEC_ERROR_INADEQUATE_KEY_USAGE certificaatfoutvoor meer informatie over het vertrouwen van de Firefox-browser.
Visual Studio start IIS Express en voert de app uit. De adresbalk toont
localhost:port#
en niet iets alsexample.com
. Dat komt doordatlocalhost
de standaardhostnaam is voor de lokale computer. Localhost dient alleen webaanvragen van de lokale computer. Wanneer Visual Studio een webproject maakt, wordt er een willekeurige poort gebruikt voor de webserver.
In de logboeken wordt de service weergegeven die luistert op 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
Notitie
De gRPC-sjabloon is geconfigureerd voor het gebruik van TLS-(Transport Layer Security). gRPC-clients moeten HTTPS gebruiken om de server aan te roepen.
macOS biedt geen ondersteuning voor ASP.NET Core gRPC met TLS. Aanvullende configuratie is vereist voor het uitvoeren van gRPC-services op macOS. Zie Kan ASP.NET Core gRPC-app niet starten op macOS-voor meer informatie.
De projectbestanden onderzoeken
GrpcGreeter project-bestanden:
-
greet.proto: Het bestand Protos/greet.proto definieert de
Greeter
gRPC en wordt gebruikt om de gRPC-serverassets te genereren. Zie Inleiding tot gRPC-voor meer informatie. -
Services map: Bevat de implementatie van de
Greeter
-service. -
appsettings.json
: bevat configuratiegegevens, zoals het protocol dat wordt gebruikt door Kestrel. Zie Configuratie in ASP.NET Corevoor meer informatie. -
Program.cs
: bevat het toegangspunt voor de gRPC-service. Zie .NET Generic Host in ASP.NET Corevoor meer informatie. -
Startup.cs
: bevat code waarmee app-gedrag wordt geconfigureerd. Voor meer informatie, zie App-opstart.
De gRPC-client maken in een .NET-console-app
- Open een tweede exemplaar van Visual Studio en selecteer Een nieuw project maken.
- Selecteer in het dialoogvenster Een nieuw project maken, selecteer Console-app (.NET Core) en selecteer Volgende.
- Voer in het tekstvak ProjectnaamGrpcGreeterClient in en selecteer maken.
Vereiste pakketten toevoegen
Voor het gRPC-clientproject zijn de volgende pakketten vereist:
- Grpc.Net.Client, die de .NET Core-client bevat.
- Google.Protobuf, die protobuf-bericht-API's voor C# bevat.
-
Grpc.Tools, die C#-toolingondersteuning voor protobuf-bestanden bevat. Het hulpprogrammapakket is niet vereist tijdens runtime, dus de afhankelijkheid wordt gemarkeerd met
PrivateAssets="All"
.
Installeer de pakketten met behulp van de Package Manager Console (PMC) of NuGet-pakketten beheren.
PMC-optie voor het installeren van pakketten
Selecteer in Visual Studio Tools>NuGet Package Manager>Package Manager Console
Voer in het Venster Package Manager Console
cd GrpcGreeterClient
uit om mappen te wijzigen in de map met deGrpcGreeterClient.csproj
-bestanden.Voer de volgende opdrachten uit:
Install-Package Grpc.Net.Client Install-Package Google.Protobuf Install-Package Grpc.Tools
Optie NuGet-pakketten beheren om pakketten te installeren
- Klik met de rechtermuisknop op het project in Solution Explorer>NuGet-pakketten beheren.
- Selecteer het tabblad Bladeren.
- Voer Grpc.Net.Client- in het zoekvak in.
- Selecteer het Grpc.Net.Client pakket in het Bladeren tabblad en kies voor Installeren.
- Herhaal dit voor
Google.Protobuf
enGrpc.Tools
.
Voeg greet.proto toe
Maak een Protos- map in het gRPC-clientproject.
Kopieer het bestand Protos\greet.proto van de gRPC Greeter-service naar de map Protos in het gRPC-clientproject.
Werk de naamruimte in het
greet.proto
-bestand bij naar de naamruimte van het project:option csharp_namespace = "GrpcGreeterClient";
Bewerk het
GrpcGreeterClient.csproj
projectbestand:Klik met de rechtermuisknop op het project en selecteer Projectbestand bewerken.
Voeg een itemgroep toe met een
<Protobuf>
-element dat verwijst naar het bestand greet.proto:<ItemGroup> <Protobuf Include="Protos\greet.proto" GrpcServices="Client" /> </ItemGroup>
De Greeter-client maken
- Bouw het clientproject om de typen in de
GrpcGreeterClient
naamruimte te maken.
Notitie
De GrpcGreeterClient
typen worden automatisch gegenereerd door het buildproces. Het hulpprogrammapakket Grpc.Tools genereert de volgende bestanden op basis van het bestand greet.proto:
-
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs
: de protocolbuffercode die de aanvraag- en antwoordberichttypen vult, serialiseert en ophaalt. -
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs
: bevat de gegenereerde clientklassen.
Voor meer informatie over de C#-assets die automatisch worden gegenereerd door Grpc.Tools, zie gRPC-services met C#: Gegenereerde C#-assets.
Werk het Program.cs
-bestand van de gRPC-client bij met de volgende code:
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
bevat het toegangspunt en de logica voor de gRPC-client.
De Greeter-client wordt gemaakt door:
- Instantieer een
GrpcChannel
met de informatie voor het maken van de verbinding met de gRPC-service. - De
GrpcChannel
gebruiken om de Greeter-client te maken:
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();
}
De Greeter-client roept de asynchrone SayHello
methode aan. Het resultaat van de SayHello
-aanroep wordt weergegeven:
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();
}
De gRPC-client testen met de gRPC Greeter-service
- Druk in de Greeter-service op
Ctrl+F5
om de server te starten zonder het foutopsporingsprogramma. - Druk in het
GrpcGreeterClient
project opCtrl+F5
om de client te starten zonder het foutopsporingsprogramma.
De client stuurt een begroeting naar de service met een bericht met de naam, GreeterClient. De service verzendt het bericht Hello GreeterClient als antwoord. Het antwoord 'Hello GreeterClient' wordt weergegeven in de opdrachtprompt:
Greeting: Hello GreeterClient
Press any key to exit...
De gRPC-service registreert de details van de geslaagde aanroep in de logboeken die naar de opdrachtprompt zijn geschreven:
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
Notitie
Voor de code in dit artikel is het ASP.NET Core HTTPS-ontwikkelingscertificaat vereist om de gRPC-service te beveiligen. Als de .NET gRPC-client mislukt met het bericht The remote certificate is invalid according to the validation procedure.
of The SSL connection could not be established.
, wordt het ontwikkelingscertificaat niet vertrouwd. Zie Een gRPC-service aanroepen met een niet-vertrouwd/ongeldig certificaatom dit probleem op te lossen.