Remarque
L’accès à cette page requiert une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page requiert une autorisation. Vous pouvez essayer de modifier des répertoires.
Ce tutoriel montre comment créer un client gRPC .NET 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.
Prerequisites
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 nouveau 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
GrpcGreeterpour 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. - Cliquez sur 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 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
Note
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 gRPCGreeteret 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.
- 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.
- 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 GrpcGreeterClientpour modifier les répertoires vers le dossier contenant lesGrpcGreeterClient.csprojfichiers.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.ProtobufetGrpc.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.
Modifiez l’espace de noms à l’intérieur du fichier
greet.protovers l’espace de noms du projet :option csharp_namespace = "GrpcGreeterClient";Modifiez 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.
Note
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: le code Protocol Buffers 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.
Modifiez le fichier
Program.csdu client gRPC avec 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 en surbrillance précédent, remplacez le numéro de port localhost
7042par le numéro de portHTTPS(et nonProperties/launchSettings.jsonspécifié dansGrpcGreeterau sein du projet de service gRPC.
Program.cs contient le point d’entrée et la logique du client gRPC.
Le client Greeter est créé en :
- Instanciant un
GrpcChannelcontenant les informations de création de la connexion au service gRPC. - Utilisant le
GrpcChannelpour 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
Modifiez 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+F5pour démarrer le serveur sans le débogueur. - Dans le projet de console
GrpcGreeterClient, appuyez surCtrl+F5pour 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
Note
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 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.
Prerequisites
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 nouveau 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
GrpcGreeterpour 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. - Cliquez sur 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 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
Note
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 gRPCGreeteret 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.
- 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.
- 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 GrpcGreeterClientpour modifier les répertoires vers le dossier contenant lesGrpcGreeterClient.csprojfichiers.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.ProtobufetGrpc.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.
Modifiez l’espace de noms à l’intérieur du fichier
greet.protovers l’espace de noms du projet :option csharp_namespace = "GrpcGreeterClient";Modifiez 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.
Note
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: le code Protocol Buffers 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.
Modifiez le fichier
Program.csdu client gRPC avec 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 en surbrillance précédent, remplacez le numéro de port localhost
7042par le numéro de portHTTPS(et nonProperties/launchSettings.jsonspécifié dansGrpcGreeterau sein du projet de service gRPC.
Program.cs contient le point d’entrée et la logique du client gRPC.
Le client Greeter est créé en :
- Instanciant un
GrpcChannelcontenant les informations de création de la connexion au service gRPC. - Utilisant le
GrpcChannelpour 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
Modifiez 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+F5pour démarrer le serveur sans le débogueur. - Dans le projet
GrpcGreeterClient, appuyez surCtrl+F5pour 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
Note
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 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.
Prerequisites
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 nouveau 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
GrpcGreeterpour 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. - Cliquez sur 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
Note
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 gRPCGreeteret 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.
- 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.
- 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 GrpcGreeterClientpour modifier les répertoires vers le dossier contenant lesGrpcGreeterClient.csprojfichiers.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.ProtobufetGrpc.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.
Modifiez l’espace de noms à l’intérieur du fichier
greet.protovers l’espace de noms du projet :option csharp_namespace = "GrpcGreeterClient";Modifiez 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.
Note
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: le code Protocol Buffers 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.
Modifiez le fichier
Program.csdu client gRPC avec 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 en surbrillance précédent, remplacez le numéro de port localhost
7042par le numéro de portHTTPS(et nonProperties/launchSettings.jsonspécifié dansGrpcGreeterau sein du projet de service gRPC.
Program.cs contient le point d’entrée et la logique du client gRPC.
Le client Greeter est créé en :
- Instanciant un
GrpcChannelcontenant les informations de création de la connexion au service gRPC. - Utilisant le
GrpcChannelpour 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
Modifiez 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+F5pour démarrer le serveur sans le débogueur. - Dans le projet
GrpcGreeterClient, appuyez surCtrl+F5pour 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
Note
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 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.
Prerequisites
- 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 nouveau 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
GrpcGreeterpour 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. - Cliquez sur 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
Note
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 gRPCGreeteret 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.
- 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.
- 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 GrpcGreeterClientpour modifier les répertoires vers le dossier contenant lesGrpcGreeterClient.csprojfichiers.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.ProtobufetGrpc.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.
Modifiez l’espace de noms à l’intérieur du fichier
greet.protovers l’espace de noms du projet :option csharp_namespace = "GrpcGreeterClient";Modifiez 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.
Note
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: le code Protocol Buffers 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.
Modifiez le fichier
Program.csdu client gRPC avec 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 en surbrillance précédent, remplacez le numéro de port localhost
7042par le numéro de portHTTPS(et nonProperties/launchSettings.jsonspécifié dansGrpcGreeterau sein du projet de service gRPC.
Program.cs contient le point d’entrée et la logique du client gRPC.
Le client Greeter est créé en :
- Instanciant un
GrpcChannelcontenant les informations de création de la connexion au service gRPC. - Utilisant le
GrpcChannelpour 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+F5pour démarrer le serveur sans le débogueur. - Dans le projet
GrpcGreeterClient, appuyez surCtrl+F5pour 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"
Note
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 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.
Prerequisites
- 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
GrpcGreeterpour 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. - Cliquez sur Suivant.
- Dans la boîte de dialogue Informations supplémentaires , sélectionnez .NET 5.0 dans la liste déroulante Target Framework .
- 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 quelocalhostest 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
Note
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
GreetergRPC 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
Greeterservice. -
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), puis 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.
- 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 GrpcGreeterClientpour modifier les répertoires vers le dossier contenant lesGrpcGreeterClient.csprojfichiers.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.ProtobufetGrpc.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.
Modifiez l’espace de noms à l’intérieur du fichier
greet.protovers l’espace de noms du projet :option csharp_namespace = "GrpcGreeterClient";Modifiez 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.
Note
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: le code Protocol Buffers 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.
Modifiez le fichier
Program.csdu client gRPC avec 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
GrpcChannelcontenant les informations de création de la connexion au service gRPC. - Utilisant le
GrpcChannelpour 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+F5pour démarrer le serveur sans le débogueur. - Dans le projet
GrpcGreeterClient, appuyez surCtrl+F5pour 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
Note
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.
Prerequisites
- Visual Studio 2019 16.4 ou version ultérieure avec la charge de travail de développement web et de ASP.NET
- 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.
Cliquez sur Créer.
Dans la boîte de dialogue Créer un service gRPC :
- Le modèle de service gRPC est sélectionné.
- 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 quelocalhostest 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
Note
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
GreetergRPC 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
Greeterservice. -
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 GrpcGreeterClientpour modifier les répertoires vers le dossier contenant lesGrpcGreeterClient.csprojfichiers.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.ProtobufetGrpc.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.
Modifiez l’espace de noms à l’intérieur du fichier
greet.protovers l’espace de noms du projet :option csharp_namespace = "GrpcGreeterClient";Modifiez 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.
Note
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: le code Protocol Buffers 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.
Modifiez le fichier Program.cs du client gRPC avec 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
GrpcChannelcontenant les informations de création de la connexion au service gRPC. - Utilisant le
GrpcChannelpour 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+F5pour démarrer le serveur sans le débogueur. - Dans le projet
GrpcGreeterClient, appuyez surCtrl+F5pour 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
Note
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.