Tutoriel : Créer un serveur et un client gRPC dans ASP.NET Core
Ce tutoriel montre comment créer un client gRPC .NET Core et un serveur gRPC ASP.NET Core. À la fin, vous disposerez d’un client gRPC qui communique avec le service Greeter gRPC.
Dans ce tutoriel, vous allez :
- Créer un serveur gRPC.
- Créez un client gRPC.
- Testez le client gRPC avec le service Greeter gRPC.
Prérequis
Visual Studio 2022 avec la charge de travail Développement web et ASP.NET.
Créer un service gRPC
- Démarrez Visual Studio 2022 et sélectionnez Nouveau projet.
- Dans la boîte de dialogue Créer un nouveau projet, recherchez
gRPC
. Sélectionnez Service ASP.NET Core gRPC, puis sélectionnez Suivant. - Dans la boîte de dialogue Configurer votre nouveau projet, entrez
GrpcGreeter
pour Nom du projet. Il est important de nommer le projet GrpcGreeter pour que les espaces de noms correspondent quand vous copiez et collez du code. - Cliquez sur Suivant.
- Dans la fenêtre de dialogue Informations supplémentaires, sélectionnez .NET 8.0 (prise en charge à long terme), puis sélectionnez Créer.
Exécuter le service
Appuyez sur Ctrl+F5 pour exécuter sans le débogueur.
Visual Studio affiche la boîte de dialogue suivante lorsqu’un projet n’est pas encore configuré pour utiliser SSL :
Sélectionnez Oui si vous faites confiance au certificat SSL d’IIS Express.
La boîte de dialogue suivante s’affiche :
Sélectionnez Oui si vous acceptez d’approuver le certificat de développement.
Pour plus d’informations sur l’approbation du navigateur Firefox, consultez Erreur de certificat Firefox SEC_ERROR_INADEQUATE_KEY_USAGE.
Visual Studio :
- Démarre le serveur Kestrel.
- Lance un navigateur.
- Accède à
http://localhost:port
, par exemplehttp://localhost:7042
.- port : numéro de port attribué de manière aléatoire pour l’application.
localhost
: nom d’hôte standard de l’ordinateur local. Localhost traite uniquement les requêtes web de l’ordinateur local.
Les journaux affichent le service à l’écoute sur https://localhost:<port>
, où <port>
est le numéro de port localhost attribué de manière aléatoire lorsque le projet est créé et défini dans 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
Remarque
Le modèle gRPC est configuré pour utiliser le protocole Transport Layer Security (TLS). Les clients gRPC doivent utiliser le protocole HTTPS pour appeler le serveur. Le numéro de port localhost du service gRPC est attribué de manière aléatoire lorsque le projet est créé et défini dans le fichier Properties\launchSettings.json du projet de service gRPC.
Examiner les fichiers projet
Fichiers projet GrpcGreeter :
Protos/greet.proto
: définit le gRPCGreeter
et est utilisé pour générer les ressources du serveur gRPC. Pour plus d’informations, consultez Introduction à gRPC.- Dossier
Services
: contient l’implémentation du serviceGreeter
. appSettings.json
: contient des données de configuration, telles que le protocole utilisé par Kestrel. Pour plus d’informations, consultez Configuration dans ASP.NET Core.Program.cs
, qui contient :- le point d’entrée du service gRPC. Pour plus d’informations, consultez Hôte générique .NET dans ASP.NET Core.
- le code qui configure le comportement de l’application. Pour plus d’informations, consultez Démarrage des applications.
Créer le client gRPC dans une application console .NET
- Ouvrez une deuxième instance de Visual Studio et sélectionnez Nouveau projet.
- Dans la boîte de dialogue Créer un projet, sélectionnez Application console, puis sélectionnez Suivant.
- Dans la zone de texte Nom du projet, entrez GrpcGreeterClient et sélectionnez Suivant.
- Dans la fenêtre de dialogue Informations supplémentaires, sélectionnez .NET 8.0 (prise en charge à long terme), puis sélectionnez Créer.
Ajouter les packages NuGet exigés
Le projet client gRPC requiert les packages NuGet suivants :
- Grpc.Net.Client, qui contient le client .NET Core.
- Google.Protobuf, qui contient des API de messages protobuf pour C#.
- Grpc.Tools, qui contient la prise en charge des outils C# pour les fichiers protobuf. Le package d’outils n’est pas nécessaire lors de l’exécution. La dépendance est donc marquée avec
PrivateAssets="All"
.
Installez les packages à l’aide de la console PMC (console du Gestionnaire de package) ou à partir de Gérer les packages NuGet.
Option de la console du Gestionnaire de package pour installer des packages
Dans Visual Studio, sélectionnez Outils>Gestionnaire de package NuGet>Console du Gestionnaire de package.
Dans la fenêtre Gestionnaire de package, exécutez
cd GrpcGreeterClient
pour accéder au dossier contenant les fichiersGrpcGreeterClient.csproj
.Exécutez les commandes suivantes :
Install-Package Grpc.Net.Client Install-Package Google.Protobuf Install-Package Grpc.Tools
Option Gérer les packages NuGet pour installer les packages
- Cliquez avec le bouton droit sur le projet dans Explorateur de solutions>Gérer les packages NuGet.
- Sélectionnez l’onglet Parcourir.
- Entrez Grpc.Net.Client dans la zone de recherche.
- Sélectionnez le package Grpc.Net.Client sous l’onglet Parcourir et sélectionnez Installer.
- Répétez pour
Google.Protobuf
etGrpc.Tools
.
Ajouter greet.proto
Créez un dossier Protos dans le projet du client gRPC.
Copiez le fichier Protos\greet.proto du service Greeter gRPC dans le dossier Protos du projet du client gRPC.
Mettez à jour l’espace de noms à l’intérieur du fichier
greet.proto
vers l’espace de noms du projet :option csharp_namespace = "GrpcGreeterClient";
Modifier le fichier projet
GrpcGreeterClient.csproj
:
Cliquez avec le bouton droit sur le projet et sélectionnez Modifier le fichier de projet.
Ajoutez un groupe d’éléments avec un élément
<Protobuf>
qui fait référence au fichier greet.proto :<ItemGroup> <Protobuf Include="Protos\greet.proto" GrpcServices="Client" /> </ItemGroup>
Créer le client Greeter
- Générez le projet client pour créer les types dans l’espace de noms
GrpcGreeterClient
.
Remarque
Les types GrpcGreeterClient
sont générés automatiquement par le processus de génération. Le package d’outils Grpc.Tools génère les fichiers suivants en fonction du fichier greet.proto :
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs
: code de mémoire tampon de protocole qui remplit, sérialise et récupère les types de messages de requête et de réponse.GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs
: contient les classes clientes générées.
Pour plus d’informations sur les ressources C# générées automatiquement par Grpc.Tools, consultez Services gRPC avec C# : ressources C# générées.
Mettez à jour le fichier
Program.cs
du client gRPC par le code suivant.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();
Dans le code mis en surbrillance précédent, remplacez le numéro de port localhost
7042
par le numéro de portHTTPS
spécifié dansProperties/launchSettings.json
au sein du projet de serviceGrpcGreeter
.
Program.cs
contient le point d’entrée et la logique du client gRPC.
Le client Greeter est créé en :
- Instanciant un
GrpcChannel
contenant les informations de création de la connexion au service gRPC. - Utilisant le
GrpcChannel
pour construire le client Greeter :
// 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();
Le client Greeter appelle la méthode SayHello
asynchrone. Le résultat de l’appel SayHello
s’affiche :
// 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();
Tester le client gRPC avec le service Greeter gRPC
Mettez à jour le fichier appsettings.Development.json
en ajoutant les lignes en surbrillance suivantes :
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
,"Microsoft.AspNetCore.Hosting": "Information",
"Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information"
}
}
}
- Dans le service Greeter, appuyez sur
Ctrl+F5
pour démarrer le serveur sans le débogueur. - Dans le projet
GrpcGreeterClient
, appuyez surCtrl+F5
pour démarrer le client sans le débogueur.
Le client envoie une salutation au service avec un message contenant son nom, GreeterClient. Le service envoie le message « Hello GreeterClient » comme réponse. La réponse « Hello GreeterClient » s’affiche dans l’invite de commandes :
Greeting: Hello GreeterClient
Press any key to exit...
Le service gRPC enregistre les détails de l’appel réussi dans les journaux écrits dans l’invite de commandes :
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
Remarque
Le code de cet article requiert le certificat de développement ASP.NET Core HTTPS pour sécuriser le service gRPC. Si le client gRPC .NET échoue avec le message The remote certificate is invalid according to the validation procedure.
ou The SSL connection could not be established.
, le certificat de développement n’est pas approuvé. Pour régler ce problème, consultez Appeler un service gRPC avec un certificat non approuvé/non valide.
Étapes suivantes
Ce tutoriel montre comment créer un client gRPC .NET Core et un serveur gRPC ASP.NET Core. À la fin, vous disposerez d’un client gRPC qui communique avec le service Greeter gRPC.
Dans ce tutoriel, vous allez :
- Créer un serveur gRPC.
- Créez un client gRPC.
- Testez le client gRPC avec le service Greeter gRPC.
Prérequis
Visual Studio 2022 avec la charge de travail Développement web et ASP.NET.
Créer un service gRPC
- Démarrez Visual Studio 2022 et sélectionnez Créer un projet.
- Dans la boîte de dialogue Créer un nouveau projet, recherchez
gRPC
. Sélectionnez Service ASP.NET Core gRPC, puis sélectionnez Suivant. - Dans la boîte de dialogue Configurer votre nouveau projet, entrez
GrpcGreeter
pour Nom du projet. Il est important de nommer le projet GrpcGreeter pour que les espaces de noms correspondent quand vous copiez et collez du code. - Sélectionnez Suivant.
- Dans la boîte de dialogue Informations supplémentaires, sélectionnez .NET 6.0 (prise en charge à long terme), puis sélectionnez Créer.
Exécuter le service
Appuyez sur Ctrl+F5 pour exécuter sans le débogueur.
Visual Studio affiche la boîte de dialogue suivante lorsqu’un projet n’est pas encore configuré pour utiliser SSL :
Sélectionnez Oui si vous faites confiance au certificat SSL d’IIS Express.
La boîte de dialogue suivante s’affiche :
Sélectionnez Oui si vous acceptez d’approuver le certificat de développement.
Pour plus d’informations sur l’approbation du navigateur Firefox, consultez Erreur de certificat Firefox SEC_ERROR_INADEQUATE_KEY_USAGE.
Visual Studio :
- Démarre le serveur Kestrel.
- Lance un navigateur.
- Accède à
http://localhost:port
, par exemplehttp://localhost:7042
.- port : numéro de port attribué de manière aléatoire pour l’application.
localhost
: nom d’hôte standard de l’ordinateur local. Localhost traite uniquement les requêtes web de l’ordinateur local.
Les journaux affichent le service à l’écoute sur https://localhost:<port>
, où <port>
est le numéro de port localhost attribué de manière aléatoire lorsque le projet est créé et défini dans 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
Remarque
Le modèle gRPC est configuré pour utiliser le protocole Transport Layer Security (TLS). Les clients gRPC doivent utiliser le protocole HTTPS pour appeler le serveur. Le numéro de port localhost du service gRPC est attribué de manière aléatoire lorsque le projet est créé et défini dans le fichier Properties\launchSettings.json du projet de service gRPC.
MacOS ne prend pas en charge ASP.NET Core gRPC avec TLS. Une configuration supplémentaire est nécessaire pour exécuter correctement les services gRPC sur MacOS. Pour plus d’informations, consultez Impossible de démarrer l’application ASP.NET Core gRPC sur MacOS.
Examiner les fichiers projet
Fichiers projet GrpcGreeter :
Protos/greet.proto
: définit le gRPCGreeter
et est utilisé pour générer les ressources du serveur gRPC. Pour plus d’informations, consultez Introduction à gRPC.- Dossier
Services
: contient l’implémentation du serviceGreeter
. appSettings.json
: contient des données de configuration, telles que le protocole utilisé par Kestrel. Pour plus d’informations, consultez Configuration dans ASP.NET Core.Program.cs
, qui contient :- le point d’entrée du service gRPC. Pour plus d’informations, consultez Hôte générique .NET dans ASP.NET Core.
- le code qui configure le comportement de l’application. Pour plus d’informations, consultez Démarrage des applications.
Créer le client gRPC dans une application console .NET
- Ouvrez une deuxième instance de Visual Studio et sélectionnez Créer un projet.
- Dans la boîte de dialogue Créer un nouveau projet, sélectionnez Application console, puis sélectionnez Suivant.
- Dans la zone de texte Nom du projet, entrez GrpcGreeterClient et sélectionnez Suivant.
- Dans la boîte de dialogue Informations supplémentaires, sélectionnez .NET 6.0 (prise en charge à long terme), puis sélectionnez Créer.
Ajouter les packages NuGet exigés
Le projet client gRPC requiert les packages NuGet suivants :
- Grpc.Net.Client, qui contient le client .NET Core.
- Google.Protobuf, qui contient des API de messages protobuf pour C#.
- Grpc.Tools, qui contient la prise en charge des outils C# pour les fichiers protobuf. Le package d’outils n’est pas nécessaire lors de l’exécution. La dépendance est donc marquée avec
PrivateAssets="All"
.
Installez les packages à l’aide de la console PMC (console du Gestionnaire de package) ou à partir de Gérer les packages NuGet.
Option de la console du Gestionnaire de package pour installer des packages
Dans Visual Studio, sélectionnez Outils>Gestionnaire de package NuGet>Console du Gestionnaire de package.
Dans la fenêtre Gestionnaire de package, exécutez
cd GrpcGreeterClient
pour accéder au dossier contenant les fichiersGrpcGreeterClient.csproj
.Exécutez les commandes suivantes :
Install-Package Grpc.Net.Client Install-Package Google.Protobuf Install-Package Grpc.Tools
Option Gérer les packages NuGet pour installer les packages
- Cliquez avec le bouton droit sur le projet dans Explorateur de solutions>Gérer les packages NuGet.
- Sélectionnez l’onglet Parcourir.
- Entrez Grpc.Net.Client dans la zone de recherche.
- Sélectionnez le package Grpc.Net.Client sous l’onglet Parcourir et sélectionnez Installer.
- Répétez pour
Google.Protobuf
etGrpc.Tools
.
Ajouter greet.proto
Créez un dossier Protos dans le projet du client gRPC.
Copiez le fichier Protos\greet.proto du service Greeter gRPC dans le dossier Protos du projet du client gRPC.
Mettez à jour l’espace de noms à l’intérieur du fichier
greet.proto
vers l’espace de noms du projet :option csharp_namespace = "GrpcGreeterClient";
Modifier le fichier projet
GrpcGreeterClient.csproj
:
Cliquez avec le bouton droit sur le projet et sélectionnez Modifier le fichier de projet.
Ajoutez un groupe d’éléments avec un élément
<Protobuf>
qui fait référence au fichier greet.proto :<ItemGroup> <Protobuf Include="Protos\greet.proto" GrpcServices="Client" /> </ItemGroup>
Créer le client Greeter
- Générez le projet client pour créer les types dans l’espace de noms
GrpcGreeterClient
.
Remarque
Les types GrpcGreeterClient
sont générés automatiquement par le processus de génération. Le package d’outils Grpc.Tools génère les fichiers suivants en fonction du fichier greet.proto :
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs
: code de mémoire tampon de protocole qui remplit, sérialise et récupère les types de messages de requête et de réponse.GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs
: contient les classes clientes générées.
Pour plus d’informations sur les ressources C# générées automatiquement par Grpc.Tools, consultez Services gRPC avec C# : ressources C# générées.
Mettez à jour le fichier
Program.cs
du client gRPC par le code suivant.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();
Dans le code mis en surbrillance précédent, remplacez le numéro de port localhost
7042
par le numéro de portHTTPS
spécifié dansProperties/launchSettings.json
au sein du projet de serviceGrpcGreeter
.
Program.cs
contient le point d’entrée et la logique du client gRPC.
Le client Greeter est créé en :
- Instanciant un
GrpcChannel
contenant les informations de création de la connexion au service gRPC. - Utilisant le
GrpcChannel
pour construire le client Greeter :
// 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();
Le client Greeter appelle la méthode SayHello
asynchrone. Le résultat de l’appel SayHello
s’affiche :
// 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();
Tester le client gRPC avec le service Greeter gRPC
Mettez à jour le fichier appsettings.Development.json
en ajoutant les lignes en surbrillance suivantes :
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
,"Microsoft.AspNetCore.Hosting": "Information",
"Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information"
}
}
}
- Dans le service Greeter, appuyez sur
Ctrl+F5
pour démarrer le serveur sans le débogueur. - Dans le projet
GrpcGreeterClient
, appuyez surCtrl+F5
pour démarrer le client sans le débogueur.
Le client envoie une salutation au service avec un message contenant son nom, GreeterClient. Le service envoie le message « Hello GreeterClient » comme réponse. La réponse « Hello GreeterClient » s’affiche dans l’invite de commandes :
Greeting: Hello GreeterClient
Press any key to exit...
Le service gRPC enregistre les détails de l’appel réussi dans les journaux écrits dans l’invite de commandes :
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
Remarque
Le code de cet article requiert le certificat de développement ASP.NET Core HTTPS pour sécuriser le service gRPC. Si le client gRPC .NET échoue avec le message The remote certificate is invalid according to the validation procedure.
ou The SSL connection could not be established.
, le certificat de développement n’est pas approuvé. Pour régler ce problème, consultez Appeler un service gRPC avec un certificat non approuvé/non valide.
Étapes suivantes
Ce tutoriel montre comment créer un client gRPC .NET Core et un serveur gRPC ASP.NET Core. À la fin, vous disposerez d’un client gRPC qui communique avec le service Greeter gRPC.
Dans ce tutoriel, vous allez :
- Créer un serveur gRPC.
- Créez un client gRPC.
- Testez le client gRPC avec le service Greeter gRPC.
Prérequis
- Visual Studio 2022 avec la charge de travail Développement web et ASP.NET.
- SDK .NET 6.0
Créer un service gRPC
- Démarrez Visual Studio 2022 et sélectionnez Créer un projet.
- Dans la boîte de dialogue Créer un nouveau projet, recherchez
gRPC
. Sélectionnez Service ASP.NET Core gRPC, puis sélectionnez Suivant. - Dans la boîte de dialogue Configurer votre nouveau projet, entrez
GrpcGreeter
pour Nom du projet. Il est important de nommer le projet GrpcGreeter pour que les espaces de noms correspondent quand vous copiez et collez du code. - Sélectionnez Suivant.
- Dans la boîte de dialogue Informations supplémentaires, sélectionnez .NET 6.0 (prise en charge à long terme), puis sélectionnez Créer.
Exécuter le service
Appuyez sur Ctrl+F5 pour exécuter sans le débogueur.
Visual Studio affiche la boîte de dialogue suivante lorsqu’un projet n’est pas encore configuré pour utiliser SSL :
Sélectionnez Oui si vous faites confiance au certificat SSL d’IIS Express.
La boîte de dialogue suivante s’affiche :
Sélectionnez Oui si vous acceptez d’approuver le certificat de développement.
Pour plus d’informations sur l’approbation du navigateur Firefox, consultez Erreur de certificat Firefox SEC_ERROR_INADEQUATE_KEY_USAGE.
Visual Studio :
- Démarre le serveur Kestrel.
- Lance un navigateur.
- Accède à
http://localhost:port
, par exemplehttp://localhost:7042
.- port : numéro de port attribué de manière aléatoire pour l’application.
localhost
: nom d’hôte standard de l’ordinateur local. Localhost traite uniquement les requêtes web de l’ordinateur local.
Les journaux affichent le service à l’écoute sur https://localhost:<port>
, où <port>
est le numéro de port localhost attribué de manière aléatoire lorsque le projet est créé et défini dans 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
Remarque
Le modèle gRPC est configuré pour utiliser le protocole Transport Layer Security (TLS). Les clients gRPC doivent utiliser le protocole HTTPS pour appeler le serveur. Le numéro de port localhost du service gRPC est attribué de manière aléatoire lorsque le projet est créé et défini dans le fichier Properties\launchSettings.json du projet de service gRPC.
MacOS ne prend pas en charge ASP.NET Core gRPC avec TLS. Une configuration supplémentaire est nécessaire pour exécuter correctement les services gRPC sur MacOS. Pour plus d’informations, consultez Impossible de démarrer l’application ASP.NET Core gRPC sur MacOS.
Examiner les fichiers projet
Fichiers projet GrpcGreeter :
Protos/greet.proto
: définit le gRPCGreeter
et est utilisé pour générer les ressources du serveur gRPC. Pour plus d’informations, consultez Introduction à gRPC.- Dossier
Services
: contient l’implémentation du serviceGreeter
. appSettings.json
: contient des données de configuration, telles que le protocole utilisé par Kestrel. Pour plus d’informations, consultez Configuration dans ASP.NET Core.Program.cs
, qui contient :- le point d’entrée du service gRPC. Pour plus d’informations, consultez Hôte générique .NET dans ASP.NET Core.
- le code qui configure le comportement de l’application. Pour plus d’informations, consultez Démarrage des applications.
Créer le client gRPC dans une application console .NET
- Ouvrez une deuxième instance de Visual Studio et sélectionnez Créer un projet.
- Dans la boîte de dialogue Créer un nouveau projet, sélectionnez Application console, puis sélectionnez Suivant.
- Dans la zone de texte Nom du projet, entrez GrpcGreeterClient et sélectionnez Suivant.
- Dans la boîte de dialogue Informations supplémentaires, sélectionnez .NET 6.0 (prise en charge à long terme), puis sélectionnez Créer.
Ajouter les packages NuGet exigés
Le projet client gRPC requiert les packages NuGet suivants :
- Grpc.Net.Client, qui contient le client .NET Core.
- Google.Protobuf, qui contient des API de messages protobuf pour C#.
- Grpc.Tools, qui contient la prise en charge des outils C# pour les fichiers protobuf. Le package d’outils n’est pas nécessaire lors de l’exécution. La dépendance est donc marquée avec
PrivateAssets="All"
.
Installez les packages à l’aide de la console PMC (console du Gestionnaire de package) ou à partir de Gérer les packages NuGet.
Option de la console du Gestionnaire de package pour installer des packages
Dans Visual Studio, sélectionnez Outils>Gestionnaire de package NuGet>Console du Gestionnaire de package.
Dans la fenêtre Gestionnaire de package, exécutez
cd GrpcGreeterClient
pour accéder au dossier contenant les fichiersGrpcGreeterClient.csproj
.Exécutez les commandes suivantes :
Install-Package Grpc.Net.Client Install-Package Google.Protobuf Install-Package Grpc.Tools
Option Gérer les packages NuGet pour installer les packages
- Cliquez avec le bouton droit sur le projet dans Explorateur de solutions>Gérer les packages NuGet.
- Sélectionnez l’onglet Parcourir.
- Entrez Grpc.Net.Client dans la zone de recherche.
- Sélectionnez le package Grpc.Net.Client sous l’onglet Parcourir et sélectionnez Installer.
- Répétez pour
Google.Protobuf
etGrpc.Tools
.
Ajouter greet.proto
Créez un dossier Protos dans le projet du client gRPC.
Copiez le fichier Protos\greet.proto du service Greeter gRPC dans le dossier Protos du projet du client gRPC.
Mettez à jour l’espace de noms à l’intérieur du fichier
greet.proto
vers l’espace de noms du projet :option csharp_namespace = "GrpcGreeterClient";
Modifier le fichier projet
GrpcGreeterClient.csproj
:
Cliquez avec le bouton droit sur le projet et sélectionnez Modifier le fichier de projet.
Ajoutez un groupe d’éléments avec un élément
<Protobuf>
qui fait référence au fichier greet.proto :<ItemGroup> <Protobuf Include="Protos\greet.proto" GrpcServices="Client" /> </ItemGroup>
Créer le client Greeter
- Générez le projet client pour créer les types dans l’espace de noms
GrpcGreeterClient
.
Remarque
Les types GrpcGreeterClient
sont générés automatiquement par le processus de génération. Le package d’outils Grpc.Tools génère les fichiers suivants en fonction du fichier greet.proto :
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs
: code de mémoire tampon de protocole qui remplit, sérialise et récupère les types de messages de requête et de réponse.GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs
: contient les classes clientes générées.
Pour plus d’informations sur les ressources C# générées automatiquement par Grpc.Tools, consultez Services gRPC avec C# : ressources C# générées.
Mettez à jour le fichier
Program.cs
du client gRPC par le code suivant.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();
Dans le code mis en surbrillance précédent, remplacez le numéro de port localhost
7042
par le numéro de portHTTPS
spécifié dansProperties/launchSettings.json
au sein du projet de serviceGrpcGreeter
.
Program.cs
contient le point d’entrée et la logique du client gRPC.
Le client Greeter est créé en :
- Instanciant un
GrpcChannel
contenant les informations de création de la connexion au service gRPC. - Utilisant le
GrpcChannel
pour construire le client Greeter :
// 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();
Le client Greeter appelle la méthode SayHello
asynchrone. Le résultat de l’appel SayHello
s’affiche :
// 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();
Tester le client gRPC avec le service Greeter gRPC
- Dans le service Greeter, appuyez sur
Ctrl+F5
pour démarrer le serveur sans le débogueur. - Dans le projet
GrpcGreeterClient
, appuyez surCtrl+F5
pour démarrer le client sans le débogueur.
Le client envoie une salutation au service avec un message contenant son nom, GreeterClient. Le service envoie le message « Hello GreeterClient » comme réponse. La réponse « Hello GreeterClient » s’affiche dans l’invite de commandes :
Greeting: Hello GreeterClient
Press any key to exit...
Le service gRPC enregistre les détails de l’appel réussi dans les journaux écrits dans l’invite de commandes :
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
Mettez à jour le fichier appsettings.Development.json
en ajoutant les lignes suivantes :
"Microsoft.AspNetCore.Hosting": "Information",
"Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information"
Remarque
Le code de cet article requiert le certificat de développement ASP.NET Core HTTPS pour sécuriser le service gRPC. Si le client gRPC .NET échoue avec le message The remote certificate is invalid according to the validation procedure.
ou The SSL connection could not be established.
, le certificat de développement n’est pas approuvé. Pour régler ce problème, consultez Appeler un service gRPC avec un certificat non approuvé/non valide.
Étapes suivantes
Ce tutoriel montre comment créer un client gRPC .NET Core et un serveur gRPC ASP.NET Core.
À la fin, vous disposerez d’un client gRPC qui communique avec le service Greeter gRPC.
Affichez ou téléchargez un exemple de code (procédure de téléchargement).
Dans ce didacticiel, vous avez effectué les actions suivantes :
- Créer un serveur gRPC.
- Créez un client gRPC.
- Testez le client gRPC avec le service Greeter gRPC.
Prérequis
- Visual Studio 2019 version 16.8 ou ultérieure avec la charge de travail Développement ASP.NET et web
- SDK .NET 5.0
Créer un service gRPC
- Démarrez Visual Studio et sélectionnez Créer un projet.
- Dans la boîte de dialogue Créer un nouveau projet, sélectionnez Service gPRC, puis sélectionnez Suivant.
- Dans la boîte de dialogue Configurer votre nouveau projet, entrez
GrpcGreeter
pour Nom du projet. Il est important de nommer le projet GrpcGreeter pour que les espaces de noms correspondent quand vous copiez et collez du code. - Cliquez sur Suivant.
- Dans la boîte de dialogue Informations supplémentaires, sélectionnez .NET 5.0 dans la liste déroulante Framework cible.
- Cliquez sur Créer.
Exécuter le service
Appuyez sur Ctrl+F5 pour exécuter sans le débogueur.
Visual Studio affiche la boîte de dialogue suivante lorsqu’un projet n’est pas encore configuré pour utiliser SSL :
Sélectionnez Oui si vous faites confiance au certificat SSL d’IIS Express.
La boîte de dialogue suivante s’affiche :
Sélectionnez Oui si vous acceptez d’approuver le certificat de développement.
Pour plus d’informations sur l’approbation du navigateur Firefox, consultez Erreur de certificat Firefox SEC_ERROR_INADEQUATE_KEY_USAGE.
Visual Studio démarre IIS Express et exécute l’application. La barre d’adresses affiche
localhost:port#
au lieu de quelque chose qui ressemble àexample.com
. La raison en est quelocalhost
est le nom d’hôte standard de l’ordinateur local. Localhost traite uniquement les requêtes web de l’ordinateur local. Quand Visual Studio crée un projet web, un port aléatoire est utilisé pour le serveur web.
Les journaux indiquent que le service écoute sur 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
Remarque
Le modèle gRPC est configuré pour utiliser le protocole Transport Layer Security (TLS). Les clients gRPC doivent utiliser le protocole HTTPS pour appeler le serveur.
MacOS ne prend pas en charge ASP.NET Core gRPC avec TLS. Une configuration supplémentaire est nécessaire pour exécuter correctement les services gRPC sur MacOS. Pour plus d’informations, consultez Impossible de démarrer l’application ASP.NET Core gRPC sur MacOS.
Examiner les fichiers projet
Fichiers projet GrpcGreeter :
- greet.proto : le fichier Protos/greet.proto définit le gRPC
Greeter
et est utilisé pour générer les ressources du serveur gRPC. Pour plus d’informations, consultez Introduction à gRPC. - Dossier Services : contient l’implémentation du service
Greeter
. appsettings.json
: contient des données de configuration, telles que le protocole utilisé par Kestrel. Pour plus d’informations, consultez Configuration dans ASP.NET Core.Program.cs
: contient le point d’entrée du service gRPC. Pour plus d’informations, consultez Hôte générique .NET dans ASP.NET Core.Startup.cs
: contient le code qui configure le comportement de l’application. Pour plus d’informations, consultez Démarrage des applications.
Créer le client gRPC dans une application console .NET
- Ouvrez une deuxième instance de Visual Studio et sélectionnez Créer un projet.
- Dans la boîte de dialogue Créer un projet, sélectionnez Application console (.NET Core), puis sélectionnez Suivant.
- Dans la zone de texte Nom du projet, entrez GrpcGreeterClient et sélectionnez Créer.
Ajouter les packages nécessaires
Le projet client gRPC requiert les packages suivants :
- Grpc.Net.Client, qui contient le client .NET Core.
- Google.Protobuf, qui contient des API de messages protobuf pour C#.
- Grpc.Tools, qui contient la prise en charge des outils C# pour les fichiers protobuf. Le package d’outils n’est pas nécessaire lors de l’exécution. La dépendance est donc marquée avec
PrivateAssets="All"
.
Installez les packages à l’aide de la console PMC (console du Gestionnaire de package) ou à partir de Gérer les packages NuGet.
Option de la console du Gestionnaire de package pour installer des packages
Dans Visual Studio, sélectionnez Outils>Gestionnaire de package NuGet>Console du Gestionnaire de package.
Dans la fenêtre Gestionnaire de package, exécutez
cd GrpcGreeterClient
pour accéder au dossier contenant les fichiersGrpcGreeterClient.csproj
.Exécutez les commandes suivantes :
Install-Package Grpc.Net.Client Install-Package Google.Protobuf Install-Package Grpc.Tools
Option Gérer les packages NuGet pour installer les packages
- Cliquez avec le bouton droit sur le projet dans Explorateur de solutions>Gérer les packages NuGet.
- Sélectionnez l’onglet Parcourir.
- Entrez Grpc.Net.Client dans la zone de recherche.
- Sélectionnez le package Grpc.Net.Client sous l’onglet Parcourir et sélectionnez Installer.
- Répétez pour
Google.Protobuf
etGrpc.Tools
.
Ajouter greet.proto
Créez un dossier Protos dans le projet du client gRPC.
Copiez le fichier Protos\greet.proto du service Greeter gRPC dans le dossier Protos du projet du client gRPC.
Mettez à jour l’espace de noms à l’intérieur du fichier
greet.proto
vers l’espace de noms du projet :option csharp_namespace = "GrpcGreeterClient";
Modifier le fichier projet
GrpcGreeterClient.csproj
:Cliquez avec le bouton droit sur le projet et sélectionnez Modifier le fichier de projet.
Ajoutez un groupe d’éléments avec un élément
<Protobuf>
qui fait référence au fichier greet.proto :<ItemGroup> <Protobuf Include="Protos\greet.proto" GrpcServices="Client" /> </ItemGroup>
Créer le client Greeter
- Générez le projet client pour créer les types dans l’espace de noms
GrpcGreeterClient
.
Remarque
Les types GrpcGreeterClient
sont générés automatiquement par le processus de génération. Le package d’outils Grpc.Tools génère les fichiers suivants en fonction du fichier greet.proto :
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs
: code de mémoire tampon de protocole qui remplit, sérialise et récupère les types de messages de requête et de réponse.GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs
: contient les classes clientes générées.
Pour plus d’informations sur les ressources C# générées automatiquement par Grpc.Tools, consultez Services gRPC avec C# : ressources C# générées.
Mettez à jour le fichier
Program.cs
du client gRPC par le code suivant :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
contient le point d’entrée et la logique du client gRPC.
Le client Greeter est créé en :
- Instanciant un
GrpcChannel
contenant les informations de création de la connexion au service gRPC. - Utilisant le
GrpcChannel
pour construire le client Greeter :
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();
}
Le client Greeter appelle la méthode SayHello
asynchrone. Le résultat de l’appel SayHello
s’affiche :
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();
}
Tester le client gRPC avec le service Greeter gRPC
- Dans le service Greeter, appuyez sur
Ctrl+F5
pour démarrer le serveur sans le débogueur. - Dans le projet
GrpcGreeterClient
, appuyez surCtrl+F5
pour démarrer le client sans le débogueur.
Le client envoie une salutation au service avec un message contenant son nom, GreeterClient. Le service envoie le message « Hello GreeterClient » comme réponse. La réponse « Hello GreeterClient » s’affiche dans l’invite de commandes :
Greeting: Hello GreeterClient
Press any key to exit...
Le service gRPC enregistre les détails de l’appel réussi dans les journaux écrits dans l’invite de commandes :
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
Remarque
Le code de cet article requiert le certificat de développement ASP.NET Core HTTPS pour sécuriser le service gRPC. Si le client gRPC .NET échoue avec le message The remote certificate is invalid according to the validation procedure.
ou The SSL connection could not be established.
, le certificat de développement n’est pas approuvé. Pour régler ce problème, consultez Appeler un service gRPC avec un certificat non approuvé/non valide.
Étapes suivantes
Ce tutoriel montre comment créer un client gRPC .NET Core et un serveur gRPC ASP.NET Core.
À la fin, vous disposerez d’un client gRPC qui communique avec le service Greeter gRPC.
Affichez ou téléchargez un exemple de code (procédure de téléchargement).
Dans ce didacticiel, vous avez effectué les actions suivantes :
- Créer un serveur gRPC.
- Créez un client gRPC.
- Testez le client gRPC avec le service Greeter gRPC.
Prérequis
- Visual Studio 2019 version 16.4 ou ultérieure avec la charge de travail Développement ASP.NET et web
- Kit SDK .NET Core 3.1
Créer un service gRPC
Démarrez Visual Studio et sélectionnez Créer un projet. Vous pouvez également, dans le menu Fichier de Visual Studio, sélectionner Nouveau>Projet.
Dans la boîte de dialogue Créer un nouveau projet, sélectionnez Service gPRC, puis sélectionnez Suivant :
Nommez le projet GrpcGreeter. Il est important de nommer le projet GrpcGreeter pour que les espaces de noms correspondent quand vous copiez et collez du code.
Cliquez sur Créer.
Dans la boîte de dialogue Créer un service gRPC :
- Le modèle Service gRPC est sélectionné.
- Sélectionnez Create (Créer).
Exécuter le service
Appuyez sur Ctrl+F5 pour exécuter sans le débogueur.
Visual Studio affiche la boîte de dialogue suivante lorsqu’un projet n’est pas encore configuré pour utiliser SSL :
Sélectionnez Oui si vous faites confiance au certificat SSL d’IIS Express.
La boîte de dialogue suivante s’affiche :
Sélectionnez Oui si vous acceptez d’approuver le certificat de développement.
Pour plus d’informations sur l’approbation du navigateur Firefox, consultez Erreur de certificat Firefox SEC_ERROR_INADEQUATE_KEY_USAGE.
Visual Studio démarre IIS Express et exécute l’application. La barre d’adresses affiche
localhost:port#
au lieu de quelque chose qui ressemble àexample.com
. La raison en est quelocalhost
est le nom d’hôte standard de l’ordinateur local. Localhost traite uniquement les requêtes web de l’ordinateur local. Quand Visual Studio crée un projet web, un port aléatoire est utilisé pour le serveur web.
Les journaux indiquent que le service écoute sur 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
Remarque
Le modèle gRPC est configuré pour utiliser le protocole Transport Layer Security (TLS). Les clients gRPC doivent utiliser le protocole HTTPS pour appeler le serveur.
MacOS ne prend pas en charge ASP.NET Core gRPC avec TLS. Une configuration supplémentaire est nécessaire pour exécuter correctement les services gRPC sur MacOS. Pour plus d’informations, consultez Impossible de démarrer l’application ASP.NET Core gRPC sur MacOS.
Examiner les fichiers projet
Fichiers projet GrpcGreeter :
- greet.proto : le fichier Protos/greet.proto définit le gRPC
Greeter
et est utilisé pour générer les ressources du serveur gRPC. Pour plus d’informations, consultez Introduction à gRPC. - Dossier Services : contient l’implémentation du service
Greeter
. appsettings.json
: contient des données de configuration, telles que le protocole utilisé par Kestrel. Pour plus d’informations, consultez Configuration dans ASP.NET Core.Program.cs
: contient le point d’entrée du service gRPC. Pour plus d’informations, consultez Hôte générique .NET dans ASP.NET Core.Startup.cs
: contient le code qui configure le comportement de l’application. Pour plus d’informations, consultez Démarrage des applications.
Créer le client gRPC dans une application console .NET
- Ouvrez une deuxième instance de Visual Studio et sélectionnez Créer un projet.
- Dans la boîte de dialogue Créer un projet, sélectionnez Application console (.NET Core), puis sélectionnez Suivant.
- Dans la zone de texte Nom du projet, entrez GrpcGreeterClient et sélectionnez Créer.
Ajouter les packages nécessaires
Le projet client gRPC requiert les packages suivants :
- Grpc.Net.Client, qui contient le client .NET Core.
- Google.Protobuf, qui contient des API de messages protobuf pour C#.
- Grpc.Tools, qui contient la prise en charge des outils C# pour les fichiers protobuf. Le package d’outils n’est pas nécessaire lors de l’exécution. La dépendance est donc marquée avec
PrivateAssets="All"
.
Installez les packages à l’aide de la console PMC (console du Gestionnaire de package) ou à partir de Gérer les packages NuGet.
Option de la console du Gestionnaire de package pour installer des packages
Dans Visual Studio, sélectionnez Outils>Gestionnaire de package NuGet>Console du Gestionnaire de package.
Dans la fenêtre Gestionnaire de package, exécutez
cd GrpcGreeterClient
pour accéder au dossier contenant les fichiersGrpcGreeterClient.csproj
.Exécutez les commandes suivantes :
Install-Package Grpc.Net.Client Install-Package Google.Protobuf Install-Package Grpc.Tools
Option Gérer les packages NuGet pour installer les packages
- Cliquez avec le bouton droit sur le projet dans Explorateur de solutions>Gérer les packages NuGet.
- Sélectionnez l’onglet Parcourir.
- Entrez Grpc.Net.Client dans la zone de recherche.
- Sélectionnez le package Grpc.Net.Client sous l’onglet Parcourir et sélectionnez Installer.
- Répétez pour
Google.Protobuf
etGrpc.Tools
.
Ajouter greet.proto
Créez un dossier Protos dans le projet du client gRPC.
Copiez le fichier Protos\greet.proto du service Greeter gRPC dans le dossier Protos du projet du client gRPC.
Mettez à jour l’espace de noms à l’intérieur du fichier
greet.proto
vers l’espace de noms du projet :option csharp_namespace = "GrpcGreeterClient";
Modifier le fichier projet
GrpcGreeterClient.csproj
:Cliquez avec le bouton droit sur le projet et sélectionnez Modifier le fichier de projet.
Ajoutez un groupe d’éléments avec un élément
<Protobuf>
qui fait référence au fichier greet.proto :<ItemGroup> <Protobuf Include="Protos\greet.proto" GrpcServices="Client" /> </ItemGroup>
Créer le client Greeter
- Générez le projet client pour créer les types dans l’espace de noms
GrpcGreeterClient
.
Remarque
Les types GrpcGreeterClient
sont générés automatiquement par le processus de génération. Le package d’outils Grpc.Tools génère les fichiers suivants en fonction du fichier greet.proto :
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs
: code de mémoire tampon de protocole qui remplit, sérialise et récupère les types de messages de requête et de réponse.GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs
: contient les classes clientes générées.
Pour plus d’informations sur les ressources C# générées automatiquement par Grpc.Tools, consultez Services gRPC avec C# : ressources C# générées.
Mettez à jour le fichier Program.cs
du client gRPC par le code suivant :
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
contient le point d’entrée et la logique du client gRPC.
Le client Greeter est créé en :
- Instanciant un
GrpcChannel
contenant les informations de création de la connexion au service gRPC. - Utilisant le
GrpcChannel
pour construire le client Greeter :
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();
}
Le client Greeter appelle la méthode SayHello
asynchrone. Le résultat de l’appel SayHello
s’affiche :
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();
}
Tester le client gRPC avec le service Greeter gRPC
- Dans le service Greeter, appuyez sur
Ctrl+F5
pour démarrer le serveur sans le débogueur. - Dans le projet
GrpcGreeterClient
, appuyez surCtrl+F5
pour démarrer le client sans le débogueur.
Le client envoie une salutation au service avec un message contenant son nom, GreeterClient. Le service envoie le message « Hello GreeterClient » comme réponse. La réponse « Hello GreeterClient » s’affiche dans l’invite de commandes :
Greeting: Hello GreeterClient
Press any key to exit...
Le service gRPC enregistre les détails de l’appel réussi dans les journaux écrits dans l’invite de commandes :
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
Remarque
Le code de cet article requiert le certificat de développement ASP.NET Core HTTPS pour sécuriser le service gRPC. Si le client gRPC .NET échoue avec le message The remote certificate is invalid according to the validation procedure.
ou The SSL connection could not be established.
, le certificat de développement n’est pas approuvé. Pour régler ce problème, consultez Appeler un service gRPC avec un certificat non approuvé/non valide.