Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Lernprogramm wird gezeigt, wie Sie einen .NET Core gRPC-Client und einen ASP.NET Core gRPC Server erstellen. Das Ziel ist ein gRPC-Client, der mit dem gRPC-Greeter-Dienst kommuniziert.
In diesem Tutorial:
- Erstellen Sie einen gRPC-Server.
- Erstellen Sie einen gRPC-Client.
- Testen Sie den gRPC-Client mit dem gRPC-Greeter-Dienst.
Voraussetzungen
Visual Studio 2022 mit ASP.NET - und Webentwicklungsworkload .
Erstellen eines gRPC-Diensts
- Starten Sie Visual Studio 2022, und wählen Sie "Neues Projekt" aus.
- Suchen Sie im Dialogfeld " Neues Projekt erstellen" nach
gRPC
. Wählen Sie ASP.NET Core gRPC Service aus, und wählen Sie "Weiter" aus. - Geben Sie im Dialogfeld "
GrpcGreeter
" den Namen des Projekts ein. Es ist wichtig, das Projekt GrpcGreeter zu benennen, damit die Namespaces übereinstimmen, wenn Sie Code kopieren und einfügen. - Wählen Sie "Weiter" aus.
- Wählen Sie im Dialogfeld "Zusätzliche Informationen " .NET 9.0 (Standard Term Support) und dann "Erstellen" aus.
Ausführen des Diensts
Drücken Sie STRG+F5, um die Ausführung ohne den Debugger zu starten.
Visual Studio zeigt das folgende Dialogfeld an, wenn ein Projekt noch nicht für die Verwendung von SSL konfiguriert ist:
Wählen Sie "Ja " aus, wenn Sie dem IIS Express-SSL-Zertifikat vertrauen.
Das folgende Dialogfeld wird angezeigt:
Wählen Sie "Ja " aus, wenn Sie dem Entwicklungszertifikat vertrauen möchten.
Informationen zum Vertrauen in den Firefox-Browser finden Sie unter Firefox SEC_ERROR_INADEQUATE_KEY_USAGE Zertifikatfehler.
Visual Studio:
- Startet den Kestrel-Server.
- Startet einen Browser.
- Navigiert zu
http://localhost:port
, z. B.http://localhost:7042
.- Port: Eine zufällig zugewiesene Portnummer für die App.
-
localhost
: Der Standardhostname für den lokalen Computer. „Localhost“ dient nur Webanforderungen vom lokalen Computer.
Die Protokolle zeigen den Dienst an, der an https://localhost:<port>
lauscht, wobei <port>
die Portnummer von localhost ist, die bei der Erstellung des Projekts zufällig zugewiesen und in Properties/launchSettings.json
festgelegt wurde.
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
Hinweis
Die gRPC-Vorlage ist für die Verwendung von Transport Layer Security (TLS) konfiguriert. gRPC-Clients müssen zum Aufrufen des Servers HTTPS verwenden. Die gRPC-Dienst-Localhost-Portnummer wird zufällig zugewiesen, wenn das Projekt erstellt und im Eigenschaften-\launchSettings.jsfür die Datei des gRPC-Dienstprojekts festgelegt wird.
Überprüfen der Projektdateien
GrpcGreeter-Projektdateien :
-
Protos/greet.proto
: definiert denGreeter
-gRPC und generiert die gRPC-Serverobjekte. Weitere Informationen finden Sie in der Einführung in gRPC. - Ordner
Services
: enthält die Implementierung des DienstsGreeter
. -
appSettings.json
: enthält Konfigurationsdaten, z. B. das von Kestrel verwendete Protokoll. Weitere Informationen finden Sie unter Configuration in ASP.NET Core. -
Program.cs
mit folgendem Inhalt:- Der Einstiegspunkt für den gRPC-Dienst. Weitere Informationen finden Sie unter .NET Generic Host in ASP.NET Core.
- Der Code, mit dem das App-Verhalten konfiguriert wird. Weitere Informationen finden Sie im App-Start.
Erstellen des gRPC-Clients in einer .NET-Konsolen-App
- Öffnen Sie eine zweite Instanz von Visual Studio, und wählen Sie "Neues Projekt" aus.
- Wählen Sie im Dialogfeld " Neues Projekt erstellen " die Option "Konsolen-App" und dann "Weiter" aus.
- Geben Sie im Textfeld "Projektname " "GrpcGreeterClient " ein, und wählen Sie "Weiter" aus.
- Wählen Sie im Dialogfeld "Zusätzliche Informationen " .NET 9.0 (Standard Term Support) und dann "Erstellen" aus.
Hinzufügen der erforderlichen NuGet-Pakete
Das gRPC-Clientprojekt erfordert die folgenden NuGet-Pakete:
- Grpc.Net.Client, das den .NET Core-Client enthält.
- Google.Protobuf, das protobuf-Nachrichten-APIs für C# enthält.
-
Grpc.Tools, die C#-Toolunterstützung für Protobuf-Dateien enthalten. Das Toolpaket ist nicht zur Laufzeit erforderlich, darum ist die Abhängigkeit mit
PrivateAssets="All"
markiert.
Installieren Sie die Pakete über die Paket-Manager-Konsole oder über „NuGet-Pakete verwalten“.
PMC-Option zum Installieren von Paketen
Wählen Sie in Visual Studio Tools>NuGet-Paket-Manager>Paket-Manager-Konsole aus.
Führen Sie im Paket-Manager-Konsolenfenster den Befehl
cd GrpcGreeterClient
aus, um zum Ordner mit denGrpcGreeterClient.csproj
Dateien zu wechseln.Führen Sie die folgenden Befehle aus:
Install-Package Grpc.Net.Client Install-Package Google.Protobuf Install-Package Grpc.Tools
Option „NuGet-Pakete verwalten“ zum Installieren von Paketen
- Klicken Sie mit der rechten Maustaste auf das Projekt im Projektmappen-Explorer>"NuGet-Pakete verwalten".
- Wählen Sie die Registerkarte " Durchsuchen" aus .
- Geben Sie Grpc.Net.Client in das Suchfeld ein.
- Wählen Sie das Grpc.Net.Client-Paket auf der Registerkarte " Durchsuchen " und dann "Installieren" aus.
- Führen Sie diese Aktionen auch für
Google.Protobuf
undGrpc.Tools
durch.
Fügen Sie „greet.proto“ hinzu:
Erstellen Sie einen Protos-Ordner im gRPC-Clientprojekt.
Kopieren Sie die Datei "Protos\greet.proto " aus dem gRPC-Begrüßungsdienst in den Ordner "Protos " im gRPC-Clientprojekt.
Ändern Sie den Namespace in der Datei
greet.proto
in den Namespace des Projekts:option csharp_namespace = "GrpcGreeterClient";
Bearbeiten Sie die Projektdatei
GrpcGreeterClient.csproj
:
Klicken Sie mit der rechten Maustaste auf das Projekt, und wählen Sie "Projektdatei bearbeiten" aus.
Fügen Sie eine Elementgruppe mit einem
<Protobuf>
Element hinzu, das auf die Datei "greet.proto " verweist:<ItemGroup> <Protobuf Include="Protos\greet.proto" GrpcServices="Client" /> </ItemGroup>
Erstellen des Greeter-Clients
- Erstellen Sie das Clientprojekt, um die Typen im
GrpcGreeterClient
-Namespace zu erstellen.
Hinweis
Die GrpcGreeterClient
-Typen werden vom Buildprozess automatisch erstellt. Das Toolpaket Grpc.Tools generiert die folgenden Dateien basierend auf der Datei "greet.proto ":
-
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs
: Der Protokollpuffercode, der die Anforderungs- und Antwortnachrichtentypen auffüllt, serialisiert und abruft. -
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs
: Enthält die erzeugten Clientklassen
Weitere Informationen zu den von Grpc.Tools automatisch generierten C#-Ressourcen finden Sie unter gRPC-Dienste mit C#: Generierte C#-Ressourcen.
Aktualisieren Sie die Datei
Program.cs
des gRPC-Clients mit dem folgenden Code.using Grpc.Net.Client; using GrpcGreeterClient; // The port number must match the port of the gRPC server. using var channel = GrpcChannel.ForAddress("https://localhost:7042"); var client = new Greeter.GreeterClient(channel); var reply = await client.SayHelloAsync( new HelloRequest { Name = "GreeterClient" }); Console.WriteLine("Greeting: " + reply.Message); Console.WriteLine("Press any key to exit..."); Console.ReadKey();
Ersetzen Sie im oben hervorgehobenen Code die Portnummer
7042
von localhost durch die inHTTPS
angegebene PortnummerProperties/launchSettings.json
innerhalb des DienstprojektsGrpcGreeter
.
Program.cs
enthält den Einstiegspunkt und die Logik für den gRPC-Client.
Der Greeter-Client wird folgendermaßen erstellt:
- Instanziieren eines
GrpcChannel
-Objekts, das Informationen zum Herstellen einer Verbindung mit dem gRPC-Dienst enthält - Verwenden von
GrpcChannel
zum Erstellen des Greeter-Clients:
// 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();
Der Greeter-Client ruft die asynchrone Methode SayHello
auf. Das Ergebnis des Aufrufs von SayHello
wird angezeigt:
// 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();
Testen des gRPC-Clients mit dem gRPC-Greeter-Dienst
Aktualisieren Sie die Datei appsettings.Development.json
, indem Sie die folgenden hervorgehobenen Zeilen hinzufügen:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning",
"Microsoft.AspNetCore.Hosting": "Information",
"Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information"
}
}
}
- Drücken Sie im
GrpcGreeter
-DienstprojektCtrl+F5
, um den Server ohne den Debugger zu starten. - Drücken Sie im
GrpcGreeterClient
KonsolenprojektCtrl+F5
, um den Client ohne den Debugger zu starten.
Der Client sendet eine Begrüßung an den Dienst mit einer Nachricht, die den Namen GreeterClient enthält. Der Dienst gibt als Antwort die Meldung „Hello GreeterClient“ aus. Die Antwort „Hello GreeterClient“ wird in der Eingabeaufforderung angezeigt:
Greeting: Hello GreeterClient
Press any key to exit...
Der gRPC-Dienst zeichnet die Details des erfolgreichen Aufrufs in den Protokollen auf, die an die Eingabeaufforderung ausgegeben werden:
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
Hinweis
Der Code in diesem Artikel erfordert das ASP.NET Core-HTTPS-Entwicklungszertifikat, um den gRPC-Dienst zu sichern. Wenn auf dem .NET gRPC-Client ein Fehler mit der Meldung The remote certificate is invalid according to the validation procedure.
oder The SSL connection could not be established.
auftritt, wird das Entwicklungszertifikat als nicht vertrauenswürdig eingestuft. Um dieses Problem zu beheben, lesen Sie Aufrufen eines gRPC-Dienstes mit einem nicht vertrauenswürdigen/ungültigen Zertifikat.
Nächste Schritte
In diesem Lernprogramm wird gezeigt, wie Sie einen .NET Core gRPC-Client und einen ASP.NET Core gRPC Server erstellen. Das Ziel ist ein gRPC-Client, der mit dem gRPC-Greeter-Dienst kommuniziert.
In diesem Tutorial:
- Erstellen Sie einen gRPC-Server.
- Erstellen Sie einen gRPC-Client.
- Testen Sie den gRPC-Client mit dem gRPC-Greeter-Dienst.
Voraussetzungen
Visual Studio 2022 mit ASP.NET - und Webentwicklungsworkload .
Erstellen eines gRPC-Diensts
- Starten Sie Visual Studio 2022, und wählen Sie "Neues Projekt" aus.
- Suchen Sie im Dialogfeld " Neues Projekt erstellen" nach
gRPC
. Wählen Sie ASP.NET Core gRPC Service aus, und wählen Sie "Weiter" aus. - Geben Sie im Dialogfeld "
GrpcGreeter
" den Namen des Projekts ein. Es ist wichtig, das Projekt GrpcGreeter zu benennen, damit die Namespaces übereinstimmen, wenn Sie Code kopieren und einfügen. - Wählen Sie "Weiter" aus.
- Wählen Sie im Dialogfeld "Zusätzliche Informationen " .NET 8.0 (Long Term Support) und dann "Erstellen" aus.
Ausführen des Diensts
Drücken Sie STRG+F5, um die Ausführung ohne den Debugger zu starten.
Visual Studio zeigt das folgende Dialogfeld an, wenn ein Projekt noch nicht für die Verwendung von SSL konfiguriert ist:
Wählen Sie "Ja " aus, wenn Sie dem IIS Express-SSL-Zertifikat vertrauen.
Das folgende Dialogfeld wird angezeigt:
Wählen Sie "Ja " aus, wenn Sie dem Entwicklungszertifikat vertrauen möchten.
Informationen zum Vertrauen in den Firefox-Browser finden Sie unter Firefox SEC_ERROR_INADEQUATE_KEY_USAGE Zertifikatfehler.
Visual Studio:
- Startet den Kestrel-Server.
- Startet einen Browser.
- Navigiert zu
http://localhost:port
, z. B.http://localhost:7042
.- Port: Eine zufällig zugewiesene Portnummer für die App.
-
localhost
: Der Standardhostname für den lokalen Computer. „Localhost“ dient nur Webanforderungen vom lokalen Computer.
Die Protokolle zeigen den Dienst an, der an https://localhost:<port>
lauscht, wobei <port>
die Portnummer von localhost ist, die bei der Erstellung des Projekts zufällig zugewiesen und in Properties/launchSettings.json
festgelegt wurde.
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
Hinweis
Die gRPC-Vorlage ist für die Verwendung von Transport Layer Security (TLS) konfiguriert. gRPC-Clients müssen zum Aufrufen des Servers HTTPS verwenden. Die gRPC-Dienst-Localhost-Portnummer wird zufällig zugewiesen, wenn das Projekt erstellt und im Eigenschaften-\launchSettings.jsfür die Datei des gRPC-Dienstprojekts festgelegt wird.
Überprüfen der Projektdateien
GrpcGreeter-Projektdateien :
-
Protos/greet.proto
: definiert denGreeter
-gRPC und generiert die gRPC-Serverobjekte. Weitere Informationen finden Sie in der Einführung in gRPC. - Ordner
Services
: enthält die Implementierung des DienstsGreeter
. -
appSettings.json
: enthält Konfigurationsdaten, z. B. das von Kestrel verwendete Protokoll. Weitere Informationen finden Sie unter Configuration in ASP.NET Core. -
Program.cs
mit folgendem Inhalt:- Der Einstiegspunkt für den gRPC-Dienst. Weitere Informationen finden Sie unter .NET Generic Host in ASP.NET Core.
- Der Code, mit dem das App-Verhalten konfiguriert wird. Weitere Informationen finden Sie im App-Start.
Erstellen des gRPC-Clients in einer .NET-Konsolen-App
- Öffnen Sie eine zweite Instanz von Visual Studio, und wählen Sie "Neues Projekt" aus.
- Wählen Sie im Dialogfeld " Neues Projekt erstellen " die Option "Konsolen-App" und dann "Weiter" aus.
- Geben Sie im Textfeld "Projektname " "GrpcGreeterClient " ein, und wählen Sie "Weiter" aus.
- Wählen Sie im Dialogfeld "Zusätzliche Informationen " .NET 8.0 (Long Term Support) und dann "Erstellen" aus.
Hinzufügen der erforderlichen NuGet-Pakete
Das gRPC-Clientprojekt erfordert die folgenden NuGet-Pakete:
- Grpc.Net.Client, das den .NET Core-Client enthält.
- Google.Protobuf, das protobuf-Nachrichten-APIs für C# enthält.
-
Grpc.Tools, die C#-Toolunterstützung für Protobuf-Dateien enthalten. Das Toolpaket ist nicht zur Laufzeit erforderlich, darum ist die Abhängigkeit mit
PrivateAssets="All"
markiert.
Installieren Sie die Pakete über die Paket-Manager-Konsole oder über „NuGet-Pakete verwalten“.
PMC-Option zum Installieren von Paketen
Wählen Sie in Visual Studio Tools>NuGet-Paket-Manager>Paket-Manager-Konsole aus.
Führen Sie im Paket-Manager-Konsolenfenster den Befehl
cd GrpcGreeterClient
aus, um zum Ordner mit denGrpcGreeterClient.csproj
Dateien zu wechseln.Führen Sie die folgenden Befehle aus:
Install-Package Grpc.Net.Client Install-Package Google.Protobuf Install-Package Grpc.Tools
Option „NuGet-Pakete verwalten“ zum Installieren von Paketen
- Klicken Sie mit der rechten Maustaste auf das Projekt im Projektmappen-Explorer>"NuGet-Pakete verwalten".
- Wählen Sie die Registerkarte " Durchsuchen" aus .
- Geben Sie Grpc.Net.Client in das Suchfeld ein.
- Wählen Sie das Grpc.Net.Client-Paket auf der Registerkarte " Durchsuchen " und dann "Installieren" aus.
- Führen Sie diese Aktionen auch für
Google.Protobuf
undGrpc.Tools
durch.
Fügen Sie „greet.proto“ hinzu:
Erstellen Sie einen Protos-Ordner im gRPC-Clientprojekt.
Kopieren Sie die Datei "Protos\greet.proto " aus dem gRPC-Begrüßungsdienst in den Ordner "Protos " im gRPC-Clientprojekt.
Ändern Sie den Namespace in der Datei
greet.proto
in den Namespace des Projekts:option csharp_namespace = "GrpcGreeterClient";
Bearbeiten Sie die Projektdatei
GrpcGreeterClient.csproj
:
Klicken Sie mit der rechten Maustaste auf das Projekt, und wählen Sie "Projektdatei bearbeiten" aus.
Fügen Sie eine Elementgruppe mit einem
<Protobuf>
Element hinzu, das auf die Datei "greet.proto " verweist:<ItemGroup> <Protobuf Include="Protos\greet.proto" GrpcServices="Client" /> </ItemGroup>
Erstellen des Greeter-Clients
- Erstellen Sie das Clientprojekt, um die Typen im
GrpcGreeterClient
-Namespace zu erstellen.
Hinweis
Die GrpcGreeterClient
-Typen werden vom Buildprozess automatisch erstellt. Das Toolpaket Grpc.Tools generiert die folgenden Dateien basierend auf der Datei "greet.proto ":
-
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs
: Der Protokollpuffercode, der die Anforderungs- und Antwortnachrichtentypen auffüllt, serialisiert und abruft. -
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs
: Enthält die erzeugten Clientklassen
Weitere Informationen zu den von Grpc.Tools automatisch generierten C#-Ressourcen finden Sie unter gRPC-Dienste mit C#: Generierte C#-Ressourcen.
Aktualisieren Sie die Datei
Program.cs
des gRPC-Clients mit dem folgenden Code.using System.Threading.Tasks; using Grpc.Net.Client; using GrpcGreeterClient; // The port number must match the port of the gRPC server. using var channel = GrpcChannel.ForAddress("https://localhost:7042"); var client = new Greeter.GreeterClient(channel); var reply = await client.SayHelloAsync( new HelloRequest { Name = "GreeterClient" }); Console.WriteLine("Greeting: " + reply.Message); Console.WriteLine("Press any key to exit..."); Console.ReadKey();
Ersetzen Sie im oben hervorgehobenen Code die Portnummer
7042
von localhost durch die inHTTPS
angegebene PortnummerProperties/launchSettings.json
innerhalb des DienstprojektsGrpcGreeter
.
Program.cs
enthält den Einstiegspunkt und die Logik für den gRPC-Client.
Der Greeter-Client wird folgendermaßen erstellt:
- Instanziieren eines
GrpcChannel
-Objekts, das Informationen zum Herstellen einer Verbindung mit dem gRPC-Dienst enthält - Verwenden von
GrpcChannel
zum Erstellen des Greeter-Clients:
// 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();
Der Greeter-Client ruft die asynchrone Methode SayHello
auf. Das Ergebnis des Aufrufs von SayHello
wird angezeigt:
// 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();
Testen des gRPC-Clients mit dem gRPC-Greeter-Dienst
Aktualisieren Sie die Datei appsettings.Development.json
, indem Sie die folgenden hervorgehobenen Zeilen hinzufügen:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
,"Microsoft.AspNetCore.Hosting": "Information",
"Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information"
}
}
}
- Drücken Sie im Greeterdienst
Ctrl+F5
, um den Server ohne Debugger zu starten. - Drücken Sie im
GrpcGreeterClient
-ProjektCtrl+F5
, um den Client ohne den Debugger zu starten.
Der Client sendet eine Begrüßung an den Dienst mit einer Nachricht, die den Namen GreeterClient enthält. Der Dienst gibt als Antwort die Meldung „Hello GreeterClient“ aus. Die Antwort „Hello GreeterClient“ wird in der Eingabeaufforderung angezeigt:
Greeting: Hello GreeterClient
Press any key to exit...
Der gRPC-Dienst zeichnet die Details des erfolgreichen Aufrufs in den Protokollen auf, die an die Eingabeaufforderung ausgegeben werden:
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
Hinweis
Der Code in diesem Artikel erfordert das ASP.NET Core-HTTPS-Entwicklungszertifikat, um den gRPC-Dienst zu sichern. Wenn auf dem .NET gRPC-Client ein Fehler mit der Meldung The remote certificate is invalid according to the validation procedure.
oder The SSL connection could not be established.
auftritt, wird das Entwicklungszertifikat als nicht vertrauenswürdig eingestuft. Um dieses Problem zu beheben, lesen Sie Aufrufen eines gRPC-Dienstes mit einem nicht vertrauenswürdigen/ungültigen Zertifikat.
Nächste Schritte
In diesem Lernprogramm wird gezeigt, wie Sie einen .NET Core gRPC-Client und einen ASP.NET Core gRPC Server erstellen. Das Ziel ist ein gRPC-Client, der mit dem gRPC-Greeter-Dienst kommuniziert.
In diesem Tutorial:
- Erstellen Sie einen gRPC-Server.
- Erstellen Sie einen gRPC-Client.
- Testen Sie den gRPC-Client mit dem gRPC-Greeter-Dienst.
Voraussetzungen
Visual Studio 2022 mit ASP.NET - und Webentwicklungsworkload .
Erstellen eines gRPC-Diensts
- Starten Sie Visual Studio 2022, und wählen Sie "Neues Projekt erstellen" aus.
- Suchen Sie im Dialogfeld " Neues Projekt erstellen" nach
gRPC
. Wählen Sie ASP.NET Core gRPC Service aus, und wählen Sie "Weiter" aus. - Geben Sie im Dialogfeld "
GrpcGreeter
" den Namen des Projekts ein. Es ist wichtig, das Projekt GrpcGreeter zu benennen, damit die Namespaces übereinstimmen, wenn Sie Code kopieren und einfügen. - Wählen Sie "Weiter" aus.
- Wählen Sie im Dialogfeld "Zusätzliche Informationen " .NET 6.0 (Langfristiger Support) und dann "Erstellen" aus.
Ausführen des Diensts
Drücken Sie STRG+F5, um die Ausführung ohne den Debugger zu starten.
Visual Studio zeigt das folgende Dialogfeld an, wenn ein Projekt noch nicht für die Verwendung von SSL konfiguriert ist:
Wählen Sie "Ja " aus, wenn Sie dem IIS Express-SSL-Zertifikat vertrauen.
Das folgende Dialogfeld wird angezeigt:
Wählen Sie "Ja " aus, wenn Sie dem Entwicklungszertifikat vertrauen möchten.
Informationen zum Vertrauen in den Firefox-Browser finden Sie unter Firefox SEC_ERROR_INADEQUATE_KEY_USAGE Zertifikatfehler.
Visual Studio:
- Startet den Kestrel-Server.
- Startet einen Browser.
- Navigiert zu
http://localhost:port
, z. B.http://localhost:7042
.- Port: Eine zufällig zugewiesene Portnummer für die App.
-
localhost
: Der Standardhostname für den lokalen Computer. „Localhost“ dient nur Webanforderungen vom lokalen Computer.
Die Protokolle zeigen den Dienst an, der an https://localhost:<port>
lauscht, wobei <port>
die Portnummer von localhost ist, die bei der Erstellung des Projekts zufällig zugewiesen und in Properties/launchSettings.json
festgelegt wurde.
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
Hinweis
Die gRPC-Vorlage ist für die Verwendung von Transport Layer Security (TLS) konfiguriert. gRPC-Clients müssen zum Aufrufen des Servers HTTPS verwenden. Die gRPC-Dienst-Localhost-Portnummer wird zufällig zugewiesen, wenn das Projekt erstellt und im Eigenschaften-\launchSettings.jsfür die Datei des gRPC-Dienstprojekts festgelegt wird.
macOS unterstützt ASP.NET Core gRPC mit TLS nicht. Zum erfolgreichen Ausführen von gRPC-Diensten unter macOS ist eine zusätzliche Konfiguration erforderlich. Weitere Informationen finden Sie unter ASP.NET Core gRPC-App kann unter macOS nicht gestartet werden.
Überprüfen der Projektdateien
GrpcGreeter-Projektdateien :
-
Protos/greet.proto
: definiert denGreeter
-gRPC und generiert die gRPC-Serverobjekte. Weitere Informationen finden Sie in der Einführung in gRPC. - Ordner
Services
: enthält die Implementierung des DienstsGreeter
. -
appSettings.json
: enthält Konfigurationsdaten, z. B. das von Kestrel verwendete Protokoll. Weitere Informationen finden Sie unter Configuration in ASP.NET Core. -
Program.cs
mit folgendem Inhalt:- Der Einstiegspunkt für den gRPC-Dienst. Weitere Informationen finden Sie unter .NET Generic Host in ASP.NET Core.
- Der Code, mit dem das App-Verhalten konfiguriert wird. Weitere Informationen finden Sie im App-Start.
Erstellen des gRPC-Clients in einer .NET-Konsolen-App
- Öffnen Sie eine zweite Instanz von Visual Studio, und wählen Sie "Neues Projekt erstellen" aus.
- Wählen Sie im Dialogfeld " Neues Projekt erstellen " die Option "Konsolenanwendung" und dann "Weiter" aus.
- Geben Sie im Textfeld "Projektname " "GrpcGreeterClient " ein, und wählen Sie "Weiter" aus.
- Wählen Sie im Dialogfeld "Zusätzliche Informationen " .NET 6.0 (Langfristiger Support) und dann "Erstellen" aus.
Hinzufügen der erforderlichen NuGet-Pakete
Das gRPC-Clientprojekt erfordert die folgenden NuGet-Pakete:
- Grpc.Net.Client, das den .NET Core-Client enthält.
- Google.Protobuf, das protobuf-Nachrichten-APIs für C# enthält.
-
Grpc.Tools, die C#-Toolunterstützung für Protobuf-Dateien enthalten. Das Toolpaket ist nicht zur Laufzeit erforderlich, darum ist die Abhängigkeit mit
PrivateAssets="All"
markiert.
Installieren Sie die Pakete über die Paket-Manager-Konsole oder über „NuGet-Pakete verwalten“.
PMC-Option zum Installieren von Paketen
Wählen Sie in Visual Studio Tools>NuGet-Paket-Manager>Paket-Manager-Konsole aus.
Führen Sie im Paket-Manager-Konsolenfenster den Befehl
cd GrpcGreeterClient
aus, um zum Ordner mit denGrpcGreeterClient.csproj
Dateien zu wechseln.Führen Sie die folgenden Befehle aus:
Install-Package Grpc.Net.Client Install-Package Google.Protobuf Install-Package Grpc.Tools
Option „NuGet-Pakete verwalten“ zum Installieren von Paketen
- Klicken Sie mit der rechten Maustaste auf das Projekt im Projektmappen-Explorer>"NuGet-Pakete verwalten".
- Wählen Sie die Registerkarte " Durchsuchen" aus .
- Geben Sie Grpc.Net.Client in das Suchfeld ein.
- Wählen Sie das Grpc.Net.Client-Paket auf der Registerkarte " Durchsuchen " und dann "Installieren" aus.
- Führen Sie diese Aktionen auch für
Google.Protobuf
undGrpc.Tools
durch.
Fügen Sie „greet.proto“ hinzu:
Erstellen Sie einen Protos-Ordner im gRPC-Clientprojekt.
Kopieren Sie die Datei "Protos\greet.proto " aus dem gRPC-Begrüßungsdienst in den Ordner "Protos " im gRPC-Clientprojekt.
Ändern Sie den Namespace in der Datei
greet.proto
in den Namespace des Projekts:option csharp_namespace = "GrpcGreeterClient";
Bearbeiten Sie die Projektdatei
GrpcGreeterClient.csproj
:
Klicken Sie mit der rechten Maustaste auf das Projekt, und wählen Sie "Projektdatei bearbeiten" aus.
Fügen Sie eine Elementgruppe mit einem
<Protobuf>
Element hinzu, das auf die Datei "greet.proto " verweist:<ItemGroup> <Protobuf Include="Protos\greet.proto" GrpcServices="Client" /> </ItemGroup>
Erstellen des Greeter-Clients
- Erstellen Sie das Clientprojekt, um die Typen im
GrpcGreeterClient
-Namespace zu erstellen.
Hinweis
Die GrpcGreeterClient
-Typen werden vom Buildprozess automatisch erstellt. Das Toolpaket Grpc.Tools generiert die folgenden Dateien basierend auf der Datei "greet.proto ":
-
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs
: Der Protokollpuffercode, der die Anforderungs- und Antwortnachrichtentypen auffüllt, serialisiert und abruft. -
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs
: Enthält die erzeugten Clientklassen
Weitere Informationen zu den von Grpc.Tools automatisch generierten C#-Ressourcen finden Sie unter gRPC-Dienste mit C#: Generierte C#-Ressourcen.
Aktualisieren Sie die Datei
Program.cs
des gRPC-Clients mit dem folgenden Code.using System.Threading.Tasks; using Grpc.Net.Client; using GrpcGreeterClient; // The port number must match the port of the gRPC server. using var channel = GrpcChannel.ForAddress("https://localhost:7042"); var client = new Greeter.GreeterClient(channel); var reply = await client.SayHelloAsync( new HelloRequest { Name = "GreeterClient" }); Console.WriteLine("Greeting: " + reply.Message); Console.WriteLine("Press any key to exit..."); Console.ReadKey();
Ersetzen Sie im oben hervorgehobenen Code die Portnummer
7042
von localhost durch die inHTTPS
angegebene PortnummerProperties/launchSettings.json
innerhalb des DienstprojektsGrpcGreeter
.
Program.cs
enthält den Einstiegspunkt und die Logik für den gRPC-Client.
Der Greeter-Client wird folgendermaßen erstellt:
- Instanziieren eines
GrpcChannel
-Objekts, das Informationen zum Herstellen einer Verbindung mit dem gRPC-Dienst enthält - Verwenden von
GrpcChannel
zum Erstellen des Greeter-Clients:
// 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();
Der Greeter-Client ruft die asynchrone Methode SayHello
auf. Das Ergebnis des Aufrufs von SayHello
wird angezeigt:
// 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();
Testen des gRPC-Clients mit dem gRPC-Greeter-Dienst
Aktualisieren Sie die Datei appsettings.Development.json
, indem Sie die folgenden hervorgehobenen Zeilen hinzufügen:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
,"Microsoft.AspNetCore.Hosting": "Information",
"Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information"
}
}
}
- Drücken Sie im Greeterdienst
Ctrl+F5
, um den Server ohne Debugger zu starten. - Drücken Sie im
GrpcGreeterClient
-ProjektCtrl+F5
, um den Client ohne den Debugger zu starten.
Der Client sendet eine Begrüßung an den Dienst mit einer Nachricht, die den Namen GreeterClient enthält. Der Dienst gibt als Antwort die Meldung „Hello GreeterClient“ aus. Die Antwort „Hello GreeterClient“ wird in der Eingabeaufforderung angezeigt:
Greeting: Hello GreeterClient
Press any key to exit...
Der gRPC-Dienst zeichnet die Details des erfolgreichen Aufrufs in den Protokollen auf, die an die Eingabeaufforderung ausgegeben werden:
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
Hinweis
Der Code in diesem Artikel erfordert das ASP.NET Core-HTTPS-Entwicklungszertifikat, um den gRPC-Dienst zu sichern. Wenn auf dem .NET gRPC-Client ein Fehler mit der Meldung The remote certificate is invalid according to the validation procedure.
oder The SSL connection could not be established.
auftritt, wird das Entwicklungszertifikat als nicht vertrauenswürdig eingestuft. Um dieses Problem zu beheben, lesen Sie Aufrufen eines gRPC-Dienstes mit einem nicht vertrauenswürdigen/ungültigen Zertifikat.
Nächste Schritte
In diesem Lernprogramm wird gezeigt, wie Sie einen .NET Core gRPC-Client und einen ASP.NET Core gRPC Server erstellen. Das Ziel ist ein gRPC-Client, der mit dem gRPC-Greeter-Dienst kommuniziert.
In diesem Tutorial:
- Erstellen Sie einen gRPC-Server.
- Erstellen Sie einen gRPC-Client.
- Testen Sie den gRPC-Client mit dem gRPC-Greeter-Dienst.
Voraussetzungen
- Visual Studio 2022 mit ASP.NET - und Webentwicklungsworkload .
- .NET 6 SDK
Erstellen eines gRPC-Diensts
- Starten Sie Visual Studio 2022, und wählen Sie "Neues Projekt erstellen" aus.
- Suchen Sie im Dialogfeld " Neues Projekt erstellen" nach
gRPC
. Wählen Sie ASP.NET Core gRPC Service aus, und wählen Sie "Weiter" aus. - Geben Sie im Dialogfeld "
GrpcGreeter
" den Namen des Projekts ein. Es ist wichtig, das Projekt GrpcGreeter zu benennen, damit die Namespaces übereinstimmen, wenn Sie Code kopieren und einfügen. - Wählen Sie "Weiter" aus.
- Wählen Sie im Dialogfeld "Zusätzliche Informationen " .NET 6.0 (Langfristiger Support) und dann "Erstellen" aus.
Ausführen des Diensts
Drücken Sie STRG+F5, um die Ausführung ohne den Debugger zu starten.
Visual Studio zeigt das folgende Dialogfeld an, wenn ein Projekt noch nicht für die Verwendung von SSL konfiguriert ist:
Wählen Sie "Ja " aus, wenn Sie dem IIS Express-SSL-Zertifikat vertrauen.
Das folgende Dialogfeld wird angezeigt:
Wählen Sie "Ja " aus, wenn Sie dem Entwicklungszertifikat vertrauen möchten.
Informationen zum Vertrauen in den Firefox-Browser finden Sie unter Firefox SEC_ERROR_INADEQUATE_KEY_USAGE Zertifikatfehler.
Visual Studio:
- Startet den Kestrel-Server.
- Startet einen Browser.
- Navigiert zu
http://localhost:port
, z. B.http://localhost:7042
.- Port: Eine zufällig zugewiesene Portnummer für die App.
-
localhost
: Der Standardhostname für den lokalen Computer. „Localhost“ dient nur Webanforderungen vom lokalen Computer.
Die Protokolle zeigen den Dienst an, der an https://localhost:<port>
lauscht, wobei <port>
die Portnummer von localhost ist, die bei der Erstellung des Projekts zufällig zugewiesen und in Properties/launchSettings.json
festgelegt wurde.
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
Hinweis
Die gRPC-Vorlage ist für die Verwendung von Transport Layer Security (TLS) konfiguriert. gRPC-Clients müssen zum Aufrufen des Servers HTTPS verwenden. Die gRPC-Dienst-Localhost-Portnummer wird zufällig zugewiesen, wenn das Projekt erstellt und im Eigenschaften-\launchSettings.jsfür die Datei des gRPC-Dienstprojekts festgelegt wird.
macOS unterstützt ASP.NET Core gRPC mit TLS nicht. Zum erfolgreichen Ausführen von gRPC-Diensten unter macOS ist eine zusätzliche Konfiguration erforderlich. Weitere Informationen finden Sie unter ASP.NET Core gRPC-App kann unter macOS nicht gestartet werden.
Überprüfen der Projektdateien
GrpcGreeter-Projektdateien :
-
Protos/greet.proto
: definiert denGreeter
-gRPC und generiert die gRPC-Serverobjekte. Weitere Informationen finden Sie in der Einführung in gRPC. - Ordner
Services
: enthält die Implementierung des DienstsGreeter
. -
appSettings.json
: enthält Konfigurationsdaten, z. B. das von Kestrel verwendete Protokoll. Weitere Informationen finden Sie unter Configuration in ASP.NET Core. -
Program.cs
mit folgendem Inhalt:- Der Einstiegspunkt für den gRPC-Dienst. Weitere Informationen finden Sie unter .NET Generic Host in ASP.NET Core.
- Der Code, mit dem das App-Verhalten konfiguriert wird. Weitere Informationen finden Sie im App-Start.
Erstellen des gRPC-Clients in einer .NET-Konsolen-App
- Öffnen Sie eine zweite Instanz von Visual Studio, und wählen Sie "Neues Projekt erstellen" aus.
- Wählen Sie im Dialogfeld " Neues Projekt erstellen " die Option "Konsolenanwendung" und dann "Weiter" aus.
- Geben Sie im Textfeld "Projektname " "GrpcGreeterClient " ein, und wählen Sie "Weiter" aus.
- Wählen Sie im Dialogfeld "Zusätzliche Informationen " .NET 6.0 (Langfristiger Support) und dann "Erstellen" aus.
Hinzufügen der erforderlichen NuGet-Pakete
Das gRPC-Clientprojekt erfordert die folgenden NuGet-Pakete:
- Grpc.Net.Client, das den .NET Core-Client enthält.
- Google.Protobuf, das protobuf-Nachrichten-APIs für C# enthält.
-
Grpc.Tools, die C#-Toolunterstützung für Protobuf-Dateien enthalten. Das Toolpaket ist nicht zur Laufzeit erforderlich, darum ist die Abhängigkeit mit
PrivateAssets="All"
markiert.
Installieren Sie die Pakete über die Paket-Manager-Konsole oder über „NuGet-Pakete verwalten“.
PMC-Option zum Installieren von Paketen
Wählen Sie in Visual Studio Tools>NuGet-Paket-Manager>Paket-Manager-Konsole aus.
Führen Sie im Paket-Manager-Konsolenfenster den Befehl
cd GrpcGreeterClient
aus, um zum Ordner mit denGrpcGreeterClient.csproj
Dateien zu wechseln.Führen Sie die folgenden Befehle aus:
Install-Package Grpc.Net.Client Install-Package Google.Protobuf Install-Package Grpc.Tools
Option „NuGet-Pakete verwalten“ zum Installieren von Paketen
- Klicken Sie mit der rechten Maustaste auf das Projekt im Projektmappen-Explorer>"NuGet-Pakete verwalten".
- Wählen Sie die Registerkarte " Durchsuchen" aus .
- Geben Sie Grpc.Net.Client in das Suchfeld ein.
- Wählen Sie das Grpc.Net.Client-Paket auf der Registerkarte " Durchsuchen " und dann "Installieren" aus.
- Führen Sie diese Aktionen auch für
Google.Protobuf
undGrpc.Tools
durch.
Fügen Sie „greet.proto“ hinzu:
Erstellen Sie einen Protos-Ordner im gRPC-Clientprojekt.
Kopieren Sie die Datei "Protos\greet.proto " aus dem gRPC-Begrüßungsdienst in den Ordner "Protos " im gRPC-Clientprojekt.
Ändern Sie den Namespace in der Datei
greet.proto
in den Namespace des Projekts:option csharp_namespace = "GrpcGreeterClient";
Bearbeiten Sie die Projektdatei
GrpcGreeterClient.csproj
:
Klicken Sie mit der rechten Maustaste auf das Projekt, und wählen Sie "Projektdatei bearbeiten" aus.
Fügen Sie eine Elementgruppe mit einem
<Protobuf>
Element hinzu, das auf die Datei "greet.proto " verweist:<ItemGroup> <Protobuf Include="Protos\greet.proto" GrpcServices="Client" /> </ItemGroup>
Erstellen des Greeter-Clients
- Erstellen Sie das Clientprojekt, um die Typen im
GrpcGreeterClient
-Namespace zu erstellen.
Hinweis
Die GrpcGreeterClient
-Typen werden vom Buildprozess automatisch erstellt. Das Toolpaket Grpc.Tools generiert die folgenden Dateien basierend auf der Datei "greet.proto ":
-
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs
: Der Protokollpuffercode, der die Anforderungs- und Antwortnachrichtentypen auffüllt, serialisiert und abruft. -
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs
: Enthält die erzeugten Clientklassen
Weitere Informationen zu den von Grpc.Tools automatisch generierten C#-Ressourcen finden Sie unter gRPC-Dienste mit C#: Generierte C#-Ressourcen.
Aktualisieren Sie die Datei
Program.cs
des gRPC-Clients mit dem folgenden Code.using System.Threading.Tasks; using Grpc.Net.Client; using GrpcGreeterClient; // The port number must match the port of the gRPC server. using var channel = GrpcChannel.ForAddress("https://localhost:7042"); var client = new Greeter.GreeterClient(channel); var reply = await client.SayHelloAsync( new HelloRequest { Name = "GreeterClient" }); Console.WriteLine("Greeting: " + reply.Message); Console.WriteLine("Press any key to exit..."); Console.ReadKey();
Ersetzen Sie im oben hervorgehobenen Code die Portnummer
7042
von localhost durch die inHTTPS
angegebene PortnummerProperties/launchSettings.json
innerhalb des DienstprojektsGrpcGreeter
.
Program.cs
enthält den Einstiegspunkt und die Logik für den gRPC-Client.
Der Greeter-Client wird folgendermaßen erstellt:
- Instanziieren eines
GrpcChannel
-Objekts, das Informationen zum Herstellen einer Verbindung mit dem gRPC-Dienst enthält - Verwenden von
GrpcChannel
zum Erstellen des Greeter-Clients:
// 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();
Der Greeter-Client ruft die asynchrone Methode SayHello
auf. Das Ergebnis des Aufrufs von SayHello
wird angezeigt:
// 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();
Testen des gRPC-Clients mit dem gRPC-Greeter-Dienst
- Drücken Sie im Greeterdienst
Ctrl+F5
, um den Server ohne Debugger zu starten. - Drücken Sie im
GrpcGreeterClient
-ProjektCtrl+F5
, um den Client ohne den Debugger zu starten.
Der Client sendet eine Begrüßung an den Dienst mit einer Nachricht, die den Namen GreeterClient enthält. Der Dienst gibt als Antwort die Meldung „Hello GreeterClient“ aus. Die Antwort „Hello GreeterClient“ wird in der Eingabeaufforderung angezeigt:
Greeting: Hello GreeterClient
Press any key to exit...
Der gRPC-Dienst zeichnet die Details des erfolgreichen Aufrufs in den Protokollen auf, die an die Eingabeaufforderung ausgegeben werden:
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
Aktualisieren Sie die Datei appsettings.Development.json
, indem Sie die folgenden Zeilen hinzufügen:
"Microsoft.AspNetCore.Hosting": "Information",
"Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information"
Hinweis
Der Code in diesem Artikel erfordert das ASP.NET Core-HTTPS-Entwicklungszertifikat, um den gRPC-Dienst zu sichern. Wenn auf dem .NET gRPC-Client ein Fehler mit der Meldung The remote certificate is invalid according to the validation procedure.
oder The SSL connection could not be established.
auftritt, wird das Entwicklungszertifikat als nicht vertrauenswürdig eingestuft. Um dieses Problem zu beheben, lesen Sie Aufrufen eines gRPC-Dienstes mit einem nicht vertrauenswürdigen/ungültigen Zertifikat.
Nächste Schritte
In diesem Lernprogramm wird gezeigt, wie Sie einen .NET Core gRPC-Client und einen ASP.NET Core gRPC Server erstellen.
Das Ziel ist ein gRPC-Client, der mit dem gRPC-Greeter-Dienst kommuniziert.
Beispielcode anzeigen oder herunterladen (herunterladen).
In diesem Tutorial:
- Erstellen Sie einen gRPC-Server.
- Erstellen Sie einen gRPC-Client.
- Testen Sie den gRPC-Client mit dem gRPC-Greeter-Dienst.
Voraussetzungen
- Visual Studio 2019 16.8 oder höher mit der Arbeitsauslastung für ASP.NET und Webentwicklung
- .NET 5 SDK
Erstellen eines gRPC-Diensts
- Starten Sie Visual Studio, und wählen Sie " Neues Projekt erstellen" aus.
- Wählen Sie im Dialogfeld "Neues Projekt erstellen " die Option "gRPC-Dienst " und dann "Weiter" aus.
- Geben Sie im Dialogfeld "
GrpcGreeter
" den Namen des Projekts ein. Es ist wichtig, das Projekt GrpcGreeter zu benennen, damit die Namespaces übereinstimmen, wenn Sie Code kopieren und einfügen. - Wählen Sie "Weiter" aus.
- Wählen Sie im Dialogfeld "Zusätzliche Informationen" im Dropdownmenü "Target Framework" .NET 5.0 aus.
- Wählen Sie "Erstellen" aus.
Ausführen des Diensts
Drücken Sie STRG+F5, um die Ausführung ohne den Debugger zu starten.
Visual Studio zeigt das folgende Dialogfeld an, wenn ein Projekt noch nicht für die Verwendung von SSL konfiguriert ist:
Wählen Sie "Ja " aus, wenn Sie dem IIS Express-SSL-Zertifikat vertrauen.
Das folgende Dialogfeld wird angezeigt:
Wählen Sie "Ja " aus, wenn Sie dem Entwicklungszertifikat vertrauen möchten.
Informationen zum Vertrauen in den Firefox-Browser finden Sie unter Firefox SEC_ERROR_INADEQUATE_KEY_USAGE Zertifikatfehler.
Visual Studio startet IIS Express und führt die App aus. Die Adressleiste zeigt
localhost:port#
an, nichtexample.com
. Das liegt daran, dass es sich beilocalhost
um den Standardhostnamen für den lokalen Computer handelt. „Localhost“ dient nur Webanforderungen vom lokalen Computer. Wenn in Visual Studio ein Webprojekt erstellt wird, wird für den Webserver ein zufälliger Port verwendet.
In den Protokollen wird vermerkt, dass der Dienst auf https://localhost:5001
lauscht.
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
Hinweis
Die gRPC-Vorlage ist für die Verwendung von Transport Layer Security (TLS) konfiguriert. gRPC-Clients müssen zum Aufrufen des Servers HTTPS verwenden.
macOS unterstützt ASP.NET Core gRPC mit TLS nicht. Zum erfolgreichen Ausführen von gRPC-Diensten unter macOS ist eine zusätzliche Konfiguration erforderlich. Weitere Informationen finden Sie unter ASP.NET Core gRPC-App kann unter macOS nicht gestartet werden.
Überprüfen der Projektdateien
GrpcGreeter-Projektdateien :
-
greet.proto: Die Datei Protos/greet.proto definiert das
Greeter
gRPC und wird verwendet, um die gRPC-Serverressourcen zu generieren. Weitere Informationen finden Sie in der Einführung in gRPC. -
Dienstordner : Enthält die Implementierung des
Greeter
Diensts. -
appsettings.json
: Enthält Konfigurationsdaten, etwa das von Kestrel verwendete Protokoll. Weitere Informationen finden Sie unter Configuration in ASP.NET Core. -
Program.cs
: enthält den Einstiegspunkt für den gRPC-Dienst. Weitere Informationen finden Sie unter .NET Generic Host in ASP.NET Core. -
Startup.cs
: Enthält Code, mit dem das App-Verhalten konfiguriert wird. Weitere Informationen finden Sie im App-Start.
Erstellen des gRPC-Clients in einer .NET-Konsolen-App
- Öffnen Sie eine zweite Instanz von Visual Studio, und wählen Sie "Neues Projekt erstellen" aus.
- Wählen Sie im Dialogfeld "Neues Projekt erstellen " die Option "Konsolen-App (.NET Core)" und dann "Weiter" aus.
- Geben Sie im Textfeld "Projektname " "GrpcGreeterClient " ein, und wählen Sie "Erstellen" aus.
Hinzufügen von erforderlichen Paketen
Das gRPC-Clientprojekt erfordert die folgenden Pakete:
- Grpc.Net.Client, das den .NET Core-Client enthält.
- Google.Protobuf, das protobuf-Nachrichten-APIs für C# enthält.
-
Grpc.Tools, die C#-Toolunterstützung für Protobuf-Dateien enthält. Das Toolpaket ist nicht zur Laufzeit erforderlich, darum ist die Abhängigkeit mit
PrivateAssets="All"
markiert.
Installieren Sie die Pakete über die Paket-Manager-Konsole oder über „NuGet-Pakete verwalten“.
PMC-Option zum Installieren von Paketen
Wählen Sie in Visual Studio Tools>NuGet-Paket-Manager>Paket-Manager-Konsole aus.
Führen Sie im Paket-Manager-Konsolenfenster den Befehl
cd GrpcGreeterClient
aus, um zum Ordner mit denGrpcGreeterClient.csproj
Dateien zu wechseln.Führen Sie die folgenden Befehle aus:
Install-Package Grpc.Net.Client Install-Package Google.Protobuf Install-Package Grpc.Tools
Option „NuGet-Pakete verwalten“ zum Installieren von Paketen
- Klicken Sie mit der rechten Maustaste auf das Projekt im Projektmappen-Explorer>"NuGet-Pakete verwalten".
- Wählen Sie die Registerkarte " Durchsuchen" aus .
- Geben Sie Grpc.Net.Client in das Suchfeld ein.
- Wählen Sie das Grpc.Net.Client-Paket auf der Registerkarte " Durchsuchen " und dann "Installieren" aus.
- Führen Sie diese Aktionen auch für
Google.Protobuf
undGrpc.Tools
durch.
Fügen Sie „greet.proto“ hinzu:
Erstellen Sie einen Protos-Ordner im gRPC-Clientprojekt.
Kopieren Sie die Datei "Protos\greet.proto " aus dem gRPC-Begrüßungsdienst in den Ordner "Protos " im gRPC-Clientprojekt.
Ändern Sie den Namespace in der Datei
greet.proto
in den Namespace des Projekts:option csharp_namespace = "GrpcGreeterClient";
Bearbeiten Sie die Projektdatei
GrpcGreeterClient.csproj
:Klicken Sie mit der rechten Maustaste auf das Projekt, und wählen Sie "Projektdatei bearbeiten" aus.
Fügen Sie eine Elementgruppe mit einem
<Protobuf>
Element hinzu, das auf die Datei "greet.proto " verweist:<ItemGroup> <Protobuf Include="Protos\greet.proto" GrpcServices="Client" /> </ItemGroup>
Erstellen des Greeter-Clients
- Erstellen Sie das Clientprojekt, um die Typen im
GrpcGreeterClient
-Namespace zu erstellen.
Hinweis
Die GrpcGreeterClient
-Typen werden vom Buildprozess automatisch erstellt. Das Toolpaket Grpc.Tools generiert die folgenden Dateien basierend auf der Datei "greet.proto ":
-
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs
: Der Protokollpuffercode, der die Anforderungs- und Antwortnachrichtentypen auffüllt, serialisiert und abruft. -
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs
: Enthält die erzeugten Clientklassen
Weitere Informationen zu den von Grpc.Tools automatisch generierten C#-Ressourcen finden Sie unter gRPC-Dienste mit C#: Generierte C#-Ressourcen.
Aktualisieren Sie die Datei
Program.cs
des gRPC-Clients mit dem folgenden Code:using System; using System.Net.Http; using System.Threading.Tasks; using Grpc.Net.Client; namespace GrpcGreeterClient { class Program { static async Task Main(string[] args) { // The port number(5001) must match the port of the gRPC server. using var channel = GrpcChannel.ForAddress("https://localhost:5001"); var client = new Greeter.GreeterClient(channel); var reply = await client.SayHelloAsync( new HelloRequest { Name = "GreeterClient" }); Console.WriteLine("Greeting: " + reply.Message); Console.WriteLine("Press any key to exit..."); Console.ReadKey(); } } }
Program.cs
enthält den Einstiegspunkt und die Logik für den gRPC-Client.
Der Greeter-Client wird folgendermaßen erstellt:
- Instanziieren eines
GrpcChannel
-Objekts, das Informationen zum Herstellen einer Verbindung mit dem gRPC-Dienst enthält - Verwenden von
GrpcChannel
zum Erstellen des Greeter-Clients:
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();
}
Der Greeter-Client ruft die asynchrone Methode SayHello
auf. Das Ergebnis des Aufrufs von SayHello
wird angezeigt:
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();
}
Testen des gRPC-Clients mit dem gRPC-Greeter-Dienst
- Drücken Sie im Greeterdienst
Ctrl+F5
, um den Server ohne Debugger zu starten. - Drücken Sie im
GrpcGreeterClient
-ProjektCtrl+F5
, um den Client ohne den Debugger zu starten.
Der Client sendet eine Begrüßung an den Dienst mit einer Nachricht, die den Namen GreeterClient enthält. Der Dienst gibt als Antwort die Meldung „Hello GreeterClient“ aus. Die Antwort „Hello GreeterClient“ wird in der Eingabeaufforderung angezeigt:
Greeting: Hello GreeterClient
Press any key to exit...
Der gRPC-Dienst zeichnet die Details des erfolgreichen Aufrufs in den Protokollen auf, die an die Eingabeaufforderung ausgegeben werden:
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
Hinweis
Der Code in diesem Artikel erfordert das ASP.NET Core-HTTPS-Entwicklungszertifikat, um den gRPC-Dienst zu sichern. Wenn auf dem .NET gRPC-Client ein Fehler mit der Meldung The remote certificate is invalid according to the validation procedure.
oder The SSL connection could not be established.
auftritt, wird das Entwicklungszertifikat als nicht vertrauenswürdig eingestuft. Um dieses Problem zu beheben, lesen Sie Aufrufen eines gRPC-Dienstes mit einem nicht vertrauenswürdigen/ungültigen Zertifikat.
Nächste Schritte
In diesem Lernprogramm wird gezeigt, wie Sie einen .NET Core gRPC-Client und einen ASP.NET Core gRPC Server erstellen.
Das Ziel ist ein gRPC-Client, der mit dem gRPC-Greeter-Dienst kommuniziert.
Beispielcode anzeigen oder herunterladen (herunterladen).
In diesem Tutorial:
- Erstellen Sie einen gRPC-Server.
- Erstellen Sie einen gRPC-Client.
- Testen Sie den gRPC-Client mit dem gRPC-Greeter-Dienst.
Voraussetzungen
- Visual Studio 2019 16.4 oder höher mit der Arbeitsauslastung für ASP.NET und Webentwicklung
- .NET Core 3.1 SDK
Erstellen eines gRPC-Diensts
Starten Sie Visual Studio, und wählen Sie " Neues Projekt erstellen" aus. Wählen Sie alternativ im Menü "Datei" von Visual Studio die Option "Neues Projekt"> aus.
Wählen Sie im Dialogfeld " Neues Projekt erstellen " die Option "gRPC-Dienst " und dann "Weiter" aus:
Nennen Sie das Projekt GrpcGreeter. Es ist wichtig, das Projekt GrpcGreeter zu benennen, damit die Namespaces übereinstimmen, wenn Sie Code kopieren und einfügen.
Wählen Sie "Erstellen" aus.
Im Dialogfeld Neuen gRPC-Dienst erstellen:
- Die gRPC-Dienstvorlage ist ausgewählt.
- Wählen Sie "Erstellen" aus.
Ausführen des Diensts
Drücken Sie STRG+F5, um die Ausführung ohne den Debugger zu starten.
Visual Studio zeigt das folgende Dialogfeld an, wenn ein Projekt noch nicht für die Verwendung von SSL konfiguriert ist:
Wählen Sie "Ja " aus, wenn Sie dem IIS Express-SSL-Zertifikat vertrauen.
Das folgende Dialogfeld wird angezeigt:
Wählen Sie "Ja " aus, wenn Sie dem Entwicklungszertifikat vertrauen möchten.
Informationen zum Vertrauen in den Firefox-Browser finden Sie unter Firefox SEC_ERROR_INADEQUATE_KEY_USAGE Zertifikatfehler.
Visual Studio startet IIS Express und führt die App aus. Die Adressleiste zeigt
localhost:port#
an, nichtexample.com
. Das liegt daran, dass es sich beilocalhost
um den Standardhostnamen für den lokalen Computer handelt. „Localhost“ dient nur Webanforderungen vom lokalen Computer. Wenn in Visual Studio ein Webprojekt erstellt wird, wird für den Webserver ein zufälliger Port verwendet.
In den Protokollen wird vermerkt, dass der Dienst auf https://localhost:5001
lauscht.
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
Hinweis
Die gRPC-Vorlage ist für die Verwendung von Transport Layer Security (TLS) konfiguriert. gRPC-Clients müssen zum Aufrufen des Servers HTTPS verwenden.
macOS unterstützt ASP.NET Core gRPC mit TLS nicht. Zum erfolgreichen Ausführen von gRPC-Diensten unter macOS ist eine zusätzliche Konfiguration erforderlich. Weitere Informationen finden Sie unter ASP.NET Core gRPC-App kann unter macOS nicht gestartet werden.
Überprüfen der Projektdateien
GrpcGreeter-Projektdateien :
-
greet.proto: Die Datei Protos/greet.proto definiert das
Greeter
gRPC und wird verwendet, um die gRPC-Serverressourcen zu generieren. Weitere Informationen finden Sie in der Einführung in gRPC. -
Dienstordner : Enthält die Implementierung des
Greeter
Diensts. -
appsettings.json
: Enthält Konfigurationsdaten, etwa das von Kestrel verwendete Protokoll. Weitere Informationen finden Sie unter Configuration in ASP.NET Core. -
Program.cs
: enthält den Einstiegspunkt für den gRPC-Dienst. Weitere Informationen finden Sie unter .NET Generic Host in ASP.NET Core. -
Startup.cs
: Enthält Code, mit dem das App-Verhalten konfiguriert wird. Weitere Informationen finden Sie im App-Start.
Erstellen des gRPC-Clients in einer .NET-Konsolen-App
- Öffnen Sie eine zweite Instanz von Visual Studio, und wählen Sie "Neues Projekt erstellen" aus.
- Wählen Sie im Dialogfeld "Neues Projekt erstellen " die Option "Konsolen-App (.NET Core)" und dann "Weiter" aus.
- Geben Sie im Textfeld "Projektname " "GrpcGreeterClient " ein, und wählen Sie "Erstellen" aus.
Hinzufügen von erforderlichen Paketen
Das gRPC-Clientprojekt erfordert die folgenden Pakete:
- Grpc.Net.Client, das den .NET Core-Client enthält.
- Google.Protobuf, das protobuf-Nachrichten-APIs für C# enthält.
-
Grpc.Tools, die C#-Toolunterstützung für Protobuf-Dateien enthält. Das Toolpaket ist nicht zur Laufzeit erforderlich, darum ist die Abhängigkeit mit
PrivateAssets="All"
markiert.
Installieren Sie die Pakete über die Paket-Manager-Konsole oder über „NuGet-Pakete verwalten“.
PMC-Option zum Installieren von Paketen
Wählen Sie in Visual Studio Tools>NuGet-Paket-Manager>Paket-Manager-Konsole aus.
Führen Sie im Paket-Manager-Konsolenfenster den Befehl
cd GrpcGreeterClient
aus, um zum Ordner mit denGrpcGreeterClient.csproj
Dateien zu wechseln.Führen Sie die folgenden Befehle aus:
Install-Package Grpc.Net.Client Install-Package Google.Protobuf Install-Package Grpc.Tools
Option „NuGet-Pakete verwalten“ zum Installieren von Paketen
- Klicken Sie mit der rechten Maustaste auf das Projekt im Projektmappen-Explorer>"NuGet-Pakete verwalten".
- Wählen Sie die Registerkarte " Durchsuchen" aus .
- Geben Sie Grpc.Net.Client in das Suchfeld ein.
- Wählen Sie das Grpc.Net.Client-Paket auf der Registerkarte " Durchsuchen " und dann "Installieren" aus.
- Führen Sie diese Aktionen auch für
Google.Protobuf
undGrpc.Tools
durch.
Fügen Sie „greet.proto“ hinzu:
Erstellen Sie einen Protos-Ordner im gRPC-Clientprojekt.
Kopieren Sie die Datei "Protos\greet.proto " aus dem gRPC-Begrüßungsdienst in den Ordner "Protos " im gRPC-Clientprojekt.
Ändern Sie den Namespace in der Datei
greet.proto
in den Namespace des Projekts:option csharp_namespace = "GrpcGreeterClient";
Bearbeiten Sie die Projektdatei
GrpcGreeterClient.csproj
:Klicken Sie mit der rechten Maustaste auf das Projekt, und wählen Sie "Projektdatei bearbeiten" aus.
Fügen Sie eine Elementgruppe mit einem
<Protobuf>
Element hinzu, das auf die Datei "greet.proto " verweist:<ItemGroup> <Protobuf Include="Protos\greet.proto" GrpcServices="Client" /> </ItemGroup>
Erstellen des Greeter-Clients
- Erstellen Sie das Clientprojekt, um die Typen im
GrpcGreeterClient
-Namespace zu erstellen.
Hinweis
Die GrpcGreeterClient
-Typen werden vom Buildprozess automatisch erstellt. Das Toolpaket Grpc.Tools generiert die folgenden Dateien basierend auf der Datei "greet.proto ":
-
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs
: Der Protokollpuffercode, der die Anforderungs- und Antwortnachrichtentypen auffüllt, serialisiert und abruft. -
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs
: Enthält die erzeugten Clientklassen
Weitere Informationen zu den von Grpc.Tools automatisch generierten C#-Ressourcen finden Sie unter gRPC-Dienste mit C#: Generierte C#-Ressourcen.
Aktualisieren Sie die Datei Program.cs
des gRPC-Clients mit dem folgenden Code:
using System;
using System.Net.Http;
using System.Threading.Tasks;
using Grpc.Net.Client;
namespace GrpcGreeterClient
{
class Program
{
static async Task Main(string[] args)
{
// The port number(5001) must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:5001");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
}
}
Program.cs
enthält den Einstiegspunkt und die Logik für den gRPC-Client.
Der Greeter-Client wird folgendermaßen erstellt:
- Instanziieren eines
GrpcChannel
-Objekts, das Informationen zum Herstellen einer Verbindung mit dem gRPC-Dienst enthält - Verwenden von
GrpcChannel
zum Erstellen des Greeter-Clients:
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();
}
Der Greeter-Client ruft die asynchrone Methode SayHello
auf. Das Ergebnis des Aufrufs von SayHello
wird angezeigt:
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();
}
Testen des gRPC-Clients mit dem gRPC-Greeter-Dienst
- Drücken Sie im Greeterdienst
Ctrl+F5
, um den Server ohne Debugger zu starten. - Drücken Sie im
GrpcGreeterClient
-ProjektCtrl+F5
, um den Client ohne den Debugger zu starten.
Der Client sendet eine Begrüßung an den Dienst mit einer Nachricht, die den Namen GreeterClient enthält. Der Dienst gibt als Antwort die Meldung „Hello GreeterClient“ aus. Die Antwort „Hello GreeterClient“ wird in der Eingabeaufforderung angezeigt:
Greeting: Hello GreeterClient
Press any key to exit...
Der gRPC-Dienst zeichnet die Details des erfolgreichen Aufrufs in den Protokollen auf, die an die Eingabeaufforderung ausgegeben werden:
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
Hinweis
Der Code in diesem Artikel erfordert das ASP.NET Core-HTTPS-Entwicklungszertifikat, um den gRPC-Dienst zu sichern. Wenn auf dem .NET gRPC-Client ein Fehler mit der Meldung The remote certificate is invalid according to the validation procedure.
oder The SSL connection could not be established.
auftritt, wird das Entwicklungszertifikat als nicht vertrauenswürdig eingestuft. Um dieses Problem zu beheben, lesen Sie Aufrufen eines gRPC-Dienstes mit einem nicht vertrauenswürdigen/ungültigen Zertifikat.