Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez az oktatóanyag bemutatja, hogyan hozhat létre .NET 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.
Prerequisites
Visual Studio 2022 az ASP.NET és webfejlesztés munkaterhelésével.
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 a 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:
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:
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 ahttp://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
Note
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 aGreetergRPC-t, és a gRPC-kiszolgáló eszközeinek létrehozására szolgál. További információ: Bevezetés a gRPC. -
Servicesmappa: AGreeterszolgá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 szolgáltatás belépési pontja. További információ: .NET Generic Host in ASP.NET Core.
- Az alkalmazás viselkedését konfiguráló kód. További információkért lásd: Az alkalmazás indítása.
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:
- A .NET-ügyfelet tartalmazó Grpc.Net.Client.
- 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 aGrpcGreeterClient.csprojfá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 aGrpc.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.protofájlban lévő névteret a projekt névterére:option csharp_namespace = "GrpcGreeterClient";A
GrpcGreeterClient.csprojprojektfájl szerkesztése:
Kattintson a jobb gombbal a projektre, és válassza a Projektfájl szerkesztéselehetőséget.
A greet.proto
<Protobuf>fájlra hivatkozó 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
GrpcGreeterClientnévtérben lévő típusok létrehozásához.
Note
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.csfá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
7042aHTTPSszolgáltatásprojektProperties/launchSettings.jsonmegadottGrpcGreeterportszá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
GrpcGreeterszolgáltatásprojektben nyomja meg aCtrl+F5-et a kiszolgáló elindításához hibakereső nélkül. - Nyomja le a
GrpcGreeterClient-t aCtrl+F5konzolprojektben 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
Note
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
- Az oktatóanyag befejezett mintakódjának megtekintése vagy letöltése (letöltése).
- .NET-alapú gRPC áttekintése
- gRPC-szolgáltatások C#-val
- A gRPC migrálása C-core-ról a .NET gRPC-be
Ez az oktatóanyag bemutatja, hogyan hozhat létre .NET 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.
Prerequisites
Visual Studio 2022 az ASP.NET és webfejlesztés munkaterhelésével.
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 a 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:
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:
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 ahttp://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
Note
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 aGreetergRPC-t, és a gRPC-kiszolgáló eszközeinek létrehozására szolgál. További információ: Bevezetés a gRPC. -
Servicesmappa: AGreeterszolgá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 szolgáltatás belépési pontja. További információ: .NET Generic Host in ASP.NET Core.
- Az alkalmazás viselkedését konfiguráló kód. További információkért lásd: Az alkalmazás indítása.
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 8.0 (hosszú távú tá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:
- A .NET-ügyfelet tartalmazó Grpc.Net.Client.
- 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 aGrpcGreeterClient.csprojfá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 aGrpc.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.protofájlban lévő névteret a projekt névterére:option csharp_namespace = "GrpcGreeterClient";A
GrpcGreeterClient.csprojprojektfájl szerkesztése:
Kattintson a jobb gombbal a projektre, és válassza a Projektfájl szerkesztéselehetőséget.
A greet.proto
<Protobuf>fájlra hivatkozó 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
GrpcGreeterClientnévtérben lévő típusok létrehozásához.
Note
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.csfá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
7042aHTTPSszolgáltatásprojektProperties/launchSettings.jsonmegadottGrpcGreeterportszá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 Greeter szolgáltatásban nyomja le a
Ctrl+F5a kiszolgáló hibakereső nélküli elindításához. - A
GrpcGreeterClientprojektben nyomja le aCtrl+F5billentyű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 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
Note
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
- Az oktatóanyag befejezett mintakódjának megtekintése vagy letöltése (letöltése).
- .NET-alapú gRPC áttekintése
- gRPC-szolgáltatások C#-val
- A gRPC migrálása C-core-ról a .NET gRPC-be
Ez az oktatóanyag bemutatja, hogyan hozhat létre .NET 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.
Prerequisites
Visual Studio 2022 az ASP.NET és webfejlesztés munkaterhelésével.
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
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 a Következőlehetőséget.
- A További információk párbeszédpanelen válassza a .NET 6.0 (Hosszú távú támogatás), majd a Létrehozás 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:
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:
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 ahttp://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
Note
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 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:
-
Protos/greet.proto: meghatározza aGreetergRPC-t, és a gRPC-kiszolgáló eszközeinek létrehozására szolgál. További információ: Bevezetés a gRPC. -
Servicesmappa: AGreeterszolgá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 szolgáltatás belépési pontja. További információ: .NET Generic Host in ASP.NET Core.
- Az alkalmazás viselkedését konfiguráló kód. További információkért lásd: Az alkalmazás indítása.
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ók párbeszédpanelen válassza a .NET 6.0 (Hosszú távú támogatás), majd a Létrehozás lehetőséget.
Szükséges NuGet-csomagok hozzáadása
A gRPC-ügyfélprojekthez a következő NuGet-csomagok szükségesek:
- A .NET-ügyfelet tartalmazó Grpc.Net.Client.
- 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 aGrpcGreeterClient.csprojfá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 aGrpc.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.protofájlban lévő névteret a projekt névterére:option csharp_namespace = "GrpcGreeterClient";A
GrpcGreeterClient.csprojprojektfájl szerkesztése:
Kattintson a jobb gombbal a projektre, és válassza a Projektfájl szerkesztéselehetőséget.
A greet.proto
<Protobuf>fájlra hivatkozó 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
GrpcGreeterClientnévtérben lévő típusok létrehozásához.
Note
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.csfá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
7042aHTTPSszolgáltatásprojektProperties/launchSettings.jsonmegadottGrpcGreeterportszá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 Greeter szolgáltatásban nyomja le a
Ctrl+F5a kiszolgáló hibakereső nélküli elindításához. - A
GrpcGreeterClientprojektben nyomja le aCtrl+F5billentyű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 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
Note
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
- Az oktatóanyag befejezett mintakódjának megtekintése vagy letöltése (letöltése).
- .NET-alapú gRPC áttekintése
- gRPC-szolgáltatások C#-val
- A gRPC migrálása C-core-ról a .NET gRPC-be
Ez az oktatóanyag bemutatja, hogyan hozhat létre .NET 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.
Prerequisites
- Visual Studio 2022 az ASP.NET és webfejlesztés munkaterhelésével.
- .NET 6 SDK
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
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 a Következőlehetőséget.
- A További információk párbeszédpanelen válassza a .NET 6.0 (Hosszú távú támogatás), majd a Létrehozás 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:
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:
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 ahttp://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
Note
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 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:
-
Protos/greet.proto: meghatározza aGreetergRPC-t, és a gRPC-kiszolgáló eszközeinek létrehozására szolgál. További információ: Bevezetés a gRPC. -
Servicesmappa: AGreeterszolgá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 szolgáltatás belépési pontja. További információ: .NET Generic Host in ASP.NET Core.
- Az alkalmazás viselkedését konfiguráló kód. További információkért lásd: Az alkalmazás indítása.
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ók párbeszédpanelen válassza a .NET 6.0 (Hosszú távú támogatás), majd a Létrehozás lehetőséget.
Szükséges NuGet-csomagok hozzáadása
A gRPC-ügyfélprojekthez a következő NuGet-csomagok szükségesek:
- A .NET-ügyfelet tartalmazó Grpc.Net.Client.
- 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 aGrpcGreeterClient.csprojfá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 aGrpc.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.protofájlban lévő névteret a projekt névterére:option csharp_namespace = "GrpcGreeterClient";A
GrpcGreeterClient.csprojprojektfájl szerkesztése:
Kattintson a jobb gombbal a projektre, és válassza a Projektfájl szerkesztéselehetőséget.
A greet.proto
<Protobuf>fájlra hivatkozó 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
GrpcGreeterClientnévtérben lévő típusok létrehozásához.
Note
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.csfá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
7042aHTTPSszolgáltatásprojektProperties/launchSettings.jsonmegadottGrpcGreeterportszá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
- A Greeter szolgáltatásban nyomja le a
Ctrl+F5a kiszolgáló hibakereső nélküli elindításához. - A
GrpcGreeterClientprojektben nyomja le aCtrl+F5billentyű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 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"
Note
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
- Az oktatóanyag befejezett mintakódjának megtekintése vagy letöltése (letöltése).
- .NET-alapú gRPC áttekintése
- gRPC-szolgáltatások C#-val
- A gRPC migrálása C-core-ról a .NET gRPC-be
Ez az oktatóanyag bemutatja, hogyan hozhat létre .NET 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.
Prerequisites
- Visual Studio 2019 16.8 vagy újabb az ASP.NET és webfejlesztési munkaterheléssel
- .NET 5 SDK
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
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 a 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 Create gombot.
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:
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:
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 pedigexample.com-et. Ennek az az oka, hogylocalhosta 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
Note
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
GreetergRPC-t, és a gRPC-kiszolgáló eszközeinek létrehozásához használatos. További információ: Bevezetés a gRPC. -
Services mappa: A
Greeterszolgá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: Konfiguráció az ASP.NET Core-ban. -
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ókért lásd: Az alkalmazás indítása.
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) lehetőséget, és válassza a Tovább 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:
- A .NET-ügyfelet tartalmazó Grpc.Net.Client.
- 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 aGrpcGreeterClient.csprojfá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 aGrpc.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.protofájlban lévő névteret a projekt névterére:option csharp_namespace = "GrpcGreeterClient";A
GrpcGreeterClient.csprojprojektfájl szerkesztése:Kattintson a jobb gombbal a projektre, és válassza a Projektfájl szerkesztéselehetőséget.
A greet.proto
<Protobuf>fájlra hivatkozó 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
GrpcGreeterClientnévtérben lévő típusok létrehozásához.
Note
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.csfá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:
- 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:
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+F5a kiszolgáló hibakereső nélküli elindításához. - A
GrpcGreeterClientprojektben nyomja le aCtrl+F5billentyű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 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:5001
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
Content root path: C:\GH\aspnet\docs\4\Docs\aspnetcore\tutorials\grpc\grpc-start\sample\GrpcGreeter
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
Request starting HTTP/2 POST https://localhost:5001/Greet.Greeter/SayHello application/grpc
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
Executing endpoint 'gRPC - /Greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
Executed endpoint 'gRPC - /Greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
Request finished in 78.32260000000001ms 200 application/grpc
Note
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
- .NET-alapú gRPC áttekintése
- gRPC-szolgáltatások C#-val
- A gRPC migrálása C-core-ról a .NET gRPC-be
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.
Prerequisites
- Visual Studio 2019 16.4-ASP.NET és webfejlesztési számítási feladattal
- .NET Core 3.1 SDK
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ő.
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 a Create gombot.
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 a Create gombot.
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:
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:
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 pedigexample.com-et. Ennek az az oka, hogylocalhosta 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
Note
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
GreetergRPC-t, és a gRPC-kiszolgáló eszközeinek létrehozásához használatos. További információ: Bevezetés a gRPC. -
Services mappa: A
Greeterszolgá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: Konfiguráció az ASP.NET Core-ban. -
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ókért lásd: Az alkalmazás indítása.
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 aGrpcGreeterClient.csprojfá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 aGrpc.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.protofájlban lévő névteret a projekt névterére:option csharp_namespace = "GrpcGreeterClient";A
GrpcGreeterClient.csprojprojektfájl szerkesztése:Kattintson a jobb gombbal a projektre, és válassza a Projektfájl szerkesztéselehetőséget.
A greet.proto
<Protobuf>fájlra hivatkozó 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
GrpcGreeterClientnévtérben lévő típusok létrehozásához.
Note
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 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:
- 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:
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+F5a kiszolgáló hibakereső nélküli elindításához. - A
GrpcGreeterClientprojektben nyomja le aCtrl+F5billentyű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 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:5001
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
Content root path: C:\GH\aspnet\docs\4\Docs\aspnetcore\tutorials\grpc\grpc-start\sample\GrpcGreeter
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
Request starting HTTP/2 POST https://localhost:5001/Greet.Greeter/SayHello application/grpc
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
Executing endpoint 'gRPC - /Greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
Executed endpoint 'gRPC - /Greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
Request finished in 78.32260000000001ms 200 application/grpc
Note
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
- .NET-alapú gRPC áttekintése
- gRPC-szolgáltatások C#-val
- A gRPC migrálása C-core-ról a .NET gRPC-be