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
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
GrpcGreeter
Projektné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:
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:port
elemhez, például ahttp://localhost:7042
elemhez 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 aGreeter
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: AGreeter
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 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:
- 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 aGrpcGreeterClient.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 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.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
aGrpcGreeter
szolgáltatásprojektProperties/launchSettings.json
megadottHTTPS
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 aCtrl+F5
-et a kiszolgáló elindításához hibakereső nélkül. - Nyomja le a
Ctrl+F5
-t aGrpcGreeterClient
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
- 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 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
Visual Studio 2022ASP.NET és webfejlesztési munkaterheléssel.
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
gRPC
kifejezé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ét
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 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.
- 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 aGreeter
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: AGreeter
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 szolgáltatás belépési pontja. További információért lásd: .NET általános hoszt ASP.NET Core-ban.
- Az alkalmazás viselkedését konfiguráló kód. További információké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 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 aGrpcGreeterClient.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 aGrpc.Tools
eseté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
aGrpcGreeter
szolgáltatásprojektProperties/launchSettings.json
megadottHTTPS
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 aCtrl+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
- Az oktatóanyag befejezett mintakódjának megtekintése vagy letöltése (), valamint a letöltés módja ().
- .NET-alapú gRPC áttekintése
- gRPC-szolgáltatások C#
- A gRPC migrálása C-core-ról gRPC for .NET-re
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
Visual Studio 2022 az ASP.NET és webfejlesztési csomaggal.
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
elemet. 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:
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.
- Átnavigál a
http://localhost:port
-hoz, példáulhttp://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 aGreeter
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: AGreeter
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 szolgáltatás belépési pontja. További információ: .NET generikus gazdafolyamat az ASP.NET Core-ban.
- Az alkalmazás viselkedését konfiguráló kód. A további információké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á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 aGrpcGreeterClient.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
ésGrpc.Tools
eseté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
aGrpcGreeter
szolgáltatásprojektProperties/launchSettings.json
megadottHTTPS
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 aCtrl+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
- A befejezett mintakód megtekintése vagy letöltése ehhez az oktatóanyaghoz (a letöltés módja).
- .NET-alapú gRPC áttekintése
- gRPC-szolgáltatások C#-ben
- A gRPC migrálása a C-magról a .NET gRPC-re
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
- Visual Studio 2022ASP.NET és webfejlesztési munkaterheléssel.
- .NET 6.0 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(z)
gRPC
elemet. 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:
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.
- Navigál a
http://localhost:port
, példáulhttp://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 aGreeter
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: AGreeter
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 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óért lásd: Alkalmazás indí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á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 aGrpcGreeterClient.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 aGrpc.Tools
eseté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
aGrpcGreeter
szolgáltatásprojektProperties/launchSettings.json
megadottHTTPS
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 aCtrl+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
- 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#
- A gRPC C-magból a gRPC .NET-re történő migrálása
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
- Visual Studio 2019 16.8 vagy újabb az ASP.NET és webfejlesztési munkaterheléssel
- .NET 5.0 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 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:
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, hogylocalhost
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 aGrpcGreeterClient.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
ésGrpc.Tools
eseté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 aCtrl+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
- 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 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:
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ímsorban
localhost:port#
jelenik meg, és nem valami olyasmi, mintexample.com
. Ennek az az oka, hogylocalhost
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:5001
porton 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 aGrpcGreeterClient.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
ésGrpc.Tools
eseté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 aCtrl+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.