Kurz: Vytvoření klienta a serveru gRPC v ASP.NET Core
Tento kurz ukazuje, jak vytvořit klienta .NET Core gRPC a ASP.NET Core gRPC Server. Na konci budete mít klienta gRPC, který komunikuje se službou gRPC Greeter.
V tomto kurzu jste:
- Vytvořte server gRPC.
- Vytvořte klienta gRPC.
- Otestujte klienta gRPC pomocí služby gRPC Greeter.
Požadavky
Visual Studio 2022 Preview se sadou funkcí vývoj ASP.NET a web .
Vytvoření služby gRPC
- Spusťte Visual Studio 2022 a vyberte Nový projekt.
- V dialogovém okně Vytvořit nový projekt vyhledejte
gRPC
. Vyberte ASP.NET Core gRPC Service a vyberte Další. - V dialogovém okně Konfigurovat nový projekt zadejte
GrpcGreeter
do pole Název projektu. Je důležité pojmenovat projekt GrpcGreeter , aby se obory názvů při kopírování a vkládání kódu shodovaly. - Vyberte Další.
- V dialogovém okně Další informace vyberte .NET 8.0 (Preview) a pak vyberte Vytvořit.
Spuštění služby
Stisknutím kombinace kláves Ctrl+F5 spusťte příkaz bez ladicího programu.
Visual Studio zobrazí následující dialogové okno, pokud projekt ještě není nakonfigurovaný pro použití SSL:
Pokud IIS Express certifikátu SSL důvěřujete, vyberte Ano.
Zobrazí se následující dialogové okno:
Pokud souhlasíte s tím, že se má důvěřovat vývojovému certifikátu, vyberte Ano.
Informace o důvěřování prohlížeči Firefox najdete v článku Chyba certifikátu firefoxu SEC_ERROR_INADEQUATE_KEY_USAGE.
Visual Studio:
- Spustí Kestrel server.
- Spustí prohlížeč.
- Přejde na
http://localhost:port
, napříkladhttp://localhost:7042
.- port: Náhodně přiřazené číslo portu pro aplikaci.
localhost
: Standardní název hostitele místního počítače. Localhost obsluhuje pouze webové požadavky z místního počítače.
Protokoly zobrazují službu, která naslouchá na https://localhost:<port>
, kde <port>
je číslo portu localhost náhodně přiřazené při vytvoření a nastavení projektu v 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
Poznámka
Šablona gRPC je nakonfigurovaná tak, aby používala protokol TLS (Transport Layer Security). Klienti gRPC musí k volání serveru použít protokol HTTPS. Číslo portu localhost služby gRPC se náhodně přiřadí při vytvoření projektu a nastaví se v souboru Properties\launchSettings.json projektu služby gRPC.
Prozkoumání souborů projektu
Soubory projektu GrpcGreeter :
Protos/greet.proto
: definujeGreeter
gRPC a používá se ke generování prostředků serveru gRPC. Další informace najdete v tématu Úvod do gRPC.Services
folder: Obsahuje implementaciGreeter
služby.appSettings.json
: Obsahuje konfigurační data, jako je protokol používaný nástrojem Kestrel. Další informace najdete v tématu Konfigurace v ASP.NET Core.Program.cs
, který obsahuje:- Vstupní bod pro službu gRPC. Další informace najdete v tématu Obecný hostitel .NET v ASP.NET Core.
- Kód, který konfiguruje chování aplikace. Další informace najdete v tématu Spuštění aplikace.
Vytvoření klienta gRPC v konzolové aplikaci .NET
- Otevřete druhou instanci sady Visual Studio a vyberte Nový projekt.
- V dialogovém okně Vytvořit nový projekt vyberte Konzolová aplikace a vyberte Další.
- Do textového pole Název projektu zadejte GrpcGreeterClient a vyberte Další.
- V dialogovém okně Další informace vyberte .NET 8.0 (Preview) a pak vyberte Vytvořit.
Přidání požadovaných balíčků NuGet
Projekt klienta gRPC vyžaduje následující balíčky NuGet:
- Grpc.Net.Client, který obsahuje klienta .NET Core.
- Google.Protobuf, který obsahuje rozhraní API zpráv protobuf pro jazyk C#.
- Grpc.Tools, které obsahují podporu nástrojů jazyka C# pro soubory protobuf. Balíček nástrojů se za běhu nevyžaduje, takže závislost je označená .
PrivateAssets="All"
Nainstalujte balíčky pomocí konzoly Správce balíčků (PMC) nebo spravovat balíčky NuGet.
Možnost PMC pro instalaci balíčků
V sadě Visual Studio vyberte nástroje>Konzola Správce>balíčků NuGet.
V okně konzoly Správce balíčků spusťte
cd GrpcGreeterClient
příkaz a změňte adresáře na složku obsahujícíGrpcGreeterClient.csproj
soubory.Spusťte následující příkazy:
Install-Package Grpc.Net.Client Install-Package Google.Protobuf Install-Package Grpc.Tools
Možnost spravovat balíčky NuGet pro instalaci balíčků
- Klikněte pravým tlačítkem na projekt v Průzkumník řešení>Správa balíčků NuGet.
- Vyberte kartu Procházet.
- Do vyhledávacího pole zadejte Grpc.Net.Client .
- Na kartě Procházet vyberte balíček Grpc.Net.Client a vyberte Nainstalovat.
- Opakujte pro
Google.Protobuf
aGrpc.Tools
.
Přidat greet.proto
Vytvořte složku Protos v klientském projektu gRPC.
Zkopírujte soubor Protos\greet.proto ze služby gRPC Greeter do složky Protos v projektu klienta gRPC.
Aktualizujte obor názvů uvnitř
greet.proto
souboru na obor názvů projektu:option csharp_namespace = "GrpcGreeterClient";
GrpcGreeterClient.csproj
Upravte soubor projektu:
Klikněte pravým tlačítkem na projekt a vyberte Upravit soubor projektu.
Přidejte skupinu položek s elementem
<Protobuf>
, který odkazuje na soubor greet.proto :<ItemGroup> <Protobuf Include="Protos\greet.proto" GrpcServices="Client" /> </ItemGroup>
Vytvoření klienta Greeter
- Sestavte projekt klienta a vytvořte typy v
GrpcGreeterClient
oboru názvů.
Poznámka
Typy GrpcGreeterClient
se automaticky vygenerují procesem sestavení. Balíček nástrojů Grpc.Tools vygeneruje následující soubory založené na souboru greet.proto :
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs
: Kód vyrovnávací paměti protokolu, který naplní, serializuje a načte typy zpráv požadavků a odpovědí.GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs
: Obsahuje vygenerované klientské třídy.
Další informace o prostředcích jazyka C# automaticky vygenerovaných nástrojem Grpc.Tools najdete v tématu služby gRPC s jazykem C#: Vygenerované prostředky jazyka C#.
Aktualizujte soubor klienta
Program.cs
gRPC následujícím kódem.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();
V předchozím zvýrazněném kódu nahraďte číslo
7042
portu localhost číslem portu zadanýmHTTPS
vProperties/launchSettings.json
rámciGrpcGreeter
projektu služby.
Program.cs
obsahuje vstupní bod a logiku pro klienta gRPC.
Klient Greeter je vytvořen pomocí:
GrpcChannel
Vytvoření instance obsahující informace pro vytvoření připojení ke službě gRPC.- Použití nástroje
GrpcChannel
k vytvoření klienta 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();
Klient Greeter volá asynchronní SayHello
metodu. Zobrazí se SayHello
výsledek volání:
// 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();
Testování klienta gRPC pomocí služby gRPC Greeter
- Ve službě Greeter stisknutím spusťte
Ctrl+F5
server bez ladicího programu. - Stisknutím klávesy
GrpcGreeterClient
Ctrl+F5
v projektu spusťte klienta bez ladicího programu.
Klient odešle do služby pozdrav se zprávou obsahující její název GreeterClient. Služba odešle zprávu "Hello GreeterClient" jako odpověď. Na příkazovém řádku se zobrazí odpověď Hello GreeterClient:
Greeting: Hello GreeterClient
Press any key to exit...
Služba gRPC zaznamenává podrobnosti o úspěšném volání v protokolech zapsaných do příkazového řádku:
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
appsettings.Development.json
Aktualizujte soubor přidáním následujících řádků:
"Microsoft.AspNetCore.Hosting": "Information",
"Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information"
Poznámka
Kód v tomto článku vyžaduje k zabezpečení služby gRPC ASP.NET Core vývojový certifikát HTTPS. Pokud klient .NET gRPC selže se zprávou The remote certificate is invalid according to the validation procedure.
nebo The SSL connection could not be established.
, vývojový certifikát není důvěryhodný. Pokud chcete tento problém vyřešit, přečtěte si téma Volání služby gRPC s nedůvěryhodným nebo neplatným certifikátem.
Další kroky
- Zobrazte nebo si stáhněte dokončený ukázkový kód pro tento kurz (postup stažení).
- Přehled gRPC v .NET
- Služby gRPC s jazykem C#
- Migrace gRPC z C-Core na gRPC pro .NET
Tento kurz ukazuje, jak vytvořit klienta .NET Core gRPC a ASP.NET Core gRPC Server. Na konci budete mít klienta gRPC, který komunikuje se službou gRPC Greeter.
V tomto kurzu jste:
- Vytvořte server gRPC.
- Vytvořte klienta gRPC.
- Otestujte klienta gRPC pomocí služby gRPC Greeter.
Požadavky
Sada Visual Studio 2022 se sadou funkcí Vývoj pro ASP.NET a web
Vytvoření služby gRPC
- Spusťte Visual Studio 2022 a vyberte Vytvořit nový projekt.
- V dialogovém okně Vytvořit nový projekt vyhledejte
gRPC
. Vyberte ASP.NET Core gRPC Service a vyberte Další. - V dialogovém okně Konfigurovat nový projekt zadejte
GrpcGreeter
do pole Název projektu. Je důležité pojmenovat projekt GrpcGreeter , aby se obory názvů při kopírování a vkládání kódu shodovaly. - Vyberte Další.
- V dialogovém okně Další informace vyberte .NET 6.0 (dlouhodobá podpora) a pak vyberte Vytvořit.
Spuštění služby
Stisknutím kombinace kláves Ctrl+F5 spusťte příkaz bez ladicího programu.
Visual Studio zobrazí následující dialogové okno, pokud projekt ještě není nakonfigurovaný pro použití SSL:
Pokud IIS Express certifikátu SSL důvěřujete, vyberte Ano.
Zobrazí se následující dialogové okno:
Pokud souhlasíte s tím, že se má důvěřovat vývojovému certifikátu, vyberte Ano.
Informace o důvěřování prohlížeči Firefox najdete v článku Chyba certifikátu firefoxu SEC_ERROR_INADEQUATE_KEY_USAGE.
Visual Studio:
- Spustí Kestrel server.
- Spustí prohlížeč.
- Přejde na
http://localhost:port
, napříkladhttp://localhost:7042
.- port: Náhodně přiřazené číslo portu pro aplikaci.
localhost
: Standardní název hostitele místního počítače. Localhost obsluhuje pouze webové požadavky z místního počítače.
Protokoly zobrazují službu, která naslouchá na https://localhost:<port>
, kde <port>
je číslo portu localhost náhodně přiřazené při vytvoření a nastavení projektu v 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
Poznámka
Šablona gRPC je nakonfigurovaná tak, aby používala protokol TLS (Transport Layer Security). Klienti gRPC musí k volání serveru použít protokol HTTPS. Číslo portu localhost služby gRPC se náhodně přiřadí při vytvoření projektu a nastaví se v souboru Properties\launchSettings.json projektu služby gRPC.
macOS nepodporuje ASP.NET Core gRPC s protokolem TLS. K úspěšnému spuštění služeb gRPC v systému macOS se vyžaduje další konfigurace. Další informace najdete v tématu Nejde spustit aplikaci ASP.NET Core gRPC v systému macOS.
Prozkoumání souborů projektu
Soubory projektu GrpcGreeter :
Protos/greet.proto
: definujeGreeter
gRPC a používá se ke generování prostředků serveru gRPC. Další informace najdete v tématu Úvod do gRPC.Services
folder: Obsahuje implementaciGreeter
služby.appSettings.json
: Obsahuje konfigurační data, jako je protokol používaný nástrojem Kestrel. Další informace najdete v tématu Konfigurace v ASP.NET Core.Program.cs
, který obsahuje:- Vstupní bod pro službu gRPC. Další informace najdete v tématu Obecný hostitel .NET v ASP.NET Core.
- Kód, který konfiguruje chování aplikace. Další informace najdete v tématu Spuštění aplikace.
Vytvoření klienta gRPC v konzolové aplikaci .NET
- Otevřete druhou instanci sady Visual Studio a vyberte Vytvořit nový projekt.
- V dialogovém okně Vytvořit nový projekt vyberte Konzolová aplikace a vyberte Další.
- Do textového pole Název projektu zadejte GrpcGreeterClient a vyberte Další.
- V dialogovém okně Další informace vyberte .NET 6.0 (dlouhodobá podpora) a pak vyberte Vytvořit.
Přidání požadovaných balíčků NuGet
Projekt klienta gRPC vyžaduje následující balíčky NuGet:
- Grpc.Net.Client, který obsahuje klienta .NET Core.
- Google.Protobuf, který obsahuje rozhraní API zpráv protobuf pro jazyk C#.
- Grpc.Tools, které obsahují podporu nástrojů jazyka C# pro soubory protobuf. Balíček nástrojů se za běhu nevyžaduje, takže závislost je označená .
PrivateAssets="All"
Nainstalujte balíčky pomocí konzoly Správce balíčků (PMC) nebo spravovat balíčky NuGet.
Možnost PMC pro instalaci balíčků
V sadě Visual Studio vyberte nástroje>Konzola Správce>balíčků NuGet.
V okně konzoly Správce balíčků spusťte
cd GrpcGreeterClient
příkaz a změňte adresáře na složku obsahujícíGrpcGreeterClient.csproj
soubory.Spusťte následující příkazy:
Install-Package Grpc.Net.Client Install-Package Google.Protobuf Install-Package Grpc.Tools
Možnost spravovat balíčky NuGet pro instalaci balíčků
- Klikněte pravým tlačítkem na projekt v Průzkumník řešení>Správa balíčků NuGet.
- Vyberte kartu Procházet.
- Do vyhledávacího pole zadejte Grpc.Net.Client .
- Na kartě Procházet vyberte balíček Grpc.Net.Client a vyberte Nainstalovat.
- Opakujte pro
Google.Protobuf
aGrpc.Tools
.
Přidat greet.proto
Vytvořte složku Protos v klientském projektu gRPC.
Zkopírujte soubor Protos\greet.proto ze služby gRPC Greeter do složky Protos v projektu klienta gRPC.
Aktualizujte obor názvů uvnitř
greet.proto
souboru na obor názvů projektu:option csharp_namespace = "GrpcGreeterClient";
GrpcGreeterClient.csproj
Upravte soubor projektu:
Klikněte pravým tlačítkem na projekt a vyberte Upravit soubor projektu.
Přidejte skupinu položek s elementem
<Protobuf>
, který odkazuje na soubor greet.proto :<ItemGroup> <Protobuf Include="Protos\greet.proto" GrpcServices="Client" /> </ItemGroup>
Vytvoření klienta Greeter
- Sestavte projekt klienta a vytvořte typy v
GrpcGreeterClient
oboru názvů.
Poznámka
Typy GrpcGreeterClient
se automaticky vygenerují procesem sestavení. Balíček nástrojů Grpc.Tools vygeneruje následující soubory založené na souboru greet.proto :
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs
: Kód vyrovnávací paměti protokolu, který naplní, serializuje a načte typy zpráv požadavků a odpovědí.GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs
: Obsahuje vygenerované klientské třídy.
Další informace o prostředcích jazyka C# automaticky vygenerovaných nástrojem Grpc.Tools najdete v tématu služby gRPC s jazykem C#: Vygenerované prostředky jazyka C#.
Aktualizujte soubor klienta
Program.cs
gRPC následujícím kódem.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();
V předchozím zvýrazněném kódu nahraďte číslo
7042
portu localhost číslem portu zadanýmHTTPS
vProperties/launchSettings.json
rámciGrpcGreeter
projektu služby.
Program.cs
obsahuje vstupní bod a logiku pro klienta gRPC.
Klient Greeter je vytvořen pomocí:
GrpcChannel
Vytvoření instance obsahující informace pro vytvoření připojení ke službě gRPC.- Použití nástroje
GrpcChannel
k vytvoření klienta 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();
Klient Greeter volá asynchronní SayHello
metodu. Zobrazí se SayHello
výsledek volání:
// 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();
Testování klienta gRPC pomocí služby gRPC Greeter
- Ve službě Greeter stisknutím spusťte
Ctrl+F5
server bez ladicího programu. - Stisknutím klávesy
GrpcGreeterClient
Ctrl+F5
v projektu spusťte klienta bez ladicího programu.
Klient odešle do služby pozdrav se zprávou obsahující její název GreeterClient. Služba odešle zprávu "Hello GreeterClient" jako odpověď. Na příkazovém řádku se zobrazí odpověď Hello GreeterClient:
Greeting: Hello GreeterClient
Press any key to exit...
Služba gRPC zaznamenává podrobnosti o úspěšném volání v protokolech zapsaných do příkazového řádku:
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
appsettings.Development.json
Aktualizujte soubor přidáním následujících řádků:
"Microsoft.AspNetCore.Hosting": "Information",
"Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information"
Poznámka
Kód v tomto článku vyžaduje k zabezpečení služby gRPC ASP.NET Core vývojový certifikát HTTPS. Pokud klient .NET gRPC selže se zprávou The remote certificate is invalid according to the validation procedure.
nebo The SSL connection could not be established.
, vývojový certifikát není důvěryhodný. Pokud chcete tento problém vyřešit, přečtěte si téma Volání služby gRPC s nedůvěryhodným nebo neplatným certifikátem.
Další kroky
- Zobrazte nebo si stáhněte dokončený ukázkový kód pro tento kurz (postup stažení).
- Přehled gRPC v .NET
- Služby gRPC s jazykem C#
- Migrace gRPC z C-Core na gRPC pro .NET
Tento kurz ukazuje, jak vytvořit klienta .NET Core gRPC a ASP.NET Core gRPC Server. Na konci budete mít klienta gRPC, který komunikuje se službou gRPC Greeter.
V tomto kurzu jste:
- Vytvořte server gRPC.
- Vytvořte klienta gRPC.
- Otestujte klienta gRPC pomocí služby gRPC Greeter.
Požadavky
- Sada Visual Studio 2022 se sadou funkcí Vývoj pro ASP.NET a web
Vytvoření služby gRPC
- Spusťte Visual Studio 2022 a vyberte Vytvořit nový projekt.
- V dialogovém okně Vytvořit nový projekt vyhledejte
gRPC
. Vyberte ASP.NET Core gRPC Service a vyberte Další. - V dialogovém okně Konfigurovat nový projekt zadejte
GrpcGreeter
do pole Název projektu. Je důležité pojmenovat projekt GrpcGreeter , aby se obory názvů při kopírování a vkládání kódu shodovaly. - Vyberte Další.
- V dialogovém okně Další informace vyberte .NET 6.0 (dlouhodobá podpora) a pak vyberte Vytvořit.
Spuštění služby
Stisknutím kombinace kláves Ctrl+F5 spusťte příkaz bez ladicího programu.
Visual Studio zobrazí následující dialogové okno, pokud projekt ještě není nakonfigurovaný pro použití SSL:
Pokud IIS Express certifikátu SSL důvěřujete, vyberte Ano.
Zobrazí se následující dialogové okno:
Pokud souhlasíte s tím, že se má důvěřovat vývojovému certifikátu, vyberte Ano.
Informace o důvěřování prohlížeči Firefox najdete v článku Chyba certifikátu firefoxu SEC_ERROR_INADEQUATE_KEY_USAGE.
Visual Studio:
- Spustí Kestrel server.
- Spustí prohlížeč.
- Přejde na
http://localhost:port
, napříkladhttp://localhost:7042
.- port: Náhodně přiřazené číslo portu pro aplikaci.
localhost
: Standardní název hostitele místního počítače. Localhost obsluhuje pouze webové požadavky z místního počítače.
Protokoly zobrazují službu, která naslouchá na https://localhost:<port>
, kde <port>
je číslo portu localhost náhodně přiřazené při vytvoření a nastavení projektu v 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
Poznámka
Šablona gRPC je nakonfigurovaná tak, aby používala protokol TLS (Transport Layer Security). Klienti gRPC musí k volání serveru použít protokol HTTPS. Číslo portu localhost služby gRPC se náhodně přiřadí při vytvoření projektu a nastaví se v souboru Properties\launchSettings.json projektu služby gRPC.
macOS nepodporuje ASP.NET Core gRPC s protokolem TLS. K úspěšnému spuštění služeb gRPC v systému macOS se vyžaduje další konfigurace. Další informace najdete v tématu Nejde spustit aplikaci ASP.NET Core gRPC v systému macOS.
Prozkoumání souborů projektu
Soubory projektu GrpcGreeter :
Protos/greet.proto
: definujeGreeter
gRPC a používá se ke generování prostředků serveru gRPC. Další informace najdete v tématu Úvod do gRPC.Services
folder: Obsahuje implementaciGreeter
služby.appSettings.json
: Obsahuje konfigurační data, jako je protokol používaný nástrojem Kestrel. Další informace najdete v tématu Konfigurace v ASP.NET Core.Program.cs
, který obsahuje:- Vstupní bod pro službu gRPC. Další informace najdete v tématu Obecný hostitel .NET v ASP.NET Core.
- Kód, který konfiguruje chování aplikace. Další informace najdete v tématu Spuštění aplikace.
Vytvoření klienta gRPC v konzolové aplikaci .NET
- Otevřete druhou instanci sady Visual Studio a vyberte Vytvořit nový projekt.
- V dialogovém okně Vytvořit nový projekt vyberte Konzolová aplikace a vyberte Další.
- Do textového pole Název projektu zadejte GrpcGreeterClient a vyberte Další.
- V dialogovém okně Další informace vyberte .NET 6.0 (dlouhodobá podpora) a pak vyberte Vytvořit.
Přidání požadovaných balíčků NuGet
Projekt klienta gRPC vyžaduje následující balíčky NuGet:
- Grpc.Net.Client, který obsahuje klienta .NET Core.
- Google.Protobuf, který obsahuje rozhraní API zpráv protobuf pro jazyk C#.
- Grpc.Tools, které obsahují podporu nástrojů jazyka C# pro soubory protobuf. Balíček nástrojů se za běhu nevyžaduje, takže závislost je označená .
PrivateAssets="All"
Nainstalujte balíčky pomocí konzoly Správce balíčků (PMC) nebo spravovat balíčky NuGet.
Možnost PMC pro instalaci balíčků
V sadě Visual Studio vyberte nástroje>Konzola Správce>balíčků NuGet.
V okně konzoly Správce balíčků spusťte
cd GrpcGreeterClient
příkaz a změňte adresáře na složku obsahujícíGrpcGreeterClient.csproj
soubory.Spusťte následující příkazy:
Install-Package Grpc.Net.Client Install-Package Google.Protobuf Install-Package Grpc.Tools
Možnost spravovat balíčky NuGet pro instalaci balíčků
- Klikněte pravým tlačítkem na projekt v Průzkumník řešení>Správa balíčků NuGet.
- Vyberte kartu Procházet.
- Do vyhledávacího pole zadejte Grpc.Net.Client .
- Na kartě Procházet vyberte balíček Grpc.Net.Client a vyberte Nainstalovat.
- Opakujte pro
Google.Protobuf
aGrpc.Tools
.
Přidat greet.proto
Vytvořte složku Protos v klientském projektu gRPC.
Zkopírujte soubor Protos\greet.proto ze služby gRPC Greeter do složky Protos v projektu klienta gRPC.
Aktualizujte obor názvů uvnitř
greet.proto
souboru na obor názvů projektu:option csharp_namespace = "GrpcGreeterClient";
GrpcGreeterClient.csproj
Upravte soubor projektu:
Klikněte pravým tlačítkem na projekt a vyberte Upravit soubor projektu.
Přidejte skupinu položek s elementem
<Protobuf>
, který odkazuje na soubor greet.proto :<ItemGroup> <Protobuf Include="Protos\greet.proto" GrpcServices="Client" /> </ItemGroup>
Vytvoření klienta Greeter
- Sestavte projekt klienta a vytvořte typy v
GrpcGreeterClient
oboru názvů.
Poznámka
Typy GrpcGreeterClient
se automaticky vygenerují procesem sestavení. Balíček nástrojů Grpc.Tools vygeneruje následující soubory založené na souboru greet.proto :
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs
: Kód vyrovnávací paměti protokolu, který naplní, serializuje a načte typy zpráv požadavků a odpovědí.GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs
: Obsahuje vygenerované klientské třídy.
Další informace o prostředcích jazyka C# automaticky vygenerovaných nástrojem Grpc.Tools najdete v tématu služby gRPC s jazykem C#: Vygenerované prostředky jazyka C#.
Aktualizujte soubor klienta
Program.cs
gRPC následujícím kódem.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();
V předchozím zvýrazněném kódu nahraďte číslo
7042
portu localhost číslem portu zadanýmHTTPS
vProperties/launchSettings.json
rámciGrpcGreeter
projektu služby.
Program.cs
obsahuje vstupní bod a logiku pro klienta gRPC.
Klient Greeter je vytvořen pomocí:
GrpcChannel
Vytvoření instance obsahující informace pro vytvoření připojení ke službě gRPC.- Použití nástroje
GrpcChannel
k vytvoření klienta 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();
Klient Greeter volá asynchronní SayHello
metodu. Zobrazí se SayHello
výsledek volání:
// 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();
Testování klienta gRPC pomocí služby gRPC Greeter
- Ve službě Greeter stisknutím spusťte
Ctrl+F5
server bez ladicího programu. - Stisknutím klávesy
GrpcGreeterClient
Ctrl+F5
v projektu spusťte klienta bez ladicího programu.
Klient odešle do služby pozdrav se zprávou obsahující její název GreeterClient. Služba odešle zprávu "Hello GreeterClient" jako odpověď. Odpověď "Hello GreeterClient" se zobrazí na příkazovém řádku:
Greeting: Hello GreeterClient
Press any key to exit...
Služba gRPC zaznamenává podrobnosti o úspěšném volání v protokolech zapsaných do příkazového řádku:
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
appsettings.Development.json
Aktualizujte soubor přidáním následujících řádků:
"Microsoft.AspNetCore.Hosting": "Information",
"Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information"
Poznámka
Kód v tomto článku vyžaduje k zabezpečení služby gRPC ASP.NET Core vývojový certifikát HTTPS. Pokud klient .NET gRPC selže se zprávou The remote certificate is invalid according to the validation procedure.
nebo The SSL connection could not be established.
, není certifikát pro vývoj důvěryhodný. Pokud chcete tento problém vyřešit, přečtěte si téma Volání služby gRPC s nedůvěryhodným nebo neplatným certifikátem.
Další kroky
V tomto kurzu se dozvíte, jak vytvořit klienta .NET Core gRPC a ASP.NET Core gRPC Server.
Na konci budete mít klienta gRPC, který komunikuje se službou gRPC Greeter.
Zobrazení nebo stažení vzorového kódu (postup stažení)
V tomto kurzu jste:
- Vytvořte server gRPC.
- Vytvořte klienta gRPC.
- Otestujte klienta gRPC pomocí služby gRPC Greeter.
Požadavky
- Sada Visual Studio 2019 16.8 nebo novější se sadou funkcí Vývoj pro ASP.NET a web
- Sada .NET 5.0 SDK
Vytvoření služby gRPC
- Spusťte Visual Studio a vyberte Vytvořit nový projekt.
- V dialogovém okně Vytvořit nový projekt vyberte služba gRPC a vyberte Další.
- V dialogovém okně Konfigurovat nový projekt jako Název projektu zadejte
GrpcGreeter
. Je důležité pojmenovat projekt GrpcGreeter , aby se obory názvů při kopírování a vkládání kódu shodovaly. - Vyberte Další.
- V dialogovém okně Další informace vyberte v rozevíracím seznamu Cílová architektura.NET 5.0.
- Vyberte Vytvořit.
Spuštění služby
Stisknutím kombinace kláves Ctrl+F5 spusťte bez ladicího programu.
Visual Studio zobrazí následující dialogové okno, pokud projekt ještě není nakonfigurovaný tak, aby používal SSL:
Pokud certifikátu IIS Express SSL důvěřujete, vyberte Ano.
Zobrazí se následující dialogové okno:
Pokud souhlasíte s tím, že se má důvěřovat vývojovému certifikátu, vyberte Ano.
Informace o důvěřování prohlížeči Firefox najdete v článku Chyba certifikátu SEC_ERROR_INADEQUATE_KEY_USAGE Firefoxu.
Visual Studio spustí IIS Express a spustí aplikaci. Na panelu Adresa se zobrazí
localhost:port#
a ne něco jakoexample.com
. Je to proto, želocalhost
je standardní název hostitele místního počítače. Localhost obsluhuje pouze webové požadavky z místního počítače. Když Visual Studio vytvoří webový projekt, použije se pro webový server náhodný port.
Protokoly ukazují, že služba naslouchá na 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
Poznámka
Šablona gRPC je nakonfigurovaná tak, aby používala protokol TLS (Transport Layer Security). Klienti gRPC musí k volání serveru použít protokol HTTPS.
macOS nepodporuje ASP.NET Core gRPC s protokolem TLS. K úspěšnému spuštění služeb gRPC v systému macOS se vyžaduje další konfigurace. Další informace najdete v tématu Nejde spustit aplikaci ASP.NET Core gRPC v systému macOS.
Prozkoumání souborů projektu
Soubory projektu GrpcGreeter :
- greet.proto: Soubor Protos/greet.proto definuje
Greeter
gRPC a slouží k vygenerování prostředků serveru gRPC. Další informace najdete v tématu Úvod do gRPC. - Složka Služeb : Obsahuje implementaci
Greeter
služby. appsettings.json
: Obsahuje konfigurační data, například protokol používaný nástrojem Kestrel. Další informace najdete v tématu Konfigurace v ASP.NET Core.Program.cs
: Obsahuje vstupní bod pro službu gRPC. Další informace najdete v tématu Obecný hostitel .NET v ASP.NET Core.Startup.cs
: Obsahuje kód, který konfiguruje chování aplikace. Další informace najdete v tématu Spuštění aplikace.
Vytvoření klienta gRPC v konzolové aplikaci .NET
- Otevřete druhou instanci sady Visual Studio a vyberte Vytvořit nový projekt.
- V dialogovém okně Vytvořit nový projekt vyberte Konzolová aplikace (.NET Core) a vyberte Další.
- Do textového pole Název projektu zadejte GrpcGreeterClient a vyberte Vytvořit.
Přidání požadovaných balíčků
Klientský projekt gRPC vyžaduje následující balíčky:
- Grpc.Net.Client, který obsahuje klienta .NET Core.
- Google.Protobuf, který obsahuje rozhraní API zpráv protobuf pro jazyk C#.
- Grpc.Tools, který obsahuje podporu nástrojů jazyka C# pro soubory protobuf. Balíček nástrojů se za běhu nevyžaduje, takže závislost je označená .
PrivateAssets="All"
Nainstalujte balíčky pomocí konzoly Správce balíčků (PMC) nebo spravovat balíčky NuGet.
Možnost PMC pro instalaci balíčků
V sadě Visual Studio vyberte nástroje>Konzola Správce>balíčků NuGet.
V okně konzoly Správce balíčků spusťte
cd GrpcGreeterClient
příkaz a změňte adresáře na složku obsahujícíGrpcGreeterClient.csproj
soubory.Spusťte následující příkazy:
Install-Package Grpc.Net.Client Install-Package Google.Protobuf Install-Package Grpc.Tools
Možnost spravovat balíčky NuGet pro instalaci balíčků
- Klikněte pravým tlačítkem na projekt v Průzkumník řešení>Správa balíčků NuGet.
- Vyberte kartu Procházet.
- Do vyhledávacího pole zadejte Grpc.Net.Client .
- Na kartě Procházet vyberte balíček Grpc.Net.Client a vyberte Nainstalovat.
- Opakujte pro
Google.Protobuf
aGrpc.Tools
.
Přidat greet.proto
Vytvořte složku Protos v klientském projektu gRPC.
Zkopírujte soubor Protos\greet.proto ze služby gRPC Greeter do složky Protos v projektu klienta gRPC.
Aktualizujte obor názvů uvnitř
greet.proto
souboru na obor názvů projektu:option csharp_namespace = "GrpcGreeterClient";
GrpcGreeterClient.csproj
Upravte soubor projektu:Klikněte pravým tlačítkem na projekt a vyberte Upravit soubor projektu.
Přidejte skupinu položek s elementem
<Protobuf>
, který odkazuje na soubor greet.proto :<ItemGroup> <Protobuf Include="Protos\greet.proto" GrpcServices="Client" /> </ItemGroup>
Vytvoření klienta Greeter
- Sestavte projekt klienta a vytvořte typy v
GrpcGreeterClient
oboru názvů.
Poznámka
Typy GrpcGreeterClient
se automaticky vygenerují procesem sestavení. Balíček nástrojů Grpc.Tools vygeneruje následující soubory založené na souboru greet.proto :
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs
: Kód vyrovnávací paměti protokolu, který naplní, serializuje a načte typy zpráv požadavků a odpovědí.GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs
: Obsahuje vygenerované klientské třídy.
Další informace o prostředcích jazyka C# automaticky vygenerovaných nástrojem Grpc.Tools najdete v tématu služby gRPC s jazykem C#: Vygenerované prostředky jazyka C#.
Aktualizujte soubor klienta
Program.cs
gRPC následujícím kódem: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
obsahuje vstupní bod a logiku pro klienta gRPC.
Klient Greeter je vytvořen pomocí:
GrpcChannel
Vytvoření instance obsahující informace pro vytvoření připojení ke službě gRPC.- Použití nástroje
GrpcChannel
k vytvoření klienta 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();
}
Klient Greeter volá asynchronní SayHello
metodu. Zobrazí se SayHello
výsledek volání:
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();
}
Testování klienta gRPC pomocí služby gRPC Greeter
- Ve službě Greeter stisknutím spusťte
Ctrl+F5
server bez ladicího programu. - Stisknutím klávesy
GrpcGreeterClient
Ctrl+F5
v projektu spusťte klienta bez ladicího programu.
Klient odešle do služby pozdrav se zprávou obsahující její název GreeterClient. Služba odešle zprávu "Hello GreeterClient" jako odpověď. Odpověď "Hello GreeterClient" se zobrazí na příkazovém řádku:
Greeting: Hello GreeterClient
Press any key to exit...
Služba gRPC zaznamenává podrobnosti o úspěšném volání v protokolech zapsaných do příkazového řádku:
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
Poznámka
Kód v tomto článku vyžaduje k zabezpečení služby gRPC ASP.NET Core vývojový certifikát HTTPS. Pokud klient .NET gRPC selže se zprávou The remote certificate is invalid according to the validation procedure.
nebo The SSL connection could not be established.
, není certifikát pro vývoj důvěryhodný. Pokud chcete tento problém vyřešit, přečtěte si téma Volání služby gRPC s nedůvěryhodným nebo neplatným certifikátem.
Další kroky
V tomto kurzu se dozvíte, jak vytvořit klienta .NET Core gRPC a ASP.NET Core gRPC Server.
Na konci budete mít klienta gRPC, který komunikuje se službou gRPC Greeter.
Zobrazení nebo stažení vzorového kódu (postup stažení)
V tomto kurzu jste:
- Vytvořte server gRPC.
- Vytvořte klienta gRPC.
- Otestujte klienta gRPC pomocí služby gRPC Greeter.
Požadavky
Sada Visual Studio 2019 16.4 nebo novější se sadou funkcí Vývoj pro ASP.NET a web
Vytvoření služby gRPC
Spusťte Visual Studio a vyberte Vytvořit nový projekt. Případně v nabídce Soubor sady Visual Studio vyberte Nový>projekt.
V dialogovém okně Vytvořit nový projekt vyberte služba gRPC a vyberte Další:
Pojmenujte projekt GrpcGreeter. Je důležité pojmenovat projekt GrpcGreeter , aby se obory názvů při kopírování a vkládání kódu shodovaly.
Vyberte Vytvořit.
V dialogovém okně Vytvořit novou službu gRPC :
- Je vybrána šablona služby gRPC .
- Vyberte Vytvořit.
Spuštění služby
Stisknutím kombinace kláves Ctrl+F5 spusťte bez ladicího programu.
Visual Studio zobrazí následující dialogové okno, pokud projekt ještě není nakonfigurovaný tak, aby používal SSL:
Pokud certifikátu IIS Express SSL důvěřujete, vyberte Ano.
Zobrazí se následující dialogové okno:
Pokud souhlasíte s tím, že se má důvěřovat vývojovému certifikátu, vyberte Ano.
Informace o důvěřování prohlížeči Firefox najdete v článku Chyba certifikátu SEC_ERROR_INADEQUATE_KEY_USAGE Firefoxu.
Visual Studio spustí IIS Express a spustí aplikaci. Na panelu Adresa se zobrazí
localhost:port#
a ne něco jakoexample.com
. Je to proto, želocalhost
je standardní název hostitele místního počítače. Localhost obsluhuje pouze webové požadavky z místního počítače. Když Visual Studio vytvoří webový projekt, použije se pro webový server náhodný port.
Protokoly ukazují, že služba naslouchá na 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
Poznámka
Šablona gRPC je nakonfigurovaná tak, aby používala protokol TLS (Transport Layer Security). Klienti gRPC musí k volání serveru použít protokol HTTPS.
macOS nepodporuje ASP.NET Core gRPC s protokolem TLS. K úspěšnému spuštění služeb gRPC v macOS se vyžaduje další konfigurace. Další informace najdete v tématu Nejde spustit aplikaci ASP.NET Core gRPC v systému macOS.
Prozkoumání souborů projektu
Soubory projektu GrpcGreeter :
- greet.proto: Soubor Protos/greet.proto definuje
Greeter
gRPC a používá se ke generování prostředků serveru gRPC. Další informace najdete v tématu Úvod do gRPC. - Složka služeb : Obsahuje implementaci
Greeter
služby. appsettings.json
: Obsahuje konfigurační data, například protokol používaný nástrojem Kestrel. Další informace najdete v tématu Konfigurace v ASP.NET Core.Program.cs
: Obsahuje vstupní bod pro službu gRPC. Další informace najdete v tématu Obecný hostitel .NET v ASP.NET Core.Startup.cs
: Obsahuje kód, který konfiguruje chování aplikace. Další informace najdete v tématu Spuštění aplikace.
Vytvoření klienta gRPC v konzolové aplikaci .NET
- Otevřete druhou instanci sady Visual Studio a vyberte Vytvořit nový projekt.
- V dialogovém okně Vytvořit nový projekt vyberte Konzolová aplikace (.NET Core) a vyberte Další.
- Do textového pole Název projektu zadejte GrpcGreeterClient a vyberte Vytvořit.
Přidání požadovaných balíčků
Projekt klienta gRPC vyžaduje následující balíčky:
- Grpc.Net.Client, který obsahuje klienta .NET Core.
- Google.Protobuf, který obsahuje rozhraní API zpráv protobuf pro jazyk C#.
- Grpc.Tools, který obsahuje podporu nástrojů jazyka C# pro soubory protobuf. Balíček nástrojů se za běhu nevyžaduje, takže je závislost označená .
PrivateAssets="All"
Nainstalujte balíčky pomocí konzoly Správce balíčků (PMC) nebo spravovat balíčky NuGet.
Možnost PMC pro instalaci balíčků
V sadě Visual Studio vyberte Nástroje Konzola>Správce>balíčků NuGet.
V okně konzoly Správce balíčků spusťte
cd GrpcGreeterClient
příkaz a změňte adresáře na složku obsahujícíGrpcGreeterClient.csproj
soubory.Spusťte následující příkazy:
Install-Package Grpc.Net.Client Install-Package Google.Protobuf Install-Package Grpc.Tools
Možnost spravovat balíčky NuGet pro instalaci balíčků
- Klikněte pravým tlačítkem na projekt v Průzkumník řešení>Spravovat balíčky NuGet.
- Vyberte kartu Procházet.
- Do vyhledávacího pole zadejte Grpc.Net.Client .
- Na kartě Procházet vyberte balíček Grpc.Net.Client a vyberte Nainstalovat.
- Opakujte pro
Google.Protobuf
aGrpc.Tools
.
Přidat greet.proto
Vytvořte složku Protos v projektu klienta gRPC.
Zkopírujte soubor Protos\greet.proto ze služby gRPC Greeter do složky Protos v projektu klienta gRPC.
Aktualizujte obor názvů uvnitř
greet.proto
souboru na obor názvů projektu:option csharp_namespace = "GrpcGreeterClient";
GrpcGreeterClient.csproj
Upravte soubor projektu:Klikněte pravým tlačítkem na projekt a vyberte Upravit soubor projektu.
Přidejte skupinu položek s elementem
<Protobuf>
, který odkazuje na soubor greet.proto :<ItemGroup> <Protobuf Include="Protos\greet.proto" GrpcServices="Client" /> </ItemGroup>
Vytvoření klienta Greeter
- Sestavte projekt klienta pro vytvoření typů v
GrpcGreeterClient
oboru názvů.
Poznámka
Typy GrpcGreeterClient
se automaticky vygenerují procesem sestavení. Balíček nástrojů Grpc.Tools generuje následující soubory na základě souboru greet.proto :
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs
: Kód vyrovnávací paměti protokolu, který naplní, serializuje a načte typy zpráv požadavků a odpovědí.GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs
: Obsahuje vygenerované klientské třídy.
Další informace o prostředcích jazyka C# automaticky vygenerovaných nástrojem Grpc.Tools najdete v tématu Služby gRPC pomocí jazyka C#: Vygenerované prostředky jazyka C#.
Aktualizujte soubor klienta Program.cs
gRPC následujícím kódem:
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
obsahuje vstupní bod a logiku pro klienta gRPC.
Klient Greeter vytvořil:
- Vytvoření
GrpcChannel
instance obsahující informace pro vytvoření připojení ke službě gRPC. - Použití k
GrpcChannel
vytvoření klienta 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();
}
Klient Greeter volá asynchronní SayHello
metodu. Zobrazí se SayHello
výsledek volání:
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();
}
Testování klienta gRPC pomocí služby gRPC Greeter
- Ve službě Greeter stisknutím spusťte
Ctrl+F5
server bez ladicího programu. - Stisknutím klávesy
GrpcGreeterClient
Ctrl+F5
v projektu spusťte klienta bez ladicího programu.
Klient odešle do služby pozdrav se zprávou obsahující její název GreeterClient. Služba odešle zprávu "Hello GreeterClient" jako odpověď. Na příkazovém řádku se zobrazí odpověď Hello GreeterClient:
Greeting: Hello GreeterClient
Press any key to exit...
Služba gRPC zaznamenává podrobnosti o úspěšném volání v protokolech zapsaných do příkazového řádku:
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
Poznámka
Kód v tomto článku vyžaduje k zabezpečení služby gRPC ASP.NET Core vývojový certifikát HTTPS. Pokud klient .NET gRPC selže se zprávou The remote certificate is invalid according to the validation procedure.
nebo The SSL connection could not be established.
, vývojový certifikát není důvěryhodný. Pokud chcete tento problém vyřešit, přečtěte si téma Volání služby gRPC s nedůvěryhodným nebo neplatným certifikátem.