Sdílet prostřednictvím


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

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:

    Tento projekt je nakonfigurovaný tak, aby používal PROTOKOL SSL. Abyste se vyhnuli upozorněním SSL v prohlížeči, můžete se rozhodnout důvěřovat certifikátu podepsanému svým držitelem, který služba IIS Express vygenerovala. Chcete důvěřovat certifikátu SSL služby IIS Express?

    Pokud důvěřujete certifikátu SSL služby IIS Express, vyberte Ano .

    Zobrazí se následující dialogové okno:

    Dialogové okno upozornění zabezpečení

    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říklad http://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

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: definuje Greeter 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 implementaci Greeter 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:

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 a Grpc.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 číslem HTTPS portu zadaným v Properties/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ím Ctrl+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

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:

    Tento projekt je nakonfigurovaný tak, aby používal PROTOKOL SSL. Abyste se vyhnuli upozorněním SSL v prohlížeči, můžete se rozhodnout důvěřovat certifikátu podepsanému svým držitelem, který služba IIS Express vygenerovala. Chcete důvěřovat certifikátu SSL služby IIS Express?

    Pokud důvěřujete certifikátu SSL služby IIS Express, vyberte Ano .

    Zobrazí se následující dialogové okno:

    Dialogové okno upozornění zabezpečení

    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říklad http://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

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: definuje Greeter 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 implementaci Greeter 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:

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 a Grpc.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 číslem HTTPS portu zadaným v Properties/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ím Ctrl+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

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:

    Tento projekt je nakonfigurovaný tak, aby používal PROTOKOL SSL. Abyste se vyhnuli upozorněním SSL v prohlížeči, můžete se rozhodnout důvěřovat certifikátu podepsanému svým držitelem, který služba IIS Express vygenerovala. Chcete důvěřovat certifikátu SSL služby IIS Express?

    Pokud důvěřujete certifikátu SSL služby IIS Express, vyberte Ano .

    Zobrazí se následující dialogové okno:

    Dialogové okno upozornění zabezpečení

    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říklad http://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

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: definuje Greeter 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 implementaci Greeter 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:

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 a Grpc.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 číslem HTTPS portu zadaným v Properties/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ím Ctrl+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

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:

    Tento projekt je nakonfigurovaný tak, aby používal PROTOKOL SSL. Abyste se vyhnuli upozorněním SSL v prohlížeči, můžete se rozhodnout důvěřovat certifikátu podepsanému svým držitelem, který služba IIS Express vygenerovala. Chcete důvěřovat certifikátu SSL služby IIS Express?

    Pokud důvěřujete certifikátu SSL služby IIS Express, vyberte Ano .

    Zobrazí se následující dialogové okno:

    Dialogové okno upozornění zabezpečení

    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 jako example.com. Je to proto, že localhost 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 a Grpc.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ím Ctrl+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

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ší:

    Dialogové okno Vytvořit nový projekt v sadě Visual Studio

  • 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:

    Tento projekt je nakonfigurovaný tak, aby používal PROTOKOL SSL. Abyste se vyhnuli upozorněním SSL v prohlížeči, můžete se rozhodnout důvěřovat certifikátu podepsanému svým držitelem, který služba IIS Express vygenerovala. Chcete důvěřovat certifikátu SSL služby IIS Express?

    Pokud důvěřujete certifikátu SSL služby IIS Express, vyberte Ano .

    Zobrazí se následující dialogové okno:

    Dialogové okno upozornění zabezpečení

    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 jako example.com. Je to proto, že localhost 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 a Grpc.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ím Ctrl+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