Megosztás a következőn keresztül:


Oktatóanyag: GRPC-ügyfél és -kiszolgáló létrehozása a ASP.NET Core-ban

Ez az oktatóanyag bemutatja, hogyan hozhat létre .NET Core-gRPC--ügyfelet és ASP.NET Core gRPC-kiszolgálót. A végén lesz egy gRPC-ügyfél, amely kommunikál a gRPC Greeter szolgáltatással.

Ebben az oktatóanyagban ön:

  • Hozzon létre egy gRPC-kiszolgálót.
  • Hozzon létre egy gRPC-ügyfelet.
  • Tesztelje a gRPC-ügyfelet a gRPC Greeter szolgáltatással.

Előfeltételek

GRPC-szolgáltatás létrehozása

  • Indítsa el a Visual Studio 2022-t, és válassza Új projektlehetőséget.
  • Az Új projekt létrehozása párbeszédpanelen keresse meg a gRPC. Válassza a ASP.NET Core gRPC Service, majd a Következőlehetőséget.
  • Az Új projekt konfigurálása párbeszédpanelen adja meg GrpcGreeterProjektnév. Fontos, hogy a projekt neve GrpcGreeter, hogy a névterek egyezzenek a kód másolása és beillesztése során.
  • Válassza Következőlehetőséget.
  • A További információk párbeszédpanelen válassza .NET 9.0 (Standard kifejezéstámogatás), majd válassza a létrehozása lehetőséget.

A szolgáltatás futtatása

  • Nyomja le a Ctrl+F5 billentyűkombinációt a hibakereső nélküli futtatáshoz.

    A Visual Studio az alábbi párbeszédpanelt jeleníti meg, ha egy projekt még nincs ssl használatára konfigurálva:

    Ez a projekt SSL használatára van konfigurálva. Az SSL-figyelmeztetések elkerülése érdekében a böngészőben megadhatja, hogy megbízik-e az IIS Express által létrehozott önaláírt tanúsítványban. Megbízik az IIS Express SSL-tanúsítványban?

    Válassza Igen lehetőséget, ha megbízik az IIS Express SSL-tanúsítványban.

    A következő párbeszédpanel jelenik meg:

    Biztonsági figyelmeztetés párbeszédpanel

    Válassza Igen lehetőséget, ha elfogadja, hogy megbízik a fejlesztési tanúsítványban.

    A Firefox böngésző megbízhatóságáról további információt a Firefox SEC_ERROR_INADEQUATE_KEY_USAGE tanúsítványhibacímű témakörben talál.

    Visual Studio:

    • Elindítja Kestrel kiszolgálót.
    • Elindít egy böngészőt.
    • a http://localhost:portelemhez, például a http://localhost:7042elemhez navigál.
      • port: Az alkalmazás véletlenszerűen hozzárendelt portszáma.
      • localhost: A helyi számítógép szokásos állomásneve. A Localhost csak a helyi számítógépről érkező webes kéréseket szolgálja ki.

A naplók azt mutatják, hogy a szolgáltatás a https://localhost:<port>porton figyel, ahol <port> a localhost portszám, amelyet véletlenszerűen rendelnek hozzá, amikor a projekt létrejön, és létre van hozva a Properties/launchSettings.json-ben.

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

Jegyzet

A gRPC-sablon Transport Layer Security (TLS)használatára van konfigurálva. A gRPC-ügyfeleknek HTTPS-t kell használniuk a kiszolgáló meghívásához. A gRPC szolgáltatás localhost portszámát véletlenszerűen rendelik hozzá a projekt létrehozásakor, és a gRPC szolgáltatás projektjének fájlában a Tulajdonságok\launchSettings.jsrészben van beállítva.

A projektfájlok vizsgálata

GrpcGreeter projektfájlok:

  • Protos/greet.proto: meghatározza a Greeter gRPC-t, és a gRPC-kiszolgáló eszközeinek létrehozására szolgál. További információ: Bevezetés a gRPC.
  • Services mappa: A Greeter szolgáltatás implementációját tartalmazza.
  • appSettings.json: Olyan konfigurációs adatokat tartalmaz, mint a Kestreláltal használt protokoll. További információért lásd: Konfiguráció az ASP.NET Core-ban.
  • Program.cs, amely a következőket tartalmazza:

A gRPC-ügyfél létrehozása .NET-konzolalkalmazásban

  • Nyissa meg a Visual Studio egy második példányát, és válassza Új projektlehetőséget.
  • Az Új projekt létrehozása párbeszédpanelen válassza a Konzolalkalmazáslehetőséget, majd válassza a Továbblehetőséget.
  • A Projekt neve szövegmezőbe írja be GrpcGreeterClient, és válassza Továbblehetőséget.
  • A További információk párbeszédpanelen válassza .NET 9.0 (Standard kifejezéstámogatás), majd válassza a létrehozása lehetőséget.

Szükséges NuGet-csomagok hozzáadása

A gRPC-ügyfélprojekthez a következő NuGet-csomagok szükségesek:

  • Grpc.Net.Client, amely tartalmazza a .NET Core-ügyfelet.
  • Google.Protobuf, amely a C# protobuf üzenet API-jait tartalmazza.
  • Grpc.Tools, amely c# eszközkészlet-támogatást tartalmaz a protobuf fájlokhoz. Futásidőben nincs szükség az eszközcsomagra, ezért a függőség PrivateAssets="All"van megjelölve.

Telepítse a csomagokat a Package Manager-konzol (PMC) vagy a NuGet-csomagok kezelése használatával.

PMC-lehetőség csomagok telepítéséhez

  • A Visual Studióban válassza Eszközök>NuGet Package Manager>Package Manager-konzol

  • A Csomagkezelő konzol ablakában futtassa a cd GrpcGreeterClient, hogy a könyvtárakat a GrpcGreeterClient.csproj fájlokat tartalmazó mappára módosítsa.

  • Futtassa a következő parancsokat:

    Install-Package Grpc.Net.Client
    Install-Package Google.Protobuf
    Install-Package Grpc.Tools
    

NuGet csomagok kezelésének lehetősége csomagok telepítéséhez

  • Kattintson a jobb gombbal a projektre Megoldáskezelőben>NuGet-csomagok kezelése.
  • Válassza a Tallózás lapot.
  • A keresőmezőbe írja be Grpc.Net.Client.
  • Válassza a Grpc.Net.Client csomagot a Tallózás lapon, és válassza a Telepítéslehetőséget.
  • Ismételje meg a Google.Protobuf-ra és a Grpc.Tools-re.

Greet.proto hozzáadása

  • Hozzon létre egy Protos mappát a gRPC-ügyfélprojektben.

  • Másolja a Protos\greet.proto fájlt a gRPC Greeter szolgáltatásból a gRPC-ügyfélprojekt Protos mappájába.

  • Frissítse a greet.proto fájlban lévő névteret a projekt névterére:

    option csharp_namespace = "GrpcGreeterClient";
    
  • A GrpcGreeterClient.csproj projektfájl szerkesztése:

Kattintson a jobb gombbal a projektre, és válassza a Projektfájl szerkesztéselehetőséget.

  • A greet.proto fájlra hivatkozó <Protobuf> elemet tartalmazó elemcsoport hozzáadása:

    <ItemGroup>
      <Protobuf Include="Protos\greet.proto" GrpcServices="Client" />
    </ItemGroup>
    

A Greeter-ügyfél létrehozása

  • Hozza létre az ügyfélprojektet a GrpcGreeterClient névtérben lévő típusok létrehozásához.

Jegyzet

A GrpcGreeterClient típusokat a buildelési folyamat automatikusan létrehozza. Az eszközcsomag Grpc.Tools a greet.proto fájl alapján a következő fájlokat hozza létre:

  • GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs: A protokoll pufferkódja, amely feltölti, szerializálja és lekéri a kérés- és válaszüzenet-típusokat.
  • GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs: A létrehozott ügyfélosztályokat tartalmazza.

Az Grpc.Toolsáltal automatikusan létrehozott C#-elemekkel kapcsolatos további információkért lásd a gRPC-szolgáltatások C#: Generált C#-elemekkel.

  • Frissítse a gRPC-ügyfél Program.cs fájlt a következő kóddal.

    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();
    
  • Az előző kiemelt kódban cserélje le a localhost port számát 7042 a GrpcGreeter szolgáltatásprojekt Properties/launchSettings.json megadott HTTPS portszámára.

Program.cs tartalmazza a gRPC-ügyfél belépési pontját és logikáját.

A Greeter-ügyfelet a következő hozza létre:

  • Példányosítás egy olyan GrpcChannel-t, amely tartalmazza a gRPC szolgáltatáshoz való kapcsolat létrehozásához szükséges információkat.
  • A Greeter-ügyfél létrehozásához használja a GrpcChannel:
// 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();

A Greeter-ügyfél az aszinkron SayHello metódust hívja meg. Megjelenik a SayHello hívás eredménye:

// 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();

A gRPC-ügyfél tesztelése a gRPC Greeter szolgáltatással

Frissítse a appsettings.Development.json fájlt a következő kiemelt sorok hozzáadásával:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning",
      "Microsoft.AspNetCore.Hosting": "Information",
      "Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information"
    }
  }
}
  • A GrpcGreeter szolgáltatásprojektben nyomja meg a Ctrl+F5-et a kiszolgáló elindításához hibakereső nélkül.
  • Nyomja le a Ctrl+F5-t a GrpcGreeterClient konzolprojektben az ügyfél elindításához hibakereső nélkül.

Az ügyfél egy üdvözletet küld a szolgáltatásnak egy olyan üzenettel, amely tartalmazza a nevét, GreeterClient . A szolgáltatás válaszként elküldi a "Hello GreeterClient" üzenetet. A "Hello GreeterClient" válasz megjelenik a parancssorban:

Greeting: Hello GreeterClient
Press any key to exit...

A gRPC szolgáltatás a parancssorba írt naplókban rögzíti a sikeres hívás részleteit:

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

Jegyzet

A cikkben szereplő kódhoz a ASP.NET Core HTTPS fejlesztői tanúsítvány szükséges a gRPC szolgáltatás védelméhez. Ha a .NET gRPC-ügyfél a The remote certificate is invalid according to the validation procedure. vagy The SSL connection could not be established.üzenettel hiúsul meg, a fejlesztési tanúsítvány nem megbízható. A probléma megoldásához lásd: GRPC-szolgáltatás meghívása nem megbízható/érvénytelen tanúsítvánnyal.

Következő lépések

Ez az oktatóanyag bemutatja, hogyan hozhat létre .NET Core-gRPC--ügyfelet és ASP.NET Core gRPC-kiszolgálót. A végén lesz egy gRPC-ügyfél, amely kommunikál a gRPC Greeter szolgáltatással.

Ebben az oktatóanyagban ön:

  • Hozzon létre egy gRPC-kiszolgálót.
  • Hozzon létre egy gRPC-ügyfelet.
  • Tesztelje a gRPC-ügyfelet a gRPC Greeter szolgáltatással.

Előfeltételek

GRPC-szolgáltatás létrehozása

  • Indítsa el a Visual Studio 2022-t, és válassza Új projektlehetőséget.
  • Az Új projekt létrehozása párbeszédpanelen keressen rá a gRPCkifejezésre. Válassza a ASP.NET Core gRPC Service, majd a Következőlehetőséget.
  • Az Új projekt konfigurálása párbeszédpanelen adja meg a projekt nevétGrpcGreeter. Fontos, hogy a projekt neve GrpcGreeter, hogy a névterek egyezzenek a kód másolása és beillesztése során.
  • Válassza Következőlehetőséget.
  • A További információk párbeszédpanelen válassza .NET 8.0 (hosszú távú támogatás), majd válassza a létrehozása lehetőséget.

A szolgáltatás futtatása

  • Nyomja le a Ctrl+F5 billentyűkombinációt a hibakereső nélküli futtatáshoz.

    A Visual Studio az alábbi párbeszédpanelt jeleníti meg, ha egy projekt még nincs ssl használatára konfigurálva:

    Ez a projekt SSL használatára van konfigurálva. Az SSL-figyelmeztetések elkerülése érdekében a böngészőben megadhatja, hogy megbízik-e az IIS Express által létrehozott önaláírt tanúsítványban. Megbízik az IIS Express SSL-tanúsítványban?

    Válassza Igen lehetőséget, ha megbízik az IIS Express SSL-tanúsítványban.

    A következő párbeszédpanel jelenik meg:

    Biztonsági figyelmeztetés párbeszédpanel

    Válassza Igen lehetőséget, ha elfogadja, hogy megbízik a fejlesztési tanúsítványban.

    A Firefox böngésző megbízhatóságáról további információt a Firefox SEC_ERROR_INADEQUATE_KEY_USAGE tanúsítványhibacímű témakörben talál.

    Visual Studio:

    • Elindítja Kestrel kiszolgálót.
    • Elindít egy böngészőt.
    • Navigál a http://localhost:port-ra, például a(z) http://localhost:7042-re.
      • port: Az alkalmazás véletlenszerűen hozzárendelt portszáma.
      • localhost: A helyi számítógép szokásos állomásneve. A Localhost csak a helyi számítógépről érkező webes kéréseket szolgálja ki.

A naplók a szolgáltatás figyelését mutatják a https://localhost:<port>porton, ahol <port> a localhost portszám, amelyet a projekt létrehozásakor véletlenszerűen rendelnek hozzá és állítanak be a(z) Properties/launchSettings.json-ben.

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

Jegyzet

A gRPC-sablon Transport Layer Security (TLS)használatára van konfigurálva. A gRPC-ügyfeleknek HTTPS-t kell használniuk a kiszolgáló meghívásához. A gRPC szolgáltatás localhost portszáma véletlenszerűen kerül hozzárendelésre a projekt létrehozásakor, és a gRPC-szolgáltatásprojekt fájl tulajdonságainál, a Tulajdonságok\launchSettings.jsközött van beállítva.

A projektfájlok vizsgálata

GrpcGreeter projektfájlok:

  • Protos/greet.proto: meghatározza a Greeter gRPC-t, és a gRPC-kiszolgáló eszközeinek létrehozására szolgál. További információért lásd: Bevezetés a gRPC-be.
  • Services mappa: A Greeter szolgáltatás implementációját tartalmazza.
  • appSettings.json: Olyan konfigurációs adatokat tartalmaz, mint a Kestreláltal használt protokoll. További információkért lásd: Konfiguráció az ASP.NET Core-ban.
  • Program.cs, amely a következőket tartalmazza:

A gRPC-ügyfél létrehozása .NET-konzolalkalmazásban

  • Nyissa meg a Visual Studio egy második példányát, és válassza Új projektlehetőséget.
  • Az Új projekt létrehozása párbeszédpanelen válassza a Konzolalkalmazáslehetőséget, majd válassza a Továbblehetőséget.
  • A Projekt neve szövegmezőbe írja be GrpcGreeterClient, és válassza Továbblehetőséget.
  • A További információk párbeszédpanelen válassza a .NET 8.0 (hosszú távú támogatás) elemet, majd kattintson a Létrehozásgombra.

Szükséges NuGet-csomagok hozzáadása

A gRPC-ügyfélprojekthez a következő NuGet-csomagok szükségesek:

  • Grpc.Net.Client, amely tartalmazza a .NET Core-ügyfelet.
  • Google.Protobuf, amely a C# protobuf üzenet API-jait tartalmazza.
  • Grpc.Tools, amely c# eszközkészlet-támogatást tartalmaz a protobuf fájlokhoz. Futásidőben nincs szükség az eszközcsomagra, ezért a függőség PrivateAssets="All"van megjelölve.

Telepítse a csomagokat a Package Manager-konzol (PMC) vagy a NuGet-csomagok kezelése használatával.

PMC-lehetőség csomagok telepítéséhez

  • A Visual Studióban válassza Eszközök>NuGet Package Manager>Package Manager-konzol

  • A Csomagkezelő konzol ablakában futtassa a cd GrpcGreeterClient, hogy a könyvtárakat a GrpcGreeterClient.csproj fájlokat tartalmazó mappára módosítsa.

  • Futtassa a következő parancsokat:

    Install-Package Grpc.Net.Client
    Install-Package Google.Protobuf
    Install-Package Grpc.Tools
    

"NuGet csomagok kezelése opció a csomagok telepítéséhez"

  • Kattintson a jobb gombbal a projektre Megoldáskezelőben>NuGet-csomagok kezelése.
  • Válassza a Tallózás lapot.
  • A keresőmezőbe írja be Grpc.Net.Client.
  • Válassza a Grpc.Net.Client csomagot a Tallózás lapon, és válassza a Telepítéslehetőséget.
  • Ismételje meg a Google.Protobuf és a Grpc.Toolsesetében.

Greet.proto hozzáadása

  • Hozzon létre egy Protos mappát a gRPC-ügyfélprojektben.

  • Másolja a Protos\greet.proto fájlt a gRPC Greeter szolgáltatásból a gRPC-ügyfélprojekt Protos mappájába.

  • Frissítse a greet.proto fájlban lévő névteret a projekt névterére:

    option csharp_namespace = "GrpcGreeterClient";
    
  • A GrpcGreeterClient.csproj projektfájl szerkesztése:

Kattintson a jobb gombbal a projektre, és válassza a Projektfájl szerkesztéselehetőséget.

  • A greet.proto fájlra hivatkozó <Protobuf> elemet tartalmazó elemcsoport hozzáadása:

    <ItemGroup>
      <Protobuf Include="Protos\greet.proto" GrpcServices="Client" />
    </ItemGroup>
    

A Greeter-ügyfél létrehozása

  • Hozza létre az ügyfélprojektet a GrpcGreeterClient névtérben lévő típusok létrehozásához.

Jegyzet

A GrpcGreeterClient típusokat a buildelési folyamat automatikusan létrehozza. Az eszközcsomag Grpc.Tools a greet.proto fájl alapján a következő fájlokat hozza létre:

  • GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs: A protokoll pufferkódja, amely feltölti, szerializálja és lekéri a kérés- és válaszüzenet-típusokat.
  • GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs: A létrehozott ügyfélosztályokat tartalmazza.

Az Grpc.Toolsáltal automatikusan létrehozott C# eszközökkel kapcsolatos további információkért lásd a gRPC-szolgáltatásokat a C#-val: Létrehozott C# eszközök.

  • Frissítse a gRPC-ügyfél Program.cs fájlt a következő kóddal.

    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();
    
  • Az előző kiemelt kódban cserélje le a localhost port számát 7042 a GrpcGreeter szolgáltatásprojekt Properties/launchSettings.json megadott HTTPS portszámára.

Program.cs tartalmazza a gRPC-ügyfél belépési pontját és logikáját.

A Greeter-ügyfelet a következő hozza létre:

  • Példányosítás egy GrpcChannel-t, amely tartalmazza a gRPC szolgáltatáshoz való kapcsolat létrehozásához szükséges információkat.
  • A Greeter-ügyfél létrehozásához használja a GrpcChannel:
// 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();

A Greeter-ügyfél az aszinkron SayHello metódust hívja meg. Megjelenik a SayHello hívás eredménye:

// 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();

A gRPC-ügyfél tesztelése a gRPC Greeter szolgáltatással

Frissítse a appsettings.Development.json fájlt a következő kiemelt sorok hozzáadásával:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
      ,"Microsoft.AspNetCore.Hosting": "Information",
      "Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information"
    }
  }
}
  • A Greeter szolgáltatásban nyomja le a Ctrl+F5 a kiszolgáló hibakereső nélküli elindításához.
  • A GrpcGreeterClient projektben nyomja le a Ctrl+F5 billentyűt az ügyfél hibakereső nélküli elindításához.

Az ügyfél a greeterclient nevű üzenetet küld a szolgáltatásnak. A szolgáltatás válaszként elküldi a "Hello GreeterClient" üzenetet. A "Hello GreeterClient" válasz megjelenik a parancssorban:

Greeting: Hello GreeterClient
Press any key to exit...

A gRPC szolgáltatás a parancssorba írt naplókban rögzíti a sikeres hívás részleteit:

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

Jegyzet

A cikkben szereplő kódhoz a ASP.NET Core HTTPS fejlesztői tanúsítvány szükséges a gRPC szolgáltatás védelméhez. Ha a .NET gRPC-ügyfél a The remote certificate is invalid according to the validation procedure. vagy The SSL connection could not be established.üzenettel hiúsul meg, a fejlesztési tanúsítvány nem megbízható. A probléma megoldásához lásd: GRPC-szolgáltatás meghívása nem megbízható/érvénytelen tanúsítvánnyal.

Következő lépések

Ez az oktatóanyag bemutatja, hogyan hozhat létre .NET Core-gRPC--ügyfelet és ASP.NET Core gRPC-kiszolgálót. A végén lesz egy gRPC-ügyfél, amely kommunikál a gRPC Greeter szolgáltatással.

Ebben az oktatóanyagban ön:

  • Hozzon létre egy gRPC-kiszolgálót.
  • Hozzon létre egy gRPC-ügyfelet.
  • Tesztelje a gRPC-ügyfelet a gRPC Greeter szolgáltatással.

Előfeltételek

GRPC-szolgáltatás létrehozása

  • Indítsa el a Visual Studio 2022-t, és válassza Új projekt létrehozásalehetőséget.
  • Az Új projekt létrehozása párbeszédpanelen keresse meg a gRPCelemet. Válassza a ASP.NET Core gRPC Service, majd a Következőlehetőséget.
  • Az Új projekt konfigurálása párbeszédpanelen adja meg a GrpcGreeter értéket a Projektnév-hez. Fontos, hogy a projekt neve GrpcGreeter, hogy a névterek egyezzenek a kód másolása és beillesztése során.
  • Válassza a Következőlehetőséget.
  • A További információ párbeszédpanelen válassza .NET 6.0 (Hosszú távú támogatás), majd válassza a létrehozása lehetőséget.

A szolgáltatás futtatása

  • Nyomja le a Ctrl+F5 billentyűkombinációt a hibakereső nélküli futtatáshoz.

    A Visual Studio az alábbi párbeszédpanelt jeleníti meg, ha egy projekt még nincs ssl használatára konfigurálva:

    Ez a projekt SSL használatára van konfigurálva. Az SSL-figyelmeztetések elkerülése érdekében a böngészőben megadhatja, hogy megbízik-e az IIS Express által létrehozott önaláírt tanúsítványban. Megbízik az IIS Express SSL-tanúsítványban?

    Válassza Igen lehetőséget, ha megbízik az IIS Express SSL-tanúsítványban.

    A következő párbeszédpanel jelenik meg:

    Biztonsági figyelmeztetés párbeszédpanel

    Válassza Igen lehetőséget, ha elfogadja, hogy megbízik a fejlesztési tanúsítványban.

    A Firefox böngésző megbízhatóságáról további információt a Firefox SEC_ERROR_INADEQUATE_KEY_USAGE tanúsítványhibacímű témakörben talál.

    Visual Studio:

    • Elindítja Kestrel kiszolgálót.
    • Elindít egy böngészőt.
    • Átnavigál a http://localhost:port-hoz, például http://localhost:7042-hez.
      • port: Az alkalmazás véletlenszerűen hozzárendelt portszáma.
      • localhost: A helyi számítógép szokásos állomásneve. A Localhost csak a helyi számítógépről érkező webes kéréseket szolgálja ki.

A naplók azt mutatják, hogy a szolgáltatás a https://localhost:<port>porton figyel, ahol <port> a localhost véletlenszerűen hozzárendelt portszám a projekt létrehozásakor, és be van állítva a Properties/launchSettings.json-ben.

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

Jegyzet

A gRPC-sablon Transport Layer Security (TLS)használatára van konfigurálva. A gRPC-ügyfeleknek HTTPS-t kell használniuk a kiszolgáló meghívásához. A gRPC szolgáltatás localhost portszáma véletlenszerűen van kijelölve a projekt létrehozásakor, és beállítva a fájl Tulajdonságok\launchSettings.jsrészében a gRPC szolgáltatás projekten belül.

a macOS nem támogatja ASP.NET Core gRPC-t TLS-lel. További konfigurációra van szükség a gRPC-szolgáltatások macOS rendszeren történő sikeres futtatásához. További információ: Nem indítható el ASP.NET Core gRPC-alkalmazás macOS.

A projektfájlok vizsgálata

GrpcGreeter projektfájlokat :

  • Protos/greet.proto: meghatározza a Greeter gRPC-t, és a gRPC-kiszolgáló eszközeinek létrehozására szolgál. További információkért lásd: Bevezetés a gRPC-be.
  • Services mappa: A Greeter szolgáltatás implementációját tartalmazza.
  • appSettings.json: Olyan konfigurációs adatokat tartalmaz, mint a Kestreláltal használt protokoll. További információért lásd a ASP.NET Corekonfigurációját.
  • Program.cs, amely a következőket tartalmazza:

A gRPC-ügyfél létrehozása .NET-konzolalkalmazásban

  • Nyissa meg a Visual Studio egy második példányát, és válassza Új projekt létrehozásalehetőséget.
  • Az Új projekt létrehozása párbeszédpanelen válassza a Konzolalkalmazáslehetőséget, majd válassza a Továbblehetőséget.
  • A Projekt neve szövegmezőbe írja be GrpcGreeterClient, és válassza Továbblehetőséget.
  • A További információ párbeszédpanelen válassza .NET 6.0 (Hosszú távú támogatás), majd válassza a létrehozás opciót.

Szükséges NuGet-csomagok hozzáadása

A gRPC-ügyfélprojekthez a következő NuGet-csomagok szükségesek:

  • Grpc.Net.Client, amely tartalmazza a .NET Core-ügyfelet.
  • Google.Protobuf, amely a C# protobuf üzenet API-jait tartalmazza.
  • Grpc.Tools, amely c# eszközkészlet-támogatást tartalmaz a protobuf fájlokhoz. Futásidőben nincs szükség az eszközcsomagra, ezért a függőség PrivateAssets="All"van megjelölve.

Telepítse a csomagokat a Package Manager-konzol (PMC) vagy a NuGet-csomagok kezelése használatával.

PMC-lehetőség csomagok telepítéséhez

  • A Visual Studióban válassza Eszközök>NuGet Package Manager>Package Manager-konzol

  • A Csomagkezelő konzol ablakában futtassa a cd GrpcGreeterClient, hogy a könyvtárakat a GrpcGreeterClient.csproj fájlokat tartalmazó mappára módosítsa.

  • Futtassa a következő parancsokat:

    Install-Package Grpc.Net.Client
    Install-Package Google.Protobuf
    Install-Package Grpc.Tools
    

NuGet csomagok kezelési opció a csomagok telepítéséhez

  • Kattintson a jobb gombbal a projektre Megoldáskezelőben>NuGet-csomagok kezelése.
  • Válassza a Tallózás lapot.
  • A keresőmezőbe írja be Grpc.Net.Client.
  • Válassza a Grpc.Net.Client csomagot a Tallózás lapon, és válassza a Telepítéslehetőséget.
  • Ismételje meg a Google.Protobuf és Grpc.Toolsesetén.

Greet.proto hozzáadása

  • Hozzon létre egy Protos mappát a gRPC-ügyfélprojektben.

  • Másolja a Protos\greet.proto fájlt a gRPC Greeter szolgáltatásból a gRPC-ügyfélprojekt Protos mappájába.

  • Frissítse a greet.proto fájlban lévő névteret a projekt névterére:

    option csharp_namespace = "GrpcGreeterClient";
    
  • A GrpcGreeterClient.csproj projektfájl szerkesztése:

Kattintson a jobb gombbal a projektre, és válassza a Projektfájl szerkesztéselehetőséget.

  • A greet.proto fájlra hivatkozó <Protobuf> elemet tartalmazó elemcsoport hozzáadása:

    <ItemGroup>
      <Protobuf Include="Protos\greet.proto" GrpcServices="Client" />
    </ItemGroup>
    

A Greeter-ügyfél létrehozása

  • Hozza létre az ügyfélprojektet a GrpcGreeterClient névtérben lévő típusok létrehozásához.

Jegyzet

A GrpcGreeterClient típusokat a buildelési folyamat automatikusan létrehozza. Az eszközcsomag Grpc.Tools a greet.proto fájl alapján a következő fájlokat hozza létre:

  • GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs: A protokoll pufferkódja, amely feltölti, szerializálja és lekéri a kérés- és válaszüzenet-típusokat.
  • GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs: A létrehozott ügyfélosztályokat tartalmazza.

Az Grpc.Toolsáltal automatikusan létrehozott C#-eszközökkel kapcsolatos további információkért lásd a gRPC-szolgáltatásokat C#-ban: Generált C#-eszközök.

  • Frissítse a gRPC-ügyfél Program.cs fájlt a következő kóddal.

    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();
    
  • Az előző kiemelt kódban cserélje le a localhost port számát 7042 a GrpcGreeter szolgáltatásprojekt Properties/launchSettings.json megadott HTTPS portszámára.

Program.cs tartalmazza a gRPC-ügyfél belépési pontját és logikáját.

A Greeter-ügyfelet a következő hozza létre:

  • A GrpcChannel-t példányosítva, amelyben benne van a gRPC szolgáltatáshoz való kapcsolat létrehozásához szükséges információk.
  • A Greeter-ügyfél létrehozásához használja a GrpcChannel:
// 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();

A Greeter-ügyfél az aszinkron SayHello metódust hívja meg. Megjelenik a SayHello hívás eredménye:

// 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();

A gRPC-ügyfél tesztelése a gRPC Greeter szolgáltatással

Frissítse a appsettings.Development.json fájlt a következő kiemelt sorok hozzáadásával:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
      ,"Microsoft.AspNetCore.Hosting": "Information",
      "Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information"
    }
  }
}
  • A Greeter szolgáltatásban nyomja le a Ctrl+F5 a kiszolgáló hibakereső nélküli elindításához.
  • A GrpcGreeterClient projektben nyomja le a Ctrl+F5 billentyűt az ügyfél hibakereső nélküli elindításához.

Az ügyfél egy üdvözletet küld a szolgáltatásnak egy olyan üzenettel, amely az ügyfél nevét tartalmazza, GreeterClient. A szolgáltatás válaszként elküldi a "Hello GreeterClient" üzenetet. A "Hello GreeterClient" válasz megjelenik a parancssorban:

Greeting: Hello GreeterClient
Press any key to exit...

A gRPC szolgáltatás a parancssorba írt naplókban rögzíti a sikeres hívás részleteit:

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

Jegyzet

A cikkben szereplő kódhoz a ASP.NET Core HTTPS fejlesztői tanúsítvány szükséges a gRPC szolgáltatás védelméhez. Ha a .NET gRPC-ügyfél a The remote certificate is invalid according to the validation procedure. vagy The SSL connection could not be established.üzenettel hiúsul meg, a fejlesztési tanúsítvány nem megbízható. A probléma megoldásához lásd: GRPC-szolgáltatás meghívása nem megbízható/érvénytelen tanúsítvánnyal.

Következő lépések

Ez az oktatóanyag bemutatja, hogyan hozhat létre .NET Core-gRPC--ügyfelet és ASP.NET Core gRPC-kiszolgálót. A végén lesz egy gRPC-ügyfél, amely kommunikál a gRPC Greeter szolgáltatással.

Ebben az oktatóanyagban ön:

  • Hozzon létre egy gRPC-kiszolgálót.
  • Hozzon létre egy gRPC-ügyfelet.
  • Tesztelje a gRPC-ügyfelet a gRPC Greeter szolgáltatással.

Előfeltételek

GRPC-szolgáltatás létrehozása

  • Indítsa el a Visual Studio 2022-t, és válassza Új projekt létrehozásalehetőséget.
  • Az Új projekt létrehozása párbeszédpanelen keresse meg a(z) gRPCelemet. Válassza a ASP.NET Core gRPC Service, majd a Következőlehetőséget.
  • Az Új projekt konfigurálása párbeszédpanelen a Projektnévmezőbe írja be a GrpcGreeter értéket. Fontos, hogy a projekt neve GrpcGreeter, hogy a névterek egyezzenek a kód másolása és beillesztése során.
  • Válassza Következőlehetőséget.
  • A További információ párbeszédpanelen válassza .NET 6.0 (Hosszú távú támogatás), majd válassza a létrehozása lehetőséget.

A szolgáltatás futtatása

  • Nyomja le a Ctrl+F5 billentyűkombinációt a hibakereső nélküli futtatáshoz.

    A Visual Studio az alábbi párbeszédpanelt jeleníti meg, ha egy projekt még nincs ssl használatára konfigurálva:

    Ez a projekt SSL használatára van konfigurálva. Az SSL-figyelmeztetések elkerülése érdekében a böngészőben megadhatja, hogy megbízik-e az IIS Express által létrehozott önaláírt tanúsítványban. Megbízik az IIS Express SSL-tanúsítványban?

    Válassza Igen lehetőséget, ha megbízik az IIS Express SSL-tanúsítványban.

    A következő párbeszédpanel jelenik meg:

    Biztonsági figyelmeztetés párbeszédpanel

    Válassza Igen lehetőséget, ha elfogadja, hogy megbízik a fejlesztési tanúsítványban.

    A Firefox böngésző megbízhatóságáról további információt a Firefox SEC_ERROR_INADEQUATE_KEY_USAGE tanúsítványhibacímű témakörben talál.

    Visual Studio:

    • Elindítja Kestrel kiszolgálót.
    • Elindít egy böngészőt.
    • Navigál a http://localhost:port, például http://localhost:7042.
      • port: Az alkalmazás véletlenszerűen hozzárendelt portszáma.
      • localhost: A helyi számítógép szokásos állomásneve. A Localhost csak a helyi számítógépről érkező webes kéréseket szolgálja ki.

A naplók szerint a szolgáltatás a https://localhost:<port>-n hallgatózik, ahol a <port> a localhost portszám, amelyet véletlenszerűen rendelnek hozzá a projekt létrehozásakor, és be van állítva a Properties/launchSettings.json-ben.

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

Jegyzet

A gRPC-sablon Transport Layer Security (TLS)használatára van konfigurálva. A gRPC-ügyfeleknek HTTPS-t kell használniuk a kiszolgáló meghívásához. A gRPC szolgáltatás localhost portszámát véletlenszerűen hozzák létre a projekt létrehozásakor, és a gRPC szolgáltatásprojekt fájljának Tulajdonságok\launchSettings.jsrészében van beállítva.

a macOS nem támogatja ASP.NET Core gRPC-t TLS-lel. További konfigurációra van szükség a gRPC-szolgáltatások macOS rendszeren történő sikeres futtatásához. További információ: Nem indítható el ASP.NET Core gRPC-alkalmazás macOS.

A projektfájlok vizsgálata

GrpcGreeter projekt fájlok:

  • Protos/greet.proto: meghatározza a Greeter gRPC-t, és a gRPC-kiszolgáló eszközeinek létrehozására szolgál. További információ: Bevezetés a gRPC.
  • Services mappa: A Greeter szolgáltatás implementációját tartalmazza.
  • appSettings.json: Olyan konfigurációs adatokat tartalmaz, mint a Kestreláltal használt protokoll. További információkért lásd az ASP.NET Core Konfiguráció című részt.
  • Program.cs, amely a következőket tartalmazza:

A gRPC-ügyfél létrehozása .NET-konzolalkalmazásban

  • Nyissa meg a Visual Studio egy második példányát, és válassza Új projekt létrehozásalehetőséget.
  • Az Új projekt létrehozása párbeszédpanelen válassza a Konzolalkalmazáslehetőséget, majd válassza a Továbblehetőséget.
  • A Projekt neve szövegmezőbe írja be GrpcGreeterClient, és válassza Továbblehetőséget.
  • A További információ párbeszédpanelen válassza a .NET 6.0 (Hosszú távú támogatás) lehetőséget, majd válassza a Létrehozáslehetőséget.

Szükséges NuGet-csomagok hozzáadása

A gRPC-ügyfélprojekthez a következő NuGet-csomagok szükségesek:

  • Grpc.Net.Client, amely tartalmazza a .NET Core-ügyfelet.
  • Google.Protobuf, amely a C# protobuf üzenet API-jait tartalmazza.
  • Grpc.Tools, amely c# eszközkészlet-támogatást tartalmaz a protobuf fájlokhoz. Futásidőben nincs szükség az eszközcsomagra, ezért a függőség PrivateAssets="All"van megjelölve.

Telepítse a csomagokat a Package Manager-konzol (PMC) vagy a NuGet-csomagok kezelése használatával.

PMC-lehetőség csomagok telepítéséhez

  • A Visual Studióban válassza Eszközök>NuGet Package Manager>Package Manager-konzol

  • A Csomagkezelő konzol ablakában futtassa a cd GrpcGreeterClient, hogy a könyvtárakat a GrpcGreeterClient.csproj fájlokat tartalmazó mappára módosítsa.

  • Futtassa a következő parancsokat:

    Install-Package Grpc.Net.Client
    Install-Package Google.Protobuf
    Install-Package Grpc.Tools
    

NuGet-csomagok kezelése opció a csomagok telepítéséhez

  • Kattintson a jobb gombbal a projektre Megoldáskezelőben>NuGet-csomagok kezelése.
  • Válassza a Tallózás lapot.
  • A keresőmezőbe írja be Grpc.Net.Client.
  • Válassza a Grpc.Net.Client csomagot a Tallózás lapon, és válassza a Telepítéslehetőséget.
  • Ismételje meg a Google.Protobuf és a Grpc.Toolsesetén.

Greet.proto hozzáadása

  • Hozzon létre egy Protos mappát a gRPC-ügyfélprojektben.

  • Másolja a Protos\greet.proto fájlt a gRPC Greeter szolgáltatásból a gRPC-ügyfélprojekt Protos mappájába.

  • Frissítse a greet.proto fájlban lévő névteret a projekt névterére:

    option csharp_namespace = "GrpcGreeterClient";
    
  • A GrpcGreeterClient.csproj projektfájl szerkesztése:

Kattintson a jobb gombbal a projektre, és válassza a Projektfájl szerkesztéselehetőséget.

  • A greet.proto fájlra hivatkozó <Protobuf> elemet tartalmazó elemcsoport hozzáadása:

    <ItemGroup>
      <Protobuf Include="Protos\greet.proto" GrpcServices="Client" />
    </ItemGroup>
    

A Greeter-ügyfél létrehozása

  • Hozza létre az ügyfélprojektet a GrpcGreeterClient névtérben lévő típusok létrehozásához.

Jegyzet

A GrpcGreeterClient típusokat a buildelési folyamat automatikusan létrehozza. Az eszközcsomag Grpc.Tools a greet.proto fájl alapján a következő fájlokat hozza létre:

  • GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs: A protokoll pufferkódja, amely feltölti, szerializálja és lekéri a kérés- és válaszüzenet-típusokat.
  • GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs: A létrehozott ügyfélosztályokat tartalmazza.

A Grpc.Toolsáltal automatikusan létrehozott C# erőforrásokkal kapcsolatos további információkért lásd a gRPC szolgáltatásokat a C#-ban: Generált C# erőforrások.

  • Frissítse a gRPC-ügyfél Program.cs fájlt a következő kóddal.

    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();
    
  • Az előző kiemelt kódban cserélje le a localhost port számát 7042 a GrpcGreeter szolgáltatásprojekt Properties/launchSettings.json megadott HTTPS portszámára.

Program.cs tartalmazza a gRPC-ügyfél belépési pontját és logikáját.

A Greeter-ügyfelet a következő hozza létre:

  • Példányosítunk egy GrpcChannel objektumot, amely tartalmazza a gRPC szolgáltatáshoz való kapcsolat létrehozásához szükséges információkat.
  • A Greeter-ügyfél létrehozásához használja a GrpcChannel:
// 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();

A Greeter-ügyfél az aszinkron SayHello metódust hívja meg. Megjelenik a SayHello hívás eredménye:

// 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();

A gRPC-ügyfél tesztelése a gRPC Greeter szolgáltatással

  • A Greeter szolgáltatásban nyomja le a Ctrl+F5 a kiszolgáló hibakereső nélküli elindításához.
  • A GrpcGreeterClient projektben nyomja le a Ctrl+F5 billentyűt az ügyfél hibakereső nélküli elindításához.

Az ügyfél üdvözletet küld a szolgáltatásnak egy üzenettel, amely tartalmazza a nevét, GreeterClient. A szolgáltatás válaszként elküldi a "Hello GreeterClient" üzenetet. A "Hello GreeterClient" válasz megjelenik a parancssorban:

Greeting: Hello GreeterClient
Press any key to exit...

A gRPC szolgáltatás a parancssorba írt naplókban rögzíti a sikeres hívás részleteit:

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

Frissítse a appsettings.Development.json fájlt a következő sorok hozzáadásával:

"Microsoft.AspNetCore.Hosting": "Information",
"Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information"

Jegyzet

A cikkben szereplő kódhoz a ASP.NET Core HTTPS fejlesztői tanúsítvány szükséges a gRPC szolgáltatás védelméhez. Ha a .NET gRPC-ügyfél a The remote certificate is invalid according to the validation procedure. vagy The SSL connection could not be established.üzenettel hiúsul meg, a fejlesztési tanúsítvány nem megbízható. A probléma megoldásához lásd: GRPC-szolgáltatás meghívása nem megbízható/érvénytelen tanúsítvánnyal.

Következő lépések

Ez az oktatóanyag bemutatja, hogyan hozhat létre .NET Core-gRPC--ügyfelet és ASP.NET Core gRPC-kiszolgálót.

A végén lesz egy gRPC-ügyfél, amely kommunikál a gRPC Greeter szolgáltatással.

Mintakód megtekintése vagy letöltése (hogyan töltsük le).

Ebben az oktatóanyagban ön:

  • Hozzon létre egy gRPC-kiszolgálót.
  • Hozzon létre egy gRPC-ügyfelet.
  • Tesztelje a gRPC-ügyfelet a gRPC Greeter szolgáltatással.

Előfeltételek

GRPC-szolgáltatás létrehozása

  • Indítsa el a Visual Studiót, és válassza Új projekt létrehozásalehetőséget.
  • Az Új projekt létrehozása párbeszédpanelen válassza a gRPC-szolgáltatás lehetőséget, majd kattintson a Továbbgombra.
  • Az Új projekt konfigurálása párbeszédpanelen adja meg a(z) GrpcGreeter-t a(z) Projektnév-hoz. Fontos, hogy a projekt neve GrpcGreeter, hogy a névterek egyezzenek a kód másolása és beillesztése során.
  • Válassza Következőlehetőséget.
  • A További információk párbeszédpanelen válassza .NET 5.0 a Target Framework legördülő listában.
  • Válassza a lehetőséget, majd hozza létre a-et.

A szolgáltatás futtatása

  • Nyomja le a Ctrl+F5 billentyűkombinációt a hibakereső nélküli futtatáshoz.

    A Visual Studio az alábbi párbeszédpanelt jeleníti meg, ha egy projekt még nincs ssl használatára konfigurálva:

    Ez a projekt SSL használatára van konfigurálva. Az SSL-figyelmeztetések elkerülése érdekében a böngészőben megadhatja, hogy megbízik-e az IIS Express által létrehozott önaláírt tanúsítványban. Megbízik az IIS Express SSL-tanúsítványban?

    Válassza Igen lehetőséget, ha megbízik az IIS Express SSL-tanúsítványban.

    A következő párbeszédpanel jelenik meg:

    Biztonsági figyelmeztetés párbeszédpanel

    Válassza Igen lehetőséget, ha elfogadja, hogy megbízik a fejlesztési tanúsítványban.

    A Firefox böngésző megbízhatóságáról további információt a Firefox SEC_ERROR_INADEQUATE_KEY_USAGE tanúsítványhibacímű témakörben talál.

    A Visual Studio elindítja IIS Express, és futtatja az alkalmazást. A címmező localhost:port#-t jelenít meg, nem pedig example.com-et. Ennek az az oka, hogy localhost a helyi számítógép szokásos állomásneve. A Localhost csak a helyi számítógépről érkező webes kéréseket szolgálja ki. Amikor a Visual Studio létrehoz egy webes projektet, a rendszer véletlenszerű portot használ a webkiszolgálóhoz.

A naplókban a szolgáltatás figyeli a 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

Jegyzet

A gRPC-sablon Transport Layer Security (TLS)használatára van konfigurálva. A gRPC-ügyfeleknek HTTPS-t kell használniuk a kiszolgáló meghívásához.

a macOS nem támogatja ASP.NET Core gRPC-t TLS-lel. További konfigurációra van szükség a gRPC-szolgáltatások macOS rendszeren történő sikeres futtatásához. További információ: Nem indítható el ASP.NET Core gRPC-alkalmazás macOS.

A projektfájlok vizsgálata

GrpcGreeter projekthez tartozó fájlok:

  • greet.proto: A Protos/greet.proto fájl határozza meg a Greeter gRPC-t, és a gRPC-kiszolgáló eszközeinek létrehozásához használatos. További információkért lásd: Bevezetés a gRPC-be.
  • Services mappa: A Greeter szolgáltatás implementációját tartalmazza.
  • appsettings.json: Konfigurációs adatokat tartalmaz, például a Kestreláltal használt protokollt. További információért lásd: ASP.NET Corekonfigurációja.
  • Program.cs: A gRPC szolgáltatás belépési pontjának tartalma. További információ: .NET Generic Host in ASP.NET Core.
  • Startup.cs: Az alkalmazás viselkedését konfiguráló kódot tartalmaz. További információért lásd: alkalmazásindítás.

A gRPC-ügyfél létrehozása .NET-konzolalkalmazásban

  • Nyissa meg a Visual Studio egy második példányát, és válassza Új projekt létrehozásalehetőséget.
  • Az Új projekt létrehozása párbeszédpanelen válassza a Konzolalkalmazás (.NET Core) lehetőséget, és válassza Következőlehetőséget.
  • A Projekt neve szövegmezőbe írja be GrpcGreeterClient, majd válassza a létrehozása lehetőséget.

Szükséges csomagok hozzáadása

A gRPC-ügyfélprojekthez a következő csomagok szükségesek:

  • Grpc.Net.Client, amely tartalmazza a .NET Core-ügyfelet.
  • Google.Protobuf, amely a C# protobuf üzenet API-jait tartalmazza.
  • Grpc.Tools, amely a Protobuf-fájlok C# eszközkészlet-támogatását tartalmazza. Futásidőben nincs szükség az eszközcsomagra, ezért a függőség PrivateAssets="All"van megjelölve.

Telepítse a csomagokat a Package Manager-konzol (PMC) vagy a NuGet-csomagok kezelése használatával.

PMC-lehetőség csomagok telepítéséhez

  • A Visual Studióban válassza Eszközök>NuGet Package Manager>Package Manager-konzol

  • A Csomagkezelő konzol ablakában futtassa a cd GrpcGreeterClient, hogy a könyvtárakat a GrpcGreeterClient.csproj fájlokat tartalmazó mappára módosítsa.

  • Futtassa a következő parancsokat:

    Install-Package Grpc.Net.Client
    Install-Package Google.Protobuf
    Install-Package Grpc.Tools
    

NuGet-csomagok kezelése opció a csomagok telepítéséhez

  • Kattintson a jobb gombbal a projektre Megoldáskezelőben>NuGet-csomagok kezelése.
  • Válassza a Böngészés lapot.
  • A keresőmezőbe írja be Grpc.Net.Client.
  • Válassza a Grpc.Net.Client csomagot a Tallózás lapon, és válassza a Telepítéslehetőséget.
  • Ismételje meg azokat a Google.Protobuf és Grpc.Toolsesetén.

Greet.proto hozzáadása

  • Hozzon létre egy Protos mappát a gRPC-ügyfélprojektben.

  • Másolja a Protos\greet.proto fájlt a gRPC Greeter szolgáltatásból a gRPC-ügyfélprojekt Protos mappájába.

  • Frissítse a greet.proto fájlban lévő névteret a projekt névterére:

    option csharp_namespace = "GrpcGreeterClient";
    
  • A GrpcGreeterClient.csproj projektfájl szerkesztése:

    Kattintson a jobb gombbal a projektre, és válassza a Projektfájl szerkesztéselehetőséget.


  • A greet.proto fájlra hivatkozó <Protobuf> elemet tartalmazó elemcsoport hozzáadása:

    <ItemGroup>
      <Protobuf Include="Protos\greet.proto" GrpcServices="Client" />
    </ItemGroup>
    

A Greeter-ügyfél létrehozása

  • Hozza létre az ügyfélprojektet a GrpcGreeterClient névtérben lévő típusok létrehozásához.

Jegyzet

A GrpcGreeterClient típusokat a buildelési folyamat automatikusan létrehozza. Az eszközcsomag Grpc.Tools a greet.proto fájl alapján a következő fájlokat hozza létre:

  • GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs: A protokoll pufferkódja, amely feltölti, szerializálja és lekéri a kérés- és válaszüzenet-típusokat.
  • GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs: A létrehozott ügyfélosztályokat tartalmazza.

Az Grpc.Toolsáltal automatikusan létrehozott C#-eszközökről további információkért lásd: gRPC-szolgáltatások C#-ban: Generált C#-eszközök.

  • Frissítse a gRPC-ügyfél Program.cs fájlt a következő kóddal:

    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 tartalmazza a gRPC-ügyfél belépési pontját és logikáját.

A Greeter-ügyfelet a következő hozza létre:

  • GrpcChannel példányosítása, amely tartalmazza a gRPC szolgáltatáshoz való kapcsolat létrehozásához szükséges információkat.
  • A Greeter-ügyfél létrehozásához használja a GrpcChannel:
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();
}

A Greeter-ügyfél az aszinkron SayHello metódust hívja meg. Megjelenik a SayHello hívás eredménye:

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();
}

A gRPC-ügyfél tesztelése a gRPC Greeter szolgáltatással

  • A Greeter szolgáltatásban nyomja le a Ctrl+F5 a kiszolgáló hibakereső nélküli elindításához.
  • A GrpcGreeterClient projektben nyomja le a Ctrl+F5 billentyűt az ügyfél hibakereső nélküli elindításához.

Az ügyfél a greeterclient nevű üzenetet küld a szolgáltatásnak. A szolgáltatás válaszként elküldi a "Hello GreeterClient" üzenetet. A "Hello GreeterClient" válasz megjelenik a parancssorban:

Greeting: Hello GreeterClient
Press any key to exit...

A gRPC szolgáltatás a parancssorba írt naplókban rögzíti a sikeres hívás részleteit:

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

Jegyzet

A cikkben szereplő kódhoz a ASP.NET Core HTTPS fejlesztői tanúsítvány szükséges a gRPC szolgáltatás védelméhez. Ha a .NET gRPC-ügyfél a The remote certificate is invalid according to the validation procedure. vagy The SSL connection could not be established.üzenettel hiúsul meg, a fejlesztési tanúsítvány nem megbízható. A probléma megoldásához lásd: GRPC-szolgáltatás meghívása nem megbízható/érvénytelen tanúsítvánnyal.

Következő lépések

Ez az oktatóanyag bemutatja, hogyan hozhat létre .NET Core-gRPC--ügyfelet és ASP.NET Core gRPC-kiszolgálót.

A végén lesz egy gRPC-ügyfél, amely kommunikál a gRPC Greeter szolgáltatással.

Mintakód megtekintése vagy letöltése (hogyan töltsük le).

Ebben az oktatóanyagban ön:

  • Hozzon létre egy gRPC-kiszolgálót.
  • Hozzon létre egy gRPC-ügyfelet.
  • Tesztelje a gRPC-ügyfelet a gRPC Greeter szolgáltatással.

Előfeltételek

GRPC-szolgáltatás létrehozása

  • Indítsa el a Visual Studiót, és válassza Új projekt létrehozásalehetőséget. Másik lehetőségként a Visual Studio Fájl menüjében válassza Új>Projektlehetőséget.

  • Az Új projekt létrehozása párbeszédpanelen válassza a gRPC szolgáltatás, majd válassza a Következő.

    Új projekt létrehozása a Visual Studio párbeszédpaneljén

  • Nevezze el a projektet GrpcGreeter. Fontos, hogy a projekt neve GrpcGreeter, hogy a névterek egyezzenek a kód másolása és beillesztése során.

  • Válassza létrehozása lehetőséget.

  • Az Új gRPC szolgáltatás létrehozása párbeszédablakban:

    • A gRPC szolgáltatás sablon került kiválasztásra.
    • Válassza létrehozása lehetőséget.

A szolgáltatás futtatása

  • Nyomja le a Ctrl+F5 billentyűkombinációt a hibakereső nélküli futtatáshoz.

    A Visual Studio az alábbi párbeszédpanelt jeleníti meg, ha egy projekt még nincs ssl használatára konfigurálva:

    Ez a projekt SSL használatára van konfigurálva. Az SSL-figyelmeztetések elkerülése érdekében a böngészőben megadhatja, hogy megbízik-e az IIS Express által létrehozott önaláírt tanúsítványban. Megbízik az IIS Express SSL-tanúsítványban?

    Válassza Igen lehetőséget, ha megbízik az IIS Express SSL-tanúsítványban.

    A következő párbeszédpanel jelenik meg:

    Biztonsági figyelmeztetés párbeszédpanel

    Válassza Igen lehetőséget, ha elfogadja, hogy megbízik a fejlesztési tanúsítványban.

    A Firefox böngésző megbízhatóságáról további információt a Firefox SEC_ERROR_INADEQUATE_KEY_USAGE tanúsítványhibacímű témakörben talál.

    A Visual Studio elindítja IIS Express, és futtatja az alkalmazást. A címsorban localhost:port# jelenik meg, és nem valami olyasmi, mint example.com. Ennek az az oka, hogy localhost a helyi számítógép szokásos állomásneve. A Localhost csak a helyi számítógépről érkező webes kéréseket szolgálja ki. Amikor a Visual Studio létrehoz egy webes projektet, a rendszer véletlenszerű portot használ a webkiszolgálóhoz.

A naplók azt mutatják, hogy a szolgáltatás a https://localhost:5001porton figyel.

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

Jegyzet

A gRPC-sablon Transport Layer Security (TLS)használatára van konfigurálva. A gRPC-ügyfeleknek HTTPS-t kell használniuk a kiszolgáló meghívásához.

a macOS nem támogatja ASP.NET Core gRPC-t TLS-lel. További konfigurációra van szükség a gRPC-szolgáltatások macOS rendszeren történő sikeres futtatásához. További információ: Nem indítható el ASP.NET Core gRPC-alkalmazás macOS.

A projektfájlok vizsgálata

GrpcGreeter projektfájlok:

  • greet.proto: A Protos/greet.proto fájl határozza meg a Greeter gRPC-t, és a gRPC-kiszolgáló eszközeinek létrehozásához használatos. További információért lásd a Bevezetés a gRPCcímű részt.
  • Services mappa: A Greeter szolgáltatás implementációját tartalmazza.
  • appsettings.json: Konfigurációs adatokat tartalmaz, például a Kestreláltal használt protokollt. További információkért lásd a Konfiguráció az ASP.NET Core-ban című részt .
  • Program.cs: A gRPC szolgáltatás belépési pontjának tartalma. További információ: .NET Generic Host in ASP.NET Core.
  • Startup.cs: Az alkalmazás viselkedését konfiguráló kódot tartalmaz. További információért tekintse meg a(z) alkalmazásindításirészt.

A gRPC-ügyfél létrehozása .NET-konzolalkalmazásban

  • Nyissa meg a Visual Studio egy második példányát, és válassza Új projekt létrehozásalehetőséget.
  • Az Új projekt létrehozása párbeszédpanelen válassza a Konzolalkalmazás (.NET Core) lehetőséget, és válassza Következőlehetőséget.
  • A Projekt neve szövegmezőbe írja be GrpcGreeterClient, majd válassza a létrehozása lehetőséget.

Szükséges csomagok hozzáadása

A gRPC-ügyfélprojekthez a következő csomagok szükségesek:

  • Grpc.Net.Client, amely tartalmazza a .NET Core-ügyfelet.
  • Google.Protobuf, amely a C# protobuf üzenet API-jait tartalmazza.
  • Grpc.Tools, amely a Protobuf-fájlok C# eszközkészlet-támogatását tartalmazza. Futásidőben nincs szükség az eszközcsomagra, ezért a függőség PrivateAssets="All"van megjelölve.

Telepítse a csomagokat a Package Manager-konzol (PMC) vagy a NuGet-csomagok kezelése használatával.

PMC-lehetőség csomagok telepítéséhez

  • A Visual Studióban válassza Eszközök>NuGet Package Manager>Package Manager-konzol

  • A Csomagkezelő konzol ablakában futtassa a cd GrpcGreeterClient, hogy a könyvtárakat a GrpcGreeterClient.csproj fájlokat tartalmazó mappára módosítsa.

  • Futtassa a következő parancsokat:

    Install-Package Grpc.Net.Client
    Install-Package Google.Protobuf
    Install-Package Grpc.Tools
    

NuGet-csomagok kezelésének lehetősége a csomagok telepítéséhez

  • Kattintson a jobb gombbal a projektre Megoldáskezelőben>NuGet-csomagok kezelése.
  • Válassza a Tallózás lapot.
  • A keresőmezőbe írja be Grpc.Net.Client.
  • Válassza a Grpc.Net.Client csomagot a Tallózás lapon, és válassza a Telepítéslehetőséget.
  • Ismételje meg a Google.Protobuf és Grpc.Toolsesetében.

Greet.proto hozzáadása

  • Hozzon létre egy Protos mappát a gRPC-ügyfélprojektben.

  • Másolja a Protos\greet.proto fájlt a gRPC Greeter szolgáltatásból a gRPC-ügyfélprojekt Protos mappájába.

  • Frissítse a greet.proto fájlban lévő névteret a projekt névterére:

    option csharp_namespace = "GrpcGreeterClient";
    
  • A GrpcGreeterClient.csproj projektfájl szerkesztése:

    Kattintson a jobb gombbal a projektre, és válassza a Projektfájl szerkesztéselehetőséget.


  • A greet.proto fájlra hivatkozó <Protobuf> elemet tartalmazó elemcsoport hozzáadása:

    <ItemGroup>
      <Protobuf Include="Protos\greet.proto" GrpcServices="Client" />
    </ItemGroup>
    

A Greeter-ügyfél létrehozása

  • Hozza létre az ügyfélprojektet a GrpcGreeterClient névtérben lévő típusok létrehozásához.

Jegyzet

A GrpcGreeterClient típusokat a buildelési folyamat automatikusan létrehozza. Az eszközcsomag Grpc.Tools a greet.proto fájl alapján a következő fájlokat hozza létre:

  • GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs: A protokoll pufferkódja, amely feltölti, szerializálja és lekéri a kérés- és válaszüzenet-típusokat.
  • GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs: A létrehozott ügyfélosztályokat tartalmazza.

Az Grpc.Toolsáltal automatikusan létrehozott C#-komponensekről további információt a gRPC-szolgáltatások a C#: Generált C#-komponensek című részben talál.

Frissítse a gRPC-ügyfél Program.cs fájlt a következő kóddal:

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 tartalmazza a gRPC-ügyfél belépési pontját és logikáját.

A Greeter-ügyfelet a következő hozza létre:

  • A gRPC szolgáltatáshoz való kapcsolat létrehozásához szükséges információkat tartalmazó GrpcChannel példányosítása.
  • A Greeter-ügyfél létrehozásához használja a GrpcChannel:
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();
}

A Greeter-ügyfél az aszinkron SayHello metódust hívja meg. Megjelenik a SayHello hívás eredménye:

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();
}

A gRPC-ügyfél tesztelése a gRPC Greeter szolgáltatással

  • A Greeter szolgáltatásban nyomja le a Ctrl+F5 a kiszolgáló hibakereső nélküli elindításához.
  • A GrpcGreeterClient projektben nyomja le a Ctrl+F5 billentyűt az ügyfél hibakereső nélküli elindításához.

Az ügyfél egy üdvözletet küld a szolgáltatásnak egy olyan üzenetben, amely tartalmazza annak nevét, GreeterClient. A szolgáltatás válaszként elküldi a "Hello GreeterClient" üzenetet. A "Hello GreeterClient" válasz megjelenik a parancssorban:

Greeting: Hello GreeterClient
Press any key to exit...

A gRPC szolgáltatás a parancssorba írt naplókban rögzíti a sikeres hívás részleteit:

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

Jegyzet

A cikkben szereplő kódhoz a ASP.NET Core HTTPS fejlesztői tanúsítvány szükséges a gRPC szolgáltatás védelméhez. Ha a .NET gRPC-ügyfél a The remote certificate is invalid according to the validation procedure. vagy The SSL connection could not be established.üzenettel hiúsul meg, a fejlesztési tanúsítvány nem megbízható. A probléma megoldásához lásd: GRPC-szolgáltatás meghívása nem megbízható/érvénytelen tanúsítvánnyal.

Következő lépések