Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 de 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 projet, recherchez
gRPC
. Sélectionnez ASP.NET service gRPC principal , 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 afin que les espaces de noms correspondent lorsque vous copiez et collez du code. - Sélectionnez Suivant.
- Dans la boîte de dialogue Informations supplémentaires , sélectionnez .NET 9.0 (Prise en charge des termes standard), 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 approuvez le certificat IIS Express SSL.
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 la confiance à accorder au navigateur Firefox, consultez l’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 TLS (Transport Layer Security). 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 les propriétés\launchSettings.jssur le fichier 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 Présentation de 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 l’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 de l’application.
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 , puis sélectionnez Suivant.
- Dans la boîte de dialogue Informations supplémentaires , sélectionnez .NET 9.0 (Prise en charge des termes standard), 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 les API de message protobuf pour C#.
-
Grpc.Tools, qui contient des outils de développement 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 packages NuGet>Console du gestionnaire de packages
Dans la fenêtre console du Gestionnaire de package, exécutez
cd GrpcGreeterClient
pour modifier les répertoires vers le dossier contenant lesGrpcGreeterClient.csproj
fichiers.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 l’Explorateur de solutions>pour 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 , puis sélectionnez Installer.
- Répétez pour
Google.Protobuf
etGrpc.Tools
.
Ajouter greet.proto
Créez un dossier Protos dans le projet client gRPC.
Copiez le fichier Protos\greet.proto du service Greeter gRPC dans le dossier Protos du projet 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, puis sélectionnez Modifier le fichier projet.
Ajoutez un groupe d’éléments avec un
<Protobuf>
élément 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 les services gRPC avec des ressources C# générées.
Mettez à jour le fichier
Program.cs
du client gRPC par le code suivant.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 projet de service
GrpcGreeter
, appuyez surCtrl+F5
pour démarrer le serveur sans le débogueur. - Dans le projet de console
GrpcGreeterClient
, appuyez surCtrl+F5
pour démarrer le client sans le débogueur.
Le client envoie un message d’accueil 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 HTTP/2 POST https://localhost:7042/greet.Greeter/SayHello - 200 - application/grpc 40.4615ms
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ésoudre 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 de 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 projet, recherchez
gRPC
. Sélectionnez ASP.NET service gRPC principal , 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 afin que les espaces de noms correspondent lorsque vous copiez et collez du code. - Sélectionnez Suivant.
- Dans la boîte de dialogue Informations supplémentaires , sélectionnez .NET 8.0 (Support à 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 approuvez le certificat IIS Express SSL.
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 la confiance à accorder au navigateur Firefox, consultez l’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 TLS (Transport Layer Security). 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 les propriétés\launchSettings.jssur le fichier 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 Présentation de 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 l’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 de l’application.
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 , puis sélectionnez Suivant.
- Dans la boîte de dialogue Informations supplémentaires , sélectionnez .NET 8.0 (Support à 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 les API de message protobuf pour C#.
-
Grpc.Tools, qui contient des outils de développement 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 packages NuGet>Console du gestionnaire de packages
Dans la fenêtre console du Gestionnaire de package, exécutez
cd GrpcGreeterClient
pour modifier les répertoires vers le dossier contenant lesGrpcGreeterClient.csproj
fichiers.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 l’Explorateur de solutions>pour 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 , puis sélectionnez Installer.
- Répétez pour
Google.Protobuf
etGrpc.Tools
.
Ajouter greet.proto
Créez un dossier Protos dans le projet client gRPC.
Copiez le fichier Protos\greet.proto du service Greeter gRPC dans le dossier Protos du projet 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, puis sélectionnez Modifier le fichier projet.
Ajoutez un groupe d’éléments avec un
<Protobuf>
élément 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 les services gRPC avec des 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 un message d’accueil 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ésoudre 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 de 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 projet, recherchez
gRPC
. Sélectionnez ASP.NET service gRPC principal , 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 afin que les espaces de noms correspondent lorsque 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 approuvez le certificat IIS Express SSL.
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 la confiance à accorder au navigateur Firefox, consultez l’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 TLS (Transport Layer Security). 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 les propriétés\launchSettings.jssur le fichier 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 ASP.NET application gRPC Core 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 Présentation de 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 l’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 de l’application.
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, puis Sélectionnez Suivant.
- Dans la zone de texte Nom du projet , entrez GrpcGreeterClient , puis 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 les API de message protobuf pour C#.
-
Grpc.Tools, qui contient des outils de développement 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 packages NuGet>Console du gestionnaire de packages
Dans la fenêtre console du Gestionnaire de package, exécutez
cd GrpcGreeterClient
pour modifier les répertoires vers le dossier contenant lesGrpcGreeterClient.csproj
fichiers.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 l’Explorateur de solutions>pour 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 , puis sélectionnez Installer.
- Répétez pour
Google.Protobuf
etGrpc.Tools
.
Ajouter greet.proto
Créez un dossier Protos dans le projet client gRPC.
Copiez le fichier Protos\greet.proto du service Greeter gRPC dans le dossier Protos du projet 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, puis sélectionnez Modifier le fichier projet.
Ajoutez un groupe d’éléments avec un
<Protobuf>
élément 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 les services gRPC avec des 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 un message d’accueil 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ésoudre 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 de développement web et ASP.NET .
- Kit de développement .NET 6
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 projet, recherchez
gRPC
. Sélectionnez ASP.NET service gRPC principal , 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 afin que les espaces de noms correspondent lorsque 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 approuvez le certificat IIS Express SSL.
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 la confiance à accorder au navigateur Firefox, consultez l’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 TLS (Transport Layer Security). 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 les propriétés\launchSettings.jssur le fichier 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 ASP.NET application gRPC Core 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 Présentation de 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 l’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 de l’application.
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, puis Sélectionnez Suivant.
- Dans la zone de texte Nom du projet , entrez GrpcGreeterClient , puis 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 les API de message protobuf pour C#.
-
Grpc.Tools, qui contient des outils de développement 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 packages NuGet>Console du gestionnaire de packages
Dans la fenêtre console du Gestionnaire de package, exécutez
cd GrpcGreeterClient
pour modifier les répertoires vers le dossier contenant lesGrpcGreeterClient.csproj
fichiers.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 l’Explorateur de solutions>pour 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 , puis sélectionnez Installer.
- Répétez pour
Google.Protobuf
etGrpc.Tools
.
Ajouter greet.proto
Créez un dossier Protos dans le projet client gRPC.
Copiez le fichier Protos\greet.proto du service Greeter gRPC dans le dossier Protos du projet 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, puis sélectionnez Modifier le fichier projet.
Ajoutez un groupe d’éléments avec un
<Protobuf>
élément 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 les services gRPC avec des 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 un message d’accueil 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ésoudre 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.
Afficher ou télécharger un exemple de code (comment télécharger).
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 2019 16.8 ou version ultérieure avec la charge de travail de développement web et de ASP.NET
- SDK .NET 5
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 projet , sélectionnez service 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 afin que les espaces de noms correspondent lorsque vous copiez et collez du code. - Sélectionnez Suivant.
- Dans la boîte de dialogue Informations supplémentaires , sélectionnez .NET 5.0 dans la liste déroulante Target Framework .
- 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 approuvez le certificat IIS Express SSL.
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 la confiance à accorder au navigateur Firefox, consultez l’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 TLS (Transport Layer Security). 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 ASP.NET application gRPC Core sur macOS.
Examiner les fichiers projet
Fichiers projet GrpcGreeter :
-
greet.proto : Le fichier Protos/greet.proto définit le
Greeter
gRPC et est utilisé pour générer les ressources du serveur gRPC. Pour plus d’informations, consultez Présentation de gRPC. -
Dossier Services : contient l’implémentation du
Greeter
service. -
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 l’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 de l’application.
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) et Sélectionnez Suivant.
- Dans la zone de texte Nom du projet , entrez GrpcGreeterClient , puis 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 les API de message 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 packages NuGet>Console du gestionnaire de packages
Dans la fenêtre console du Gestionnaire de package, exécutez
cd GrpcGreeterClient
pour modifier les répertoires vers le dossier contenant lesGrpcGreeterClient.csproj
fichiers.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 l’Explorateur de solutions>pour 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 , puis sélectionnez Installer.
- Répétez pour
Google.Protobuf
etGrpc.Tools
.
Ajouter greet.proto
Créez un dossier Protos dans le projet client gRPC.
Copiez le fichier Protos\greet.proto du service Greeter gRPC dans le dossier Protos du projet 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, puis sélectionnez Modifier le fichier projet.
Ajoutez un groupe d’éléments avec un
<Protobuf>
élément 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 les services gRPC avec des 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 un message d’accueil 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ésoudre 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.
Afficher ou télécharger un exemple de code (comment télécharger).
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 2019 16.4 ou version ultérieure avec la charge de travail de développement web et de ASP.NET
- KIT SDK .NET Core 3.1
Créer un service gRPC
Démarrez Visual Studio et sélectionnez Créer un projet. Sinon, dans le menu Fichier Visual Studio, sélectionnez Nouveau>projet.
Dans la boîte de dialogue Créer un projet , sélectionnez service gRPC et sélectionnez Suivant :
Nommez le projet GrpcGreeter. Il est important de nommer le projet GrpcGreeter afin que les espaces de noms correspondent lorsque vous copiez et collez du code.
Sélectionnez Créer.
Dans la boîte de dialogue Créer un service gRPC :
- Le modèle de service gRPC est sélectionné.
- 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 approuvez le certificat IIS Express SSL.
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 la confiance à accorder au navigateur Firefox, consultez l’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 TLS (Transport Layer Security). 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 ASP.NET application gRPC Core sur macOS.
Examiner les fichiers projet
Fichiers projet GrpcGreeter :
-
greet.proto : Le fichier Protos/greet.proto définit le
Greeter
gRPC et est utilisé pour générer les ressources du serveur gRPC. Pour plus d’informations, consultez Présentation de gRPC. -
Dossier Services : contient l’implémentation du
Greeter
service. -
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 l’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 de l’application.
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) et Sélectionnez Suivant.
- Dans la zone de texte Nom du projet , entrez GrpcGreeterClient , puis 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 les API de message 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 packages NuGet>Console du gestionnaire de packages
Dans la fenêtre console du Gestionnaire de package, exécutez
cd GrpcGreeterClient
pour modifier les répertoires vers le dossier contenant lesGrpcGreeterClient.csproj
fichiers.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 l’Explorateur de solutions>pour 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 , puis sélectionnez Installer.
- Répétez pour
Google.Protobuf
etGrpc.Tools
.
Ajouter greet.proto
Créez un dossier Protos dans le projet client gRPC.
Copiez le fichier Protos\greet.proto du service Greeter gRPC dans le dossier Protos du projet 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, puis sélectionnez Modifier le fichier projet.
Ajoutez un groupe d’éléments avec un
<Protobuf>
élément 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 les services gRPC avec des 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 un message d’accueil 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ésoudre ce problème, consultez Appeler un service gRPC avec un certificat non approuvé/non valide.