Kurz: Vytvoření klienta a serveru gRPC v ASP.NET Core
Tento kurz ukazuje, jak vytvořit klienta .NET Core gRPC a ASP.NET Core gRPC Server. Na konci budete mít klienta gRPC, který komunikuje se službou gRPC Greeter.
V tomto kurzu jste:
- Vytvořte server gRPC.
- Vytvořte klienta gRPC.
- Otestujte službu klienta gRPC pomocí služby gRPC Greeter.
Požadavky
- Visual Studio 2022 s úlohou vývoje ASP.NET a webu .
Vytvoření služby gRPC
- Začněte Visual Studio 2022 a vyberte Create a new project (Vytvořit nový projekt).
- V dialogovém okně Vytvořit nový projekt vyhledejte
gRPC. Vyberte ASP.NET Core gRPC a pak vyberte Další. - V dialogovém okně Configure your new project (Konfigurace nového
GrpcGreeterprojektu) zadejte Project name (Název projektu). Při kopírování a vkládání kódu je důležité projekt pojmnovat GrpcGreeter, aby se obory názvů shodují. - Vyberte Další.
- V dialogovém okně Další informace vyberte .NET 6.0 (Preview) a pak vyberte Vytvořit.
Spuštění služby
Stisknutím kombinace kláves CTRL + F5 spustíte bez ladicího programu.
Visual Studio se zobrazí následující dialogové okno, pokud projekt ještě není nakonfigurovaný na použití SSL:

Vyberte Ano, pokud důvěřujete certifikátu IIS EXPRESS SSL.
Zobrazí se následující dialogové okno:

Pokud souhlasíte s důvěryhodností vývojového certifikátu, vyberte Ano.
Informace o důvěřování prohlížeči Firefox naleznete v tématu firefox SEC_ERROR_INADEQUATE_KEY_USAGE Chyba certifikátu.
Visual Studio:
- Spustí Kestrel Server.
- Spustí prohlížeč.
- Přejde na
http://localhost:port, napříkladhttp://localhost:7042.- port: náhodně přiřazené číslo portu pro aplikaci.
localhost: Standardní název hostitele pro místní počítač. Localhost obsluhuje pouze webové požadavky z místního počítače.
V protokolech se zobrazí služba, která naslouchá na https://localhost:7042 .
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:7042
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á pro použití protokolu TLS (Transport Layer Security). Klienti gRPC musí k volání serveru použít HTTPS. Číslo portu místního hostitele služby gRPC se náhodně přiřadí při vytvoření projektu a nastaví se v souboru Properties\launchSettings.json projektu služby gRPC.
macOS nepodporuje gRPC ASP.NET Core TLS. K úspěšnému spuštění služeb gRPC v macOS se vyžaduje další konfigurace. Další informace najdete v tématu Nelze spustit ASP.NET Core gRPC v systému macOS.
Prozkoumání souborů projektu
Soubory projektu GrpcGreeter:
- Protos/greet.proto: definuje gRPC a slouží k vygenerování
Greeterprostředků serveru gRPC. Další informace najdete v tématu Úvod do gRPC. - Složka Služby: Obsahuje implementaci
Greeterslužby. - appSettings.json: Obsahuje konfigurační data, jako je protokol používaný Kestrel . Další informace naleznete v tématu Konfigurace v ASP.NET Core.
- Soubor Program.cs, který obsahuje:
- Vstupní bod pro službu gRPC. Další informace naleznete 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 Visual Studio a vyberte Create a new project (Vytvořit nový projekt).
- V dialogovém okně Create a new project (Vytvořit nový projekt) vyberte Console Application (Konzolová aplikace) a vyberte Next (Další).
- Do textového Project name (Název souboru) zadejte GrpcGreeterClient a vyberte Next (Další).
- V dialogovém okně Další informace vyberte .NET 6.0 (Preview) a pak vyberte Vytvořit.
Přidání požadovaných NuGet balíčků
Projekt klienta gRPC vyžaduje následující NuGet balíčků:
- Grpc.Net.Client, který obsahuje klienta .NET Core.
- Google.Protobuf, který obsahuje rozhraní API zpráv protobuf pro C#.
- Grpc.Tools, které obsahují podporu nástrojů jazyka C# pro soubory protobuf. Balíček nástrojů se za běhu nevyžaduje, takže závislost je označená pomocí
PrivateAssets="All".
Balíčky nainstalujte pomocí konzoly Správce balíčků (PMC) nebo spravovat NuGet balíčků.
Možnost PMC pro instalaci balíčků
V Visual Studio vyberte Nástroje NuGet Správce balíčků > > Správce balíčků Console.
V okně Správce balíčků konzoly spusťte příkaz , který změní adresáře na složku obsahující soubory
cd GrpcGreeterClientGrpcGreeterClient.csproj.Spusťte následující příkazy:
Install-Package Grpc.Net.Client Install-Package Google.Protobuf Install-Package Grpc.Tools
Správa NuGet balíčků pro instalaci balíčků
- Klikněte pravým tlačítkem na projekt v Průzkumník řešení Spravovat > NuGet balíčky.
- Vyberte kartu Procházet.
- Do vyhledávacího pole zadejte Grpc.Net.Client.
- Na kartě Procházet vyberte balíček Grpc.Net.Client a pak vyberte Nainstalovat.
- Opakujte pro
Google.ProtobufaGrpc.Tools.
Přidání souboru greet.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ů
greet.protov souboru na obor názvů projektu:option csharp_namespace = "GrpcGreeterClient";Upravte soubor projektu GrpcGreeterClient.csproj:
Klikněte pravým tlačítkem na projekt a vyberte Upravit Project souboru.
Přidejte skupinu položek s
<Protobuf>elementem, 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 oboru
GrpcGreeternázvů . TypyGrpcGreeterjsou generovány automaticky procesem sestavení.Aktualizujte soubor Program.cs klienta 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();
Soubor Program.cs obsahuje vstupní bod a logiku pro klienta gRPC.
Klient Greeter vytvoří:
- Vytvoření instance obsahující
GrpcChannelinformace pro vytvoření připojení ke službě gRPC - Pomocí příkazu
GrpcChannelvytvořte klienta Greeter:
// The port number must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:7042");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
Klient Greeter volá asynchronní SayHello metodu. Zobrazí se SayHello výsledek volání:
// The port number must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:7042");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
Otestování klienta gRPC pomocí služby gRPC Greeter
- Ve službě Greeter stiskněte a
Ctrl+F5spusťte server bez ladicího programu. - V
GrpcGreeterClientprojektu stisknutímCtrl+F5klávesy spusťte klienta bez ladicího programu.
Klient pošle službě pozdrav se zprávou obsahující její název GreeterClient. Služba odešle jako odpověď zprávu "Hello GreeterClient". Na příkazovém řádku se zobrazí odpověď Hello GreeterClient:
Greeting: Hello GreeterClient
Press any key to exit...
Služba gRPC zaznamenává podrobnosti o úspěšném volání v protokolech napsaných do příkazového řádku:
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:7042
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:7042/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 certifikát ASP.NET Core HTTPS k zabezpečení služby gRPC. Pokud klient .NET gRPC selže se zprávou nebo The remote certificate is invalid according to the validation procedure. The SSL connection could not be established. , vývojový certifikát není důvěryhodný. Pokud chcete tento problém vyřešit, podívejte se na téma Volání služby gRPC s nedůvěryhodným nebo neplatným certifikátem.
Upozornění
ASP.NET Core gRPC má další požadavky pro použití s Azure App Service nebo službou IIS. Další informace o tom, kde lze použít gRPC, naleznete v tématu gRPC na platformách podporovaných .NET .
Další kroky
Tento kurz ukazuje, jak vytvořit klienta .NET Core gRPC a ASP.NET Core gRPC Server.
Na konci budete mít klienta gRPC, který komunikuje se službou gRPC Greeter.
Zobrazení nebo stažení ukázkového kódu (stažení).
V tomto kurzu jste:
- Vytvořte server gRPC.
- Vytvořte klienta gRPC.
- Otestujte službu klienta gRPC pomocí služby gRPC Greeter.
Požadavky
- Visual Studio 2019 16.8 nebo novější s úlohou vývoje ASP.NET a webu
- .NET 5.0 SDK
Vytvoření služby gRPC
- Spusťte Visual Studio a vyberte Create a new project (Vytvořit nový projekt).
- V dialogovém okně Create a new project (Vytvořit nový projekt) vyberte gRPC Service (Služba gRPC) a vyberte Next (Další).
- V dialogovém okně Configure your new project (Konfigurace nového
GrpcGreeterprojektu) zadejte Project name (Název projektu). Při kopírování a vkládání kódu je důležité projekt pojmnovat GrpcGreeter, aby se obory názvů shodují. - Vyberte Další.
- V dialogovém okně Další informace vyberte v rozevíracím seznamu Cílová rozhraní možnost .NET 5.0.
- Vyberte Vytvořit.
Spuštění služby
Stisknutím kombinace kláves Ctrl+F5 spusťte příkaz bez ladicího programu.
Visual Studio se zobrazí následující dialogové okno, pokud projekt ještě není nakonfigurovaný na použití SSL:

Vyberte Ano, pokud důvěřujete certifikátu IIS EXPRESS SSL.
Zobrazí se následující dialogové okno:

Pokud souhlasíte s důvěryhodností vývojového certifikátu, vyberte Ano.
Informace o důvěřování prohlížeči Firefox naleznete v tématu firefox SEC_ERROR_INADEQUATE_KEY_USAGE Chyba certifikátu.
Visual Studio spustí IIS Express a spustí aplikaci. V adresní řádku se
localhost:port#zobrazuje a ne něco jakoexample.com. Je to proto,localhostže je to standardní název hostitele pro místní počítač. Localhost slouží pouze k webovým požadavkům z místního počítače. Když Visual Studio vytvoří webový projekt, použije se pro webový server náhodný port.
V protokolech se zobrazí služba, která naslouchá na https://localhost:5001 .
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:5001
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
Poznámka
Šablona gRPC je nakonfigurovaná pro použití protokolu TLS (Transport Layer Security). Klienti gRPC musí k volání serveru použít HTTPS.
MacOS nepodporuje gRPC ASP.NET Core TLS. K úspěšnému spuštění služeb gRPC v macOS se vyžaduje další konfigurace. Další informace najdete v tématu Nelze spustit ASP.NET Core gRPC v systému macOS.
Prozkoumání souborů projektu
Soubory projektu GrpcGreeter:
- greet.proto: Soubor Protos/greet.proto definuje gRPC a slouží ke generování
Greeterprostředků serveru gRPC. Další informace najdete v tématu Úvod do gRPC. - Složka Služby: Obsahuje implementaci
Greeterslužby. - appSettings.json: Obsahuje konfigurační data, jako je protokol používaný Kestrel . Další informace naleznete v tématu Konfigurace v ASP.NET Core.
- Program.cs: Obsahuje vstupní bod pro službu gRPC. Další informace naleznete 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 Visual Studio a vyberte Create a new project (Vytvořit nový projekt).
- V dialogovém okně Create a new project (Vytvořit nový projekt) vyberte Console App (.NET Core) (Konzolová aplikace (.NET Core) a vyberte Next (Další).
- Do textového Project name (Název souboru) zadejte GrpcGreeterClient a vyberte Create (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 C#.
- Grpc.Tools, který obsahuje podporu nástrojů jazyka C# pro soubory protobuf. Balíček nástrojů se za běhu nevyžaduje, takže závislost je označená pomocí
PrivateAssets="All".
Balíčky nainstalujte pomocí konzoly Správce balíčků (PMC) nebo Spravovat NuGet balíčků.
Možnost pmc pro instalaci balíčků
V Visual Studio vyberte Nástroje NuGet Správce balíčků > > Správce balíčků Console.
V okně Správce balíčků konzoly spusťte příkaz , který změní adresáře na složku obsahující soubory
cd GrpcGreeterClientGrpcGreeterClient.csproj.Spusťte následující příkazy:
Install-Package Grpc.Net.Client Install-Package Google.Protobuf Install-Package Grpc.Tools
Správa NuGet balíčků pro instalaci balíčků
- Klikněte pravým tlačítkem na projekt v Průzkumník řešení Spravovat > NuGet balíčky.
- Vyberte kartu Procházet.
- Do vyhledávacího pole zadejte Grpc.Net.Client.
- Na kartě Procházet vyberte balíček Grpc.Net.Client a pak vyberte Nainstalovat.
- Opakujte pro
Google.ProtobufaGrpc.Tools.
Přidání souboru greet.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ů
greet.protov souboru na obor názvů projektu:option csharp_namespace = "GrpcGreeterClient";Upravte soubor projektu GrpcGreeterClient.csproj:
Klikněte pravým tlačítkem na projekt a vyberte Upravit Project souboru.
Přidejte skupinu položek s
<Protobuf>elementem, 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 oboru GrpcGreeter názvů . Typy GrpcGreeter jsou generovány automaticky procesem sestavení.
Aktualizujte soubor Program.cs klienta 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();
}
}
}
Soubor Program.cs obsahuje vstupní bod a logiku pro klienta gRPC.
Klient Greeter vytvoří:
- Vytvoření instance obsahující
GrpcChannelinformace pro vytvoření připojení ke službě gRPC - Pomocí příkazu
GrpcChannelvytvořte klienta Greeter:
static async Task Main(string[] args)
{
// The port number(5001) must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:5001");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
Klient Greeter volá asynchronní SayHello metodu. Zobrazí se SayHello výsledek volání:
static async Task Main(string[] args)
{
// The port number(5001) must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:5001");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
Otestování klienta gRPC pomocí služby gRPC Greeter
- Ve službě Greeter stiskněte a
Ctrl+F5spusťte server bez ladicího programu. - V
GrpcGreeterClientprojektu stisknutímCtrl+F5klávesy spusťte klienta bez ladicího programu.
Klient pošle službě pozdrav se zprávou obsahující její název GreeterClient. Služba odešle jako odpověď zprávu "Hello GreeterClient". Na příkazovém řádku se zobrazí odpověď Hello GreeterClient:
Greeting: Hello GreeterClient
Press any key to exit...
Služba gRPC zaznamenává podrobnosti o úspěšném volání v protokolech napsaný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 certifikát ASP.NET Core HTTPS k zabezpečení služby gRPC. Pokud klient .NET gRPC selže se zprávou nebo The remote certificate is invalid according to the validation procedure. The SSL connection could not be established. , vývojový certifikát není důvěryhodný. Pokud chcete tento problém vyřešit, podívejte se na téma Volání služby gRPC s nedůvěryhodným nebo neplatným certifikátem.
Upozornění
ASP.NET Core gRPC má další požadavky pro použití s Azure App Service nebo službou IIS. Další informace o tom, kde lze použít gRPC, naleznete v tématu gRPC na platformách podporovaných .NET .
Další kroky
Tento kurz ukazuje, jak vytvořit klienta .NET Core gRPC a ASP.NET Core gRPC Server.
Na konci budete mít klienta gRPC, který komunikuje se službou gRPC Greeter.
Zobrazení nebo stažení ukázkového kódu (stažení).
V tomto kurzu jste:
- Vytvořte server gRPC.
- Vytvořte klienta gRPC.
- Otestujte službu klienta gRPC pomocí služby gRPC Greeter.
Požadavky
Visual Studio 2019 16,4 nebo novější s úlohou vývoje ASP.NET a webu
Vytvoření služby gRPC
Spusťte Visual Studio a vyberte Create a new project (Vytvořit nový projekt). Případně v nabídce Visual Studio vyberte Nový soubor > Project.
V dialogovém okně Create a new project (Vytvořit nový projekt) vyberte gRPC Service (Služba gRPC) a vyberte Next (Další):

Projekt pojmechnte GrpcGreeter. Při kopírování a vkládání kódu je důležité projekt pojmnovat GrpcGreeter, aby se obory názvů shodují.
Vyberte Vytvořit.
V dialogovém okně Vytvořit novou službu gRPC:
- Je vybraná šablona služby gRPC.
- Vyberte Vytvořit.
Spuštění služby
Stisknutím kombinace kláves Ctrl+F5 spusťte příkaz bez ladicího programu.
Visual Studio se zobrazí následující dialogové okno, pokud projekt ještě není nakonfigurovaný na použití SSL:

Vyberte Ano, pokud důvěřujete certifikátu IIS EXPRESS SSL.
Zobrazí se následující dialogové okno:

Pokud souhlasíte s důvěryhodností vývojového certifikátu, vyberte Ano.
Informace o důvěřování prohlížeči Firefox naleznete v tématu firefox SEC_ERROR_INADEQUATE_KEY_USAGE Chyba certifikátu.
Visual Studio spustí IIS Express a spustí aplikaci. V adresní řádku se
localhost:port#zobrazuje a ne něco jakoexample.com. Je to proto,localhostže je to standardní název hostitele pro místní počítač. Localhost slouží pouze k webovým požadavkům z místního počítače. Když Visual Studio vytvoří webový projekt, použije se pro webový server náhodný port.
V protokolech se zobrazuje služba, 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). gRPC klienti potřebují pro volání serveru použít protokol HTTPS.
macOS nepodporuje ASP.NET Core gRPC s protokolem TLS. K úspěšnému spuštění gRPC služeb na macOS se vyžaduje další konfigurace. další informace najdete v tématu nepovedlo se spustit aplikaci ASP.NET Core gRPC v macOS.
Prověřte soubory projektu
Soubory projektu GrpcGreeter :
- Greeting. v tomto případě: soubor ... dedefinuje
GreetergRPC a slouží k vygenerování prostředků serveru gRPC. Další informace najdete v tématu Úvod do gRPC. - Složka služby : obsahuje implementaci
Greeterslužby. - appSettings. JSON: obsahuje konfigurační data, jako je například protokol používaný v Kestrel . Další informace naleznete v tématu Konfigurace v ASP.NET Core.
- Program. cs: obsahuje vstupní bod pro službu gRPC. Další informace naleznete v tématu Obecný hostitel .NET v ASP.NET Core.
- Startup. cs: obsahuje kód, který nakonfiguruje 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 Visual Studio a vyberte vytvořit nový projekt.
- V dialogovém okně vytvořit nový projekt vyberte Konzolová aplikace (.NET Core) a pak vyberte Další.
- do textového pole název Project zadejte GrpcGreeterClient a vyberte vytvořit.
Přidat požadované balíčky
Projekt klienta gRPC vyžaduje následující balíčky:
- Grpc .NET. Client, který obsahuje klienta .NET Core.
- Google. Protobuf, která obsahuje rozhraní API pro zprávy Protobuf pro C#.
- Grpc. Tools, které obsahují podporu nástrojů C# pro soubory protobuf. Balíček nástrojů se za běhu nevyžaduje, takže závislost je označená jako
PrivateAssets="All".
nainstalujte balíčky pomocí konzoly Správce balíčků (PMC) nebo spravujte balíčky NuGet.
Možnost PMC pro instalaci balíčků
z Visual Studio vyberte nástroje > NuGet Správce balíčků > Správce balíčků konzole .
z okna konzoly Správce balíčků spusťte příkaz
cd GrpcGreeterClientpro změnu adresáře do složky obsahující soubory GrpcGreeterClient. csproj .Spusťte následující příkazy:
Install-Package Grpc.Net.Client Install-Package Google.Protobuf Install-Package Grpc.Tools
možnost spravovat balíčky NuGet pro instalaci balíčků
- klikněte pravým tlačítkem na projekt v Průzkumník řešení > spravovat balíčky NuGet.
- Vyberte kartu Procházet.
- Do vyhledávacího pole zadejte Grpc .NET. Client .
- Na kartě Procházet vyberte balíček Grpc .NET. Client a vyberte nainstalovat.
- Opakujte pro
Google.ProtobufaGrpc.Tools.
Přidat pozdrav. proto
V klientském projektu gRPC vytvořte složku.
Zkopírujte soubor Protos\greet.proto ze služby gRPC Greeter do složky ta v klientském projektu gRPC.
Aktualizujte obor názvů uvnitř
greet.protosouboru na obor názvů projektu:option csharp_namespace = "GrpcGreeterClient";Upravte soubor projektu GrpcGreeterClient. csproj :
klikněte pravým tlačítkem na projekt a vyberte upravit Project soubor.
Přidejte skupinu položek s
<Protobuf>prvkem, který odkazuje na soubor Greeting. dekáže:<ItemGroup> <Protobuf Include="Protos\greet.proto" GrpcServices="Client" /> </ItemGroup>
Vytvoření klienta Greeter
Sestavte projekt klienta pro vytvoření typů v GrpcGreeter oboru názvů. GrpcGreeterTypy jsou generovány automaticky procesem sestavení.
Aktualizujte soubor gRPC klientského programu. cs pomocí následujícího kódu:
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 s pozdravem vytvořil:
- Vytvoří se instance
GrpcChannelobsahující informace pro vytvoření připojení ke službě gRPC. - Použití
GrpcChannelke konstrukci 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();
}
Test klienta gRPC pomocí služby gRPC Greeter
- Ve službě Greeter stiskněte klávesu
Ctrl+F5a spusťte server bez ladicího programu. - V
GrpcGreeterClientprojektu stisknutím klávesyCtrl+F5Spusťte klienta bez ladicího programu.
Klient pošle službě pozdrav se zprávou obsahující její název GreeterClient. Služba odešle jako odpověď zprávu "Hello GreeterClient". Na příkazovém řádku se zobrazí odpověď Hello GreeterClient:
Greeting: Hello GreeterClient
Press any key to exit...
Služba gRPC zaznamenává podrobnosti o úspěšném volání v protokolech napsaný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 certifikát ASP.NET Core HTTPS k zabezpečení služby gRPC. Pokud klient .NET gRPC selže se zprávou nebo The remote certificate is invalid according to the validation procedure. The SSL connection could not be established. , vývojový certifikát není důvěryhodný. Pokud chcete tento problém vyřešit, podívejte se na téma Volání služby gRPC s nedůvěryhodným nebo neplatným certifikátem.
Upozornění
ASP.NET Core gRPC má další požadavky pro použití s Azure App Service nebo službou IIS. Další informace o tom, kde lze použít gRPC, naleznete v tématu gRPC na platformách podporovaných .NET .




