Kurz: Vytvoření klienta a serveru gRPC v ASP.NET Core
V tomto kurzu se dozvíte, jak vytvořit klienta .NET Core gRPC a server ASP.NET Core gRPC. Na konci budete mít klienta gRPC, který komunikuje se službou gRPC Greeter.
V tomto kurzu se naučíte:
- 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 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
název projektu. Projekt je důležité pojmenovat 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 (dlouhodobá podpora) a pak 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 PROTOKOL SSL:
Pokud důvěřujete certifikátu SSL služby IIS Express, 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 naleznete v článku o chybě certifikátu aplikace Firefox 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 aplikace.
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 ukazují, že služba naslouchá https://localhost:<port>
na , kde <port>
je číslo portu localhost náhodně přiřazené při vytvoření a nastavení Properties/launchSettings.json
projektu .
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 potřebují k volání serveru protokol HTTPS. Číslo portu localhost služby gRPC je náhodně přiřazeno při vytvoření projektu a nastavení 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 k vygenerování prostředků serveru gRPC. Další informace naleznete v tématu Úvod do gRPC.Services
složka: Obsahuje implementaciGreeter
služby.appSettings.json
: Obsahuje konfigurační data, jako je protokol používaný 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 (dlouhodobá podpora) a pak vyberte Vytvořit.
Přidání požadovaných balíčků NuGet
Klientský projekt 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 nevyžaduje za běhu, takže závislost je označena
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>NuGet Správce balíčků> Správce balíčků Konzola
V okně konzoly Správce balíčků spusťte
cd GrpcGreeterClient
změnu adresářů do složky 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ů
- Pravým tlačítkem myši klikněte na projekt v Průzkumník řešení> Nabídky 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.
- Tento postup opakujte pro
Google.Protobuf
aGrpc.Tools
.
Přidání pozdravu.proto
V projektu klienta gRPC vytvořte složku Protos .
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 myši 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 generují automaticky 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žadavku a odpovědi.GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs
: Obsahuje vygenerované třídy klienta.
Další informace o prostředcích jazyka C# automaticky vygenerovaných nástroji Grpc.Tools najdete v tématu služby gRPC s C#: Generované prostředky jazyka C#.
Aktualizujte klientský
Program.cs
soubor 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 číslemHTTPS
portu zadaným vProperties/launchSettings.json
GrpcGreeter
rámci 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í k
GrpcChannel
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 výsledek SayHello
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();
Otestování klienta gRPC pomocí služby gRPC Greeter
appsettings.Development.json
Aktualizujte soubor přidáním následujících zvýrazněných řádků:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
,"Microsoft.AspNetCore.Hosting": "Information",
"Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information"
}
}
}
- Ve službě Greeter spusťte server bez ladicího programu stisknutím
Ctrl+F5
klávesy. GrpcGreeterClient
V projektu spusťte klienta bez ladicího programu stisknutímCtrl+F5
klávesy.
Klient odešle službě pozdrav se zprávou obsahující její název GreeterClient. Služba odešle zprávu "Hello GreeterClient" jako odpověď. V 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
Poznámka:
Kód v tomto článku vyžaduje ASP.NET základní vývojový certifikát HTTPS k zabezpečení služby gRPC. 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
V tomto kurzu se dozvíte, jak vytvořit klienta .NET Core gRPC a server ASP.NET Core gRPC. Na konci budete mít klienta gRPC, který komunikuje se službou gRPC Greeter.
V tomto kurzu se naučíte:
- 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
název projektu. Projekt je důležité pojmenovat 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 bez ladicího programu.
Visual Studio zobrazí následující dialogové okno, pokud projekt ještě není nakonfigurovaný tak, aby používal PROTOKOL SSL:
Pokud důvěřujete certifikátu SSL služby IIS Express, 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 naleznete v článku o chybě certifikátu aplikace Firefox 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 aplikace.
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 ukazují, že služba naslouchá https://localhost:<port>
na , kde <port>
je číslo portu localhost náhodně přiřazené při vytvoření a nastavení Properties/launchSettings.json
projektu .
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 potřebují k volání serveru protokol HTTPS. Číslo portu localhost služby gRPC je náhodně přiřazeno při vytvoření projektu a nastavení 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 k vygenerování prostředků serveru gRPC. Další informace naleznete v tématu Úvod do gRPC.Services
složka: Obsahuje implementaciGreeter
služby.appSettings.json
: Obsahuje konfigurační data, jako je protokol používaný 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
Klientský projekt 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 nevyžaduje za běhu, takže závislost je označena
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>NuGet Správce balíčků> Správce balíčků Konzola
V okně konzoly Správce balíčků spusťte
cd GrpcGreeterClient
změnu adresářů do složky 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ů
- Pravým tlačítkem myši klikněte na projekt v Průzkumník řešení> Nabídky 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.
- Tento postup opakujte pro
Google.Protobuf
aGrpc.Tools
.
Přidání pozdravu.proto
V projektu klienta gRPC vytvořte složku Protos .
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 myši 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 generují automaticky 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žadavku a odpovědi.GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs
: Obsahuje vygenerované třídy klienta.
Další informace o prostředcích jazyka C# automaticky vygenerovaných nástroji Grpc.Tools najdete v tématu služby gRPC s C#: Generované prostředky jazyka C#.
Aktualizujte klientský
Program.cs
soubor 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 číslemHTTPS
portu zadaným vProperties/launchSettings.json
GrpcGreeter
rámci 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í k
GrpcChannel
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 výsledek SayHello
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();
Otestování klienta gRPC pomocí služby gRPC Greeter
appsettings.Development.json
Aktualizujte soubor přidáním následujících zvýrazněných řádků:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
,"Microsoft.AspNetCore.Hosting": "Information",
"Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information"
}
}
}
- Ve službě Greeter spusťte server bez ladicího programu stisknutím
Ctrl+F5
klávesy. GrpcGreeterClient
V projektu spusťte klienta bez ladicího programu stisknutímCtrl+F5
klávesy.
Klient odešle službě pozdrav se zprávou obsahující její název GreeterClient. Služba odešle zprávu "Hello GreeterClient" jako odpověď. V 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
Poznámka:
Kód v tomto článku vyžaduje ASP.NET základní vývojový certifikát HTTPS k zabezpečení služby gRPC. 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
V tomto kurzu se dozvíte, jak vytvořit klienta .NET Core gRPC a server ASP.NET Core gRPC. Na konci budete mít klienta gRPC, který komunikuje se službou gRPC Greeter.
V tomto kurzu se naučíte:
- 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
- Sada .NET 6.0 SDK
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
název projektu. Projekt je důležité pojmenovat 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 bez ladicího programu.
Visual Studio zobrazí následující dialogové okno, pokud projekt ještě není nakonfigurovaný tak, aby používal PROTOKOL SSL:
Pokud důvěřujete certifikátu SSL služby IIS Express, 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 naleznete v článku o chybě certifikátu aplikace Firefox 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 aplikace.
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 ukazují, že služba naslouchá https://localhost:<port>
na , kde <port>
je číslo portu localhost náhodně přiřazené při vytvoření a nastavení Properties/launchSettings.json
projektu .
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 potřebují k volání serveru protokol HTTPS. Číslo portu localhost služby gRPC je náhodně přiřazeno při vytvoření projektu a nastavení 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 k vygenerování prostředků serveru gRPC. Další informace naleznete v tématu Úvod do gRPC.Services
složka: Obsahuje implementaciGreeter
služby.appSettings.json
: Obsahuje konfigurační data, jako je protokol používaný 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
Klientský projekt 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 nevyžaduje za běhu, takže závislost je označena
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>NuGet Správce balíčků> Správce balíčků Konzola
V okně konzoly Správce balíčků spusťte
cd GrpcGreeterClient
změnu adresářů do složky 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ů
- Pravým tlačítkem myši klikněte na projekt v Průzkumník řešení> Nabídky 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.
- Tento postup opakujte pro
Google.Protobuf
aGrpc.Tools
.
Přidání pozdravu.proto
V projektu klienta gRPC vytvořte složku Protos .
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 myši 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 generují automaticky 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žadavku a odpovědi.GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs
: Obsahuje vygenerované třídy klienta.
Další informace o prostředcích jazyka C# automaticky vygenerovaných nástroji Grpc.Tools najdete v tématu služby gRPC s C#: Generované prostředky jazyka C#.
Aktualizujte klientský
Program.cs
soubor 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 číslemHTTPS
portu zadaným vProperties/launchSettings.json
GrpcGreeter
rámci 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í k
GrpcChannel
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 výsledek SayHello
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();
Otestování klienta gRPC pomocí služby gRPC Greeter
- Ve službě Greeter spusťte server bez ladicího programu stisknutím
Ctrl+F5
klávesy. GrpcGreeterClient
V projektu spusťte klienta bez ladicího programu stisknutímCtrl+F5
klávesy.
Klient odešle službě pozdrav se zprávou obsahující její název GreeterClient. Služba odešle zprávu "Hello GreeterClient" jako odpověď. V 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 ASP.NET základní vývojový certifikát HTTPS k zabezpečení služby gRPC. 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
V tomto kurzu se dozvíte, jak vytvořit klienta .NET Core gRPC a server ASP.NET Core gRPC.
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 se naučíte:
- 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 gRPC Service a vyberte Další.
- V dialogovém okně Konfigurovat nový projekt zadejte
GrpcGreeter
název projektu. Projekt je důležité pojmenovat 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 PROTOKOL SSL:
Pokud důvěřujete certifikátu SSL služby IIS Express, 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 naleznete v článku o chybě certifikátu aplikace Firefox SEC_ERROR_INADEQUATE_KEY_USAGE.
Visual Studio spustí SLUŽBU IIS Express a spustí aplikaci. Na panelu Adresa se zobrazuje
localhost:port#
něco jakoexample.com
. Je to proto, želocalhost
se jedná o 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 zobrazují službu, na které naslouchá 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 potřebují k volání serveru 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 naleznete 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ý 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 nevyžaduje za běhu, takže závislost je označena
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>NuGet Správce balíčků> Správce balíčků Konzola
V okně konzoly Správce balíčků spusťte
cd GrpcGreeterClient
změnu adresářů do složky 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ů
- Pravým tlačítkem myši klikněte na projekt v Průzkumník řešení> Nabídky 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.
- Tento postup opakujte pro
Google.Protobuf
aGrpc.Tools
.
Přidání pozdravu.proto
V projektu klienta gRPC vytvořte složku Protos .
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 myši 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 generují automaticky 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žadavku a odpovědi.GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs
: Obsahuje vygenerované třídy klienta.
Další informace o prostředcích jazyka C# automaticky vygenerovaných nástroji Grpc.Tools najdete v tématu služby gRPC s C#: Generované prostředky jazyka C#.
Aktualizujte klientský
Program.cs
soubor 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í 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 výsledek SayHello
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();
}
Otestování klienta gRPC pomocí služby gRPC Greeter
- Ve službě Greeter spusťte server bez ladicího programu stisknutím
Ctrl+F5
klávesy. GrpcGreeterClient
V projektu spusťte klienta bez ladicího programu stisknutímCtrl+F5
klávesy.
Klient odešle službě pozdrav se zprávou obsahující její název GreeterClient. Služba odešle zprávu "Hello GreeterClient" jako odpověď. V 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 ASP.NET základní vývojový certifikát HTTPS k zabezpečení služby gRPC. 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
V tomto kurzu se dozvíte, jak vytvořit klienta .NET Core gRPC a server ASP.NET Core gRPC.
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 se naučíte:
- 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
- Sada .NET Core 3.1 SDK
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 gRPC Service a vyberte Další:
Pojmenujte projekt GrpcGreeter. Projekt je důležité pojmenovat 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 PROTOKOL SSL:
Pokud důvěřujete certifikátu SSL služby IIS Express, 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 naleznete v článku o chybě certifikátu aplikace Firefox SEC_ERROR_INADEQUATE_KEY_USAGE.
Visual Studio spustí SLUŽBU IIS Express a spustí aplikaci. Na panelu Adresa se zobrazuje
localhost:port#
něco jakoexample.com
. Je to proto, želocalhost
se jedná o 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 zobrazují službu, na které naslouchá 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 potřebují k volání serveru 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 naleznete 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ý 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 nevyžaduje za běhu, takže závislost je označena
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>NuGet Správce balíčků> Správce balíčků Konzola
V okně konzoly Správce balíčků spusťte
cd GrpcGreeterClient
změnu adresářů do složky 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ů
- Pravým tlačítkem myši klikněte na projekt v Průzkumník řešení> Nabídky 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.
- Tento postup opakujte pro
Google.Protobuf
aGrpc.Tools
.
Přidání pozdravu.proto
V projektu klienta gRPC vytvořte složku Protos .
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 myši 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 generují automaticky 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žadavku a odpovědi.GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs
: Obsahuje vygenerované třídy klienta.
Další informace o prostředcích jazyka C# automaticky vygenerovaných nástroji Grpc.Tools najdete v tématu služby gRPC s C#: Generované prostředky jazyka C#.
Aktualizujte klientský Program.cs
soubor 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í 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 výsledek SayHello
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();
}
Otestování klienta gRPC pomocí služby gRPC Greeter
- Ve službě Greeter spusťte server bez ladicího programu stisknutím
Ctrl+F5
klávesy. GrpcGreeterClient
V projektu spusťte klienta bez ladicího programu stisknutímCtrl+F5
klávesy.
Klient odešle službě pozdrav se zprávou obsahující její název GreeterClient. Služba odešle zprávu "Hello GreeterClient" jako odpověď. V 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 ASP.NET základní vývojový certifikát HTTPS k zabezpečení služby gRPC. 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.