Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto kurzu se dozvíte, jak vytvořit klienta .NET gRPC a ASP.NET Core gRPC Server. 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.
Prerequisites
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
GrpcGreeterná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 9.0 (Standardní podpora termínů) 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.jsonprojektu .
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:<port>
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
Note
Š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 vlastnosti\launchSettings.jsv souboru projektu služby gRPC.
Prozkoumání souborů projektu
Soubory projektu GrpcGreeter :
-
Protos/greet.proto: definujeGreetergRPC a používá se k vygenerování prostředků serveru gRPC. Další informace naleznete v tématu Úvod do gRPC. -
Servicessložka: Obsahuje implementaciGreetersluž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 9.0 (Standardní podpora termínů) 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.
- 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ů
Ve Visual Studiu vyberte Nástroje>Správce balíčků NuGet>Konzola Správce balíčků.
V okně konzoly Správce balíčků spusťte
cd GrpcGreeterClientzměnu adresářů do složky obsahujícíGrpcGreeterClient.csprojsoubory.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íku ř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.
- Tento postup opakujte pro
Google.ProtobufaGrpc.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.protosouboru na obor názvů projektu:option csharp_namespace = "GrpcGreeterClient";GrpcGreeterClient.csprojUpravte 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
GrpcGreeterClientoboru názvů.
Note
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.cssoubor gRPC následujícím kódem.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
7042portu localhost číslemHTTPSportu zadaným vProperties/launchSettings.jsonGrpcGreeterrámci projektu služby.
Program.cs obsahuje vstupní bod a logiku pro klienta gRPC.
Klient Greeter je vytvořen pomocí:
-
GrpcChannelVytvoření instance obsahující informace pro vytvoření připojení ke službě gRPC. - Použití k
GrpcChannelvytvoř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"
}
}
}
- V projektu služby
GrpcGreeterstiskněteCtrl+F5a spusťte server bez ladicího programu. - V projektu konzoly
GrpcGreeterClientstiskněteCtrl+F5a spusťte klienta bez ladicího programu.
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 HTTP/2 POST https://localhost:7042/greet.Greeter/SayHello - 200 - application/grpc 40.4615ms
Note
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 gRPC a ASP.NET Core gRPC Server. 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.
Prerequisites
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
GrpcGreeterná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.jsonprojektu .
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:<port>
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
Note
Š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 vlastnosti\launchSettings.jsv souboru projektu služby gRPC.
Prozkoumání souborů projektu
Soubory projektu GrpcGreeter :
-
Protos/greet.proto: definujeGreetergRPC a používá se k vygenerování prostředků serveru gRPC. Další informace naleznete v tématu Úvod do gRPC. -
Servicessložka: Obsahuje implementaciGreetersluž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.
- 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ů
Ve Visual Studiu vyberte Nástroje>Správce balíčků NuGet>Konzola Správce balíčků.
V okně konzoly Správce balíčků spusťte
cd GrpcGreeterClientzměnu adresářů do složky obsahujícíGrpcGreeterClient.csprojsoubory.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íku ř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.
- Tento postup opakujte pro
Google.ProtobufaGrpc.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.protosouboru na obor názvů projektu:option csharp_namespace = "GrpcGreeterClient";GrpcGreeterClient.csprojUpravte 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
GrpcGreeterClientoboru názvů.
Note
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.cssoubor 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
7042portu localhost číslemHTTPSportu zadaným vProperties/launchSettings.jsonGrpcGreeterrámci projektu služby.
Program.cs obsahuje vstupní bod a logiku pro klienta gRPC.
Klient Greeter je vytvořen pomocí:
-
GrpcChannelVytvoření instance obsahující informace pro vytvoření připojení ke službě gRPC. - Použití k
GrpcChannelvytvoř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+F5klávesy. -
GrpcGreeterClientV projektu spusťte klienta bez ladicího programu stisknutímCtrl+F5klá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
Note
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 gRPC a ASP.NET Core gRPC Server. 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.
Prerequisites
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
GrpcGreeterná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.jsonprojektu .
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:<port>
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
Note
Š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 vlastnosti\launchSettings.jsv souboru 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: definujeGreetergRPC a používá se k vygenerování prostředků serveru gRPC. Další informace naleznete v tématu Úvod do gRPC. -
Servicessložka: Obsahuje implementaciGreetersluž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.
- 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ů
Ve Visual Studiu vyberte Nástroje>Správce balíčků NuGet>Konzola Správce balíčků.
V okně konzoly Správce balíčků spusťte
cd GrpcGreeterClientzměnu adresářů do složky obsahujícíGrpcGreeterClient.csprojsoubory.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íku ř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.
- Tento postup opakujte pro
Google.ProtobufaGrpc.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.protosouboru na obor názvů projektu:option csharp_namespace = "GrpcGreeterClient";GrpcGreeterClient.csprojUpravte 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
GrpcGreeterClientoboru názvů.
Note
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.cssoubor 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
7042portu localhost číslemHTTPSportu zadaným vProperties/launchSettings.jsonGrpcGreeterrámci projektu služby.
Program.cs obsahuje vstupní bod a logiku pro klienta gRPC.
Klient Greeter je vytvořen pomocí:
-
GrpcChannelVytvoření instance obsahující informace pro vytvoření připojení ke službě gRPC. - Použití k
GrpcChannelvytvoř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+F5klávesy. -
GrpcGreeterClientV projektu spusťte klienta bez ladicího programu stisknutímCtrl+F5klá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
Note
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 gRPC a ASP.NET Core gRPC Server. 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.
Prerequisites
- Sada Visual Studio 2022 se sadou funkcí Vývoj pro ASP.NET a web
- Sada .NET 6 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
GrpcGreeterná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.jsonprojektu .
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:<port>
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
Note
Š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 vlastnosti\launchSettings.jsv souboru 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: definujeGreetergRPC a používá se k vygenerování prostředků serveru gRPC. Další informace naleznete v tématu Úvod do gRPC. -
Servicessložka: Obsahuje implementaciGreetersluž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.
- 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ů
Ve Visual Studiu vyberte Nástroje>Správce balíčků NuGet>Konzola Správce balíčků.
V okně konzoly Správce balíčků spusťte
cd GrpcGreeterClientzměnu adresářů do složky obsahujícíGrpcGreeterClient.csprojsoubory.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íku ř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.
- Tento postup opakujte pro
Google.ProtobufaGrpc.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.protosouboru na obor názvů projektu:option csharp_namespace = "GrpcGreeterClient";GrpcGreeterClient.csprojUpravte 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
GrpcGreeterClientoboru názvů.
Note
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.cssoubor 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
7042portu localhost číslemHTTPSportu zadaným vProperties/launchSettings.jsonGrpcGreeterrámci projektu služby.
Program.cs obsahuje vstupní bod a logiku pro klienta gRPC.
Klient Greeter je vytvořen pomocí:
-
GrpcChannelVytvoření instance obsahující informace pro vytvoření připojení ke službě gRPC. - Použití k
GrpcChannelvytvoř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+F5klávesy. -
GrpcGreeterClientV projektu spusťte klienta bez ladicího programu stisknutímCtrl+F5klá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"
Note
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 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 se naučíte:
- Vytvořte server gRPC.
- Vytvořte klienta gRPC.
- Otestujte klienta gRPC pomocí služby gRPC Greeter.
Prerequisites
- Sada Visual Studio 2019 16.8 nebo novější se sadou funkcí Vývoj pro ASP.NET a web
- Sada .NET 5 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
GrpcGreeterná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, želocalhostse 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
Note
Š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
GreetergRPC a slouží k vygenerování prostředků serveru gRPC. Další informace naleznete v tématu Úvod do gRPC. - Složka Služeb: Obsahuje implementaci
Greetersluž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) 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.
- 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ů
Ve Visual Studiu vyberte Nástroje>Správce balíčků NuGet>Konzola Správce balíčků.
V okně konzoly Správce balíčků spusťte
cd GrpcGreeterClientzměnu adresářů do složky obsahujícíGrpcGreeterClient.csprojsoubory.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íku ř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.
- Tento postup opakujte pro
Google.ProtobufaGrpc.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.protosouboru na obor názvů projektu:option csharp_namespace = "GrpcGreeterClient";GrpcGreeterClient.csprojUpravte 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
GrpcGreeterClientoboru názvů.
Note
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.cssoubor 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í:
-
GrpcChannelVytvoření instance obsahující informace pro vytvoření připojení ke službě gRPC. - Použití k
GrpcChannelvytvoř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+F5klávesy. -
GrpcGreeterClientV projektu spusťte klienta bez ladicího programu stisknutímCtrl+F5klá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
Note
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.
Prerequisites
- 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:
- Byla 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, želocalhostse 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
Note
Š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
GreetergRPC a slouží k vygenerování prostředků serveru gRPC. Další informace naleznete v tématu Úvod do gRPC. - Složka Služeb: Obsahuje implementaci
Greetersluž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ů
Ve Visual Studiu vyberte Nástroje>Správce balíčků NuGet>Konzola Správce balíčků.
V okně konzoly Správce balíčků spusťte
cd GrpcGreeterClientzměnu adresářů do složky obsahujícíGrpcGreeterClient.csprojsoubory.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íku ř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.
- Tento postup opakujte pro
Google.ProtobufaGrpc.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.protosouboru na obor názvů projektu:option csharp_namespace = "GrpcGreeterClient";GrpcGreeterClient.csprojUpravte 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
GrpcGreeterClientoboru názvů.
Note
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í:
-
GrpcChannelVytvoření instance obsahující informace pro vytvoření připojení ke službě gRPC. - Použití k
GrpcChannelvytvoř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+F5klávesy. -
GrpcGreeterClientV projektu spusťte klienta bez ladicího programu stisknutímCtrl+F5klá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
Note
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.