Dela via


Självstudie: Skapa en gRPC-klient och -server i ASP.NET Core

Den här handledningen visar hur du skapar en .NET Core gRPC klient och en ASP.NET Core gRPC server. I slutet har du en gRPC-klient som kommunicerar med gRPC Greeter-tjänsten.

I den här handledningen:

  • Skapa en gRPC-server.
  • Skapa en gRPC-klient.
  • Testa gRPC-klienten med gRPC Greeter-tjänsten.

Förutsättningar

Skapa en gRPC-tjänst

  • Starta Visual Studio 2022 och välj Nytt projekt.
  • I dialogrutan Skapa ett nytt projekt söker du efter gRPC. Välj ASP.NET Core gRPC Service och välj Nästa.
  • I dialogrutan Konfigurera ditt nya projekt anger du GrpcGreeter för Projektnamn. Det är viktigt att namnge projektet GrpcGreeter så att namnrymderna matchar när du kopierar och klistrar in kod.
  • Välj Nästa.
  • I dialogrutan Ytterligare information väljer du .NET 9.0 (Standard Term Support) och väljer sedan Skapa.

Kör tjänsten

  • Tryck på Ctrl+F5 för att köra utan felsökningsprogrammet.

    Visual Studio visar följande dialogruta när ett projekt ännu inte har konfigurerats för att använda SSL:

    Det här projektet är konfigurerat att använda SSL. För att undvika SSL-varningar i webbläsaren kan du välja att lita på det självsignerade certifikat som IIS Express har genererat. Vill du lita på IIS Express SSL-certifikatet?

    Välj Ja om du litar på IIS Express SSL-certifikatet.

    Följande dialogruta visas:

    Dialogrutan säkerhetsvarning

    Välj Ja om du samtycker till att lita på utvecklingscertifikatet.

    Information om hur du litar på Webbläsaren Firefox finns i Firefox SEC_ERROR_INADEQUATE_KEY_USAGE certifikatfel.

    Visual Studio:

    • Startar Kestrel server.
    • Startar en webbläsare.
    • Navigerar till http://localhost:port, till exempel http://localhost:7042.
      • port: Ett slumpmässigt tilldelat portnummer för appen.
      • localhost: Standardvärdnamnet för den lokala datorn. Localhost hanterar endast webbbegäranden från den lokala datorn.

Loggarna visar att tjänsten lyssnar på https://localhost:<port>, där <port> är det localhost-portnummer som tilldelas slumpmässigt när projektet skapas och sorteras i Properties/launchSettings.json.

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

Not

GRPC-mallen är konfigurerad för att använda Transport Layer Security (TLS). gRPC-klienter måste använda HTTPS för att anropa servern. Portnumret för gRPC-tjänsten localhost tilldelas slumpmässigt när projektet skapas och anges i Egenskaper\launchSettings.jspå fil i gRPC-tjänstprojektet.

Granska projektfilerna

GrpcGreeter projektfiler:

  • Protos/greet.proto: definierar Greeter gRPC och används för att generera gRPC-servertillgångarna. Mer information finns i Introduktion till gRPC-.
  • Services mapp: Innehåller implementeringen av Greeter-tjänsten.
  • appSettings.json: Innehåller konfigurationsdata som det protokoll som används av Kestrel. Mer information finns i Configuration i ASP.NET Core.
  • Program.cs, som innehåller:

Skapa gRPC-klienten i en .NET-konsolapp

  • Öppna en andra instans av Visual Studio och välj Nytt projekt.
  • I dialogrutan Skapa ett nytt projekt väljer du Konsolappoch väljer Nästa.
  • I textrutan Projektnamn anger du GrpcGreeterClient och väljer Nästa.
  • I dialogrutan Ytterligare information väljer du .NET 9.0 (Standard Term Support) och väljer sedan Skapa.

Lägga till nödvändiga NuGet-paket

GRPC-klientprojektet kräver följande NuGet-paket:

  • Grpc.Net.Client, som innehåller .NET Core-klienten.
  • Google.Protobuf, som innehåller protobuf-meddelande-API:er för C#.
  • Grpc.Tools, som innehåller C#-verktygsstöd för protobuf-filer. Verktygspaketet krävs inte vid körningstid, så beroendet markeras med PrivateAssets="All".

Installera paketen med antingen Package Manager Console (PMC) eller Hantera NuGet-paket.

PMC-alternativ för att installera paket

  • I Visual Studio väljer du Tools>NuGet Package Manager>Package Manager Console

  • Från fönstret Package Manager Console kör du cd GrpcGreeterClient för att ändra kataloger till mappen som innehåller GrpcGreeterClient.csproj-filerna.

  • Kör följande kommandon:

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

Hantera NuGet-paket för att installera paket

  • Högerklicka på projektet i Solution Explorer>Hantera NuGet-paket.
  • Välj fliken Bläddra.
  • Ange Grpc.Net.Client i sökrutan.
  • Välj Grpc.Net.Client-paketet på fliken Bläddra och välj Installera.
  • Upprepa för Google.Protobuf och Grpc.Tools.

Lägg till greet.proto

  • Skapa en Protos- mapp i gRPC-klientprojektet.

  • Kopiera filen Protos\greet.proto från gRPC Greeter-tjänsten till mappen Protos i gRPC-klientprojektet.

  • Uppdatera namnområdet i filen greet.proto till projektets namnområde:

    option csharp_namespace = "GrpcGreeterClient";
    
  • Redigera GrpcGreeterClient.csproj-projektfilen:

Högerklicka på projektet och välj Redigera projektfil.

  • Lägg till en objektgrupp med ett <Protobuf> element som refererar till filen greet.proto:

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

Skapa Greeter-klienten

  • Skapa klientprojektet för att skapa typerna i GrpcGreeterClient namnområdet.

Notera

De GrpcGreeterClient typerna genereras automatiskt av byggprocessen. Verktygspaketet Grpc.Tools genererar följande filer baserat på filen greet.proto:

  • GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs: Den protokollbuffertkod som fyller, serialiserar och hämtar meddelandetyperna för begäran och svar.
  • GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs: Innehåller de genererade klientklasserna.

Mer information om C#-tillgångarna som genereras automatiskt av Grpc.Toolsfinns i gRPC-tjänster med C#: Genererade C#-tillgångar.

  • Uppdatera gRPC-klientens Program.cs fil med följande kod.

    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();
    
  • I föregående markerade kod ersätter du portnumret localhost 7042 med det HTTPS portnummer som anges i Properties/launchSettings.json i GrpcGreeter-tjänstprojektet.

Program.cs innehåller startpunkten och logiken för gRPC-klienten.

Greeter-klienten skapas av:

  • Instansiera en GrpcChannel som innehåller information för att skapa anslutningen till gRPC-tjänsten.
  • Använd GrpcChannel för att skapa Greeter-klienten:
// 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();

Greeter-klienten kallar på den asynkrona metoden SayHello. Resultatet av SayHello-anropet visas:

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

Testa gRPC-klienten med gRPC Greeter-tjänsten

Uppdatera filen appsettings.Development.json genom att lägga till följande markerade rader:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning",
      "Microsoft.AspNetCore.Hosting": "Information",
      "Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information"
    }
  }
}
  • I GrpcGreeter-tjänstprojektet trycker du på Ctrl+F5 för att starta servern utan felsökningsprogrammet.
  • I GrpcGreeterClient-konsolprojektet trycker du på Ctrl+F5 för att starta klienten utan felsökningsprogrammet.

Klienten skickar en hälsning till tjänsten med ett meddelande som innehåller dess namn, GreeterClient. Tjänsten skickar meddelandet "Hello GreeterClient" som ett svar. Svaret "Hello GreeterClient" visas i kommandotolken:

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

gRPC-tjänsten registrerar information om det lyckade anropet i loggarna som skrivs ut till kommandotolken.

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

Obs

Koden i den här artikeln kräver ASP.NET Core HTTPS-utvecklingscertifikat för att skydda gRPC-tjänsten. Om .NET gRPC-klienten misslyckas med meddelandet The remote certificate is invalid according to the validation procedure. eller The SSL connection could not be established.är utvecklingscertifikatet inte är betrodd. Information om hur du åtgärdar det här problemet finns i Anropa en gRPC-tjänst med ett ej betrott/ogiltigt certifikat.

Nästa steg

Den här självstudien visar hur du skapar en .NET Core-gRPC--klient och en ASP.NET Core-gRPC-server. I slutet har du en gRPC-klient som kommunicerar med gRPC Greeter-tjänsten.

I den här handledningen:

  • Skapa en gRPC-server.
  • Skapa en gRPC-klient.
  • Testa gRPC-klienten med gRPC Greeter-tjänsten.

Förutsättningar

Skapa en gRPC-tjänst

  • Starta Visual Studio 2022 och välj Nytt projekt.
  • I dialogrutan Skapa ett nytt projekt söker du efter gRPC. Välj ASP.NET Core gRPC Service och välj Nästa.
  • I dialogrutan Konfigurera ditt nya projekt anger du GrpcGreeter för Projektnamn. Det är viktigt att namnge projektet GrpcGreeter så att namnrymderna matchar när du kopierar och klistrar in kod.
  • Välj Nästa.
  • I dialogrutan Ytterligare information väljer du .NET 8.0 (långsiktig support) och väljer sedan Skapa.

Kör tjänsten

  • Tryck på Ctrl+F5 för att köra utan felsökningsprogrammet.

    Visual Studio visar följande dialogruta när ett projekt ännu inte har konfigurerats för att använda SSL:

    Det här projektet är konfigurerat att använda SSL. För att undvika SSL-varningar i webbläsaren kan du välja att lita på det självsignerade certifikat som IIS Express har genererat. Vill du lita på IIS Express SSL-certifikatet?

    Välj Ja om du litar på IIS Express SSL-certifikatet.

    Följande dialogruta visas:

    dialogrutan säkerhetsvarning

    Välj Ja om du samtycker till att lita på utvecklingscertifikatet.

    Information om hur du litar på Webbläsaren Firefox finns i Firefox SEC_ERROR_INADEQUATE_KEY_USAGE certifikatfel.

    Visual Studio:

    • Startar servern Kestrel.
    • Startar en webbläsare.
    • Navigerar till http://localhost:port, till exempel http://localhost:7042.
      • port: Ett slumpmässigt tilldelat portnummer för appen.
      • localhost: Standardvärdnamnet för den lokala datorn. Localhost hanterar endast webbbegäranden från den lokala datorn.

Loggarna visar att tjänsten lyssnar på https://localhost:<port>, där <port> är det localhost-portnummer som tilldelas slumpmässigt när projektet skapas och sätts i Properties/launchSettings.json.

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

Anteckning

GRPC-mallen är konfigurerad för att använda Transport Layer Security (TLS). gRPC-klienter måste använda HTTPS för att anropa servern. Portnumret för gRPC-tjänsten localhost tilldelas slumpmässigt när projektet skapas och anges i Egenskaper\launchSettings.jspå fil i gRPC-tjänstprojektet.

Granska projektfilerna

GrpcGreeter projektfiler:

  • Protos/greet.proto: definierar Greeter gRPC och används för att generera gRPC-servertillgångarna. Mer information finns i Introduktion till gRPC-.
  • Services mapp: Innehåller implementeringen av Greeter-tjänsten.
  • appSettings.json: Innehåller konfigurationsdata som det protokoll som används av Kestrel. Mer information finns i Configuration i ASP.NET Core.
  • Program.cs, som innehåller:

Skapa gRPC-klienten i en .NET-konsolapp

  • Öppna en andra instans av Visual Studio och välj Nytt projekt.
  • I dialogrutan Skapa ett nytt projekt väljer du Konsolappoch väljer Nästa.
  • I textrutan Projektnamn anger du GrpcGreeterClient och väljer Nästa.
  • I dialogrutan Ytterligare information väljer du .NET 8.0 (långsiktig support) och väljer sedan Skapa.

Lägga till nödvändiga NuGet-paket

GRPC-klientprojektet kräver följande NuGet-paket:

  • Grpc.Net.Client, som innehåller .NET Core-klienten.
  • Google.Protobuf, som innehåller protobuf-meddelande-API:er för C#.
  • Grpc.Tools, som innehåller C#-verktygsstöd för protobuf-filer. Verktygspaketet behövs inte vid körning, så beroendet har märkts med PrivateAssets="All".

Installera paketen med antingen Package Manager Console (PMC) eller Hantera NuGet-paket.

PMC-alternativ för att installera paket

  • I Visual Studio väljer du Tools>NuGet Package Manager>Package Manager Console

  • Från fönstret Package Manager Console kör du cd GrpcGreeterClient för att ändra kataloger till mappen som innehåller GrpcGreeterClient.csproj-filerna.

  • Kör följande kommandon:

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

Alternativet 'Hantera NuGet-paket' för att installera paket

  • Högerklicka på projektet i Solution Explorer>Hantera NuGet-paket.
  • Välj fliken Bläddra.
  • Ange Grpc.Net.Client i sökrutan.
  • Välj Grpc.Net.Client-paketet på fliken Bläddra och välj Installera.
  • Upprepa för Google.Protobuf och Grpc.Tools.

Lägg till greet.proto

  • Skapa en Protos- mapp i gRPC-klientprojektet.

  • Kopiera filen Protos\greet.proto från gRPC Greeter-tjänsten till mappen Protos i gRPC-klientprojektet.

  • Uppdatera namnområdet i filen greet.proto till projektets namnområde:

    option csharp_namespace = "GrpcGreeterClient";
    
  • Redigera GrpcGreeterClient.csproj-projektfilen:

Högerklicka på projektet och välj Redigera projektfil.

  • Lägg till en objektgrupp med ett <Protobuf> element som refererar till filen greet.proto:

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

Skapa Greeter-klienten

  • Skapa klientprojektet för att skapa typerna i GrpcGreeterClient namnområdet.

Not

De GrpcGreeterClient typerna genereras automatiskt av byggprocessen. Verktygspaketet Grpc.Tools genererar följande filer baserat på filen greet.proto:

  • GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs: Den protokollbuffertkod som fyller, serialiserar och hämtar meddelandetyperna för begäran och svar.
  • GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs: Innehåller de genererade klientklasserna.

Mer information om C#-tillgångarna som genereras automatiskt av Grpc.Toolsfinns i gRPC-tjänster med C#: Genererade C#-tillgångar.

  • Uppdatera gRPC-klientens Program.cs fil med följande kod.

    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();
    
  • I föregående markerade kod ersätter du portnumret localhost 7042 med det HTTPS portnummer som anges i Properties/launchSettings.json i GrpcGreeter-tjänstprojektet.

Program.cs innehåller startpunkten och logiken för gRPC-klienten.

Greeter-klienten skapas av:

  • Instansiera en GrpcChannel som innehåller information för att skapa anslutningen till gRPC-tjänsten.
  • Använd GrpcChannel för att skapa Greeter-klienten:
// 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();

Greeter-klienten anropar den asynkrona SayHello-metoden. Resultatet av SayHello-anropet visas:

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

Testa gRPC-klienten med gRPC Greeter-tjänsten

Uppdatera filen appsettings.Development.json genom att lägga till följande markerade rader:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
      ,"Microsoft.AspNetCore.Hosting": "Information",
      "Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information"
    }
  }
}
  • I greeter-tjänsten trycker du på Ctrl+F5 för att starta servern utan felsökningsprogrammet.
  • I GrpcGreeterClient-projektet trycker du på Ctrl+F5 för att starta klienten utan felsökningsprogrammet.

Klienten skickar en hälsning till tjänsten med ett meddelande som innehåller dess namn, GreeterClient. Tjänsten skickar meddelandet "Hello GreeterClient" som ett svar. Svaret "Hello GreeterClient" visas i kommandotolken:

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

gRPC-tjänsten registrerar information om det lyckade anropet i de loggar som visas i kommandotolken.

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

Not

Koden i den här artikeln kräver ASP.NET Core HTTPS-utvecklingscertifikat för att skydda gRPC-tjänsten. Om .NET gRPC-klienten misslyckas med meddelandet The remote certificate is invalid according to the validation procedure. eller The SSL connection could not be established., är utvecklingscertifikatet inte att lita på. Information om hur du åtgärdar det här problemet finns i Anropa en gRPC-tjänst med ett ej betrott/ogiltigt certifikat.

Nästa steg

Den här handledningen visar hur du skapar en .NET Core-gRPC--klient och en ASP.NET Core gRPC-server. I slutet har du en gRPC-klient som kommunicerar med gRPC Greeter-tjänsten.

I den här handledningen:

  • Skapa en gRPC-server.
  • Skapa en gRPC-klient.
  • Testa gRPC-klienten med gRPC Greeter-tjänsten.

Förutsättningar

Skapa en gRPC-tjänst

  • Starta Visual Studio 2022 och välj Skapa ett nytt projekt.
  • I dialogrutan Skapa ett nytt projekt söker du efter gRPC. Välj ASP.NET Core gRPC Service och välj Nästa.
  • I dialogrutan Konfigurera ditt nya projekt anger du GrpcGreeter för Projektnamn. Det är viktigt att namnge projektet GrpcGreeter så att namnrymderna matchar när du kopierar och klistrar in kod.
  • Välj Nästa.
  • I dialogrutan Ytterligare information väljer du .NET 6.0 (långsiktigt stöd) och väljer sedan Skapa.

Kör tjänsten

  • Tryck på Ctrl+F5 för att köra utan felsökningsprogrammet.

    Visual Studio visar följande dialogruta när ett projekt ännu inte har konfigurerats för att använda SSL:

    Det här projektet är konfigurerat att använda SSL. För att undvika SSL-varningar i webbläsaren kan du välja att lita på det självsignerade certifikat som IIS Express har genererat. Vill du lita på IIS Express SSL-certifikatet?

    Välj Ja om du litar på IIS Express SSL-certifikatet.

    Följande dialogruta visas:

    säkerhetsvarningsdialog

    Välj Ja om du samtycker till att lita på utvecklingscertifikatet.

    Information om hur du litar på Webbläsaren Firefox finns i Firefox SEC_ERROR_INADEQUATE_KEY_USAGE certifikatfel.

    Visual Studio:

    • Startar Kestrel-servern.
    • Startar en webbläsare.
    • Navigerar till http://localhost:port, till exempel http://localhost:7042.
      • port: Ett slumpmässigt tilldelat portnummer för appen.
      • localhost: Standardvärdnamnet för den lokala datorn. Localhost hanterar endast webbbegäranden från den lokala datorn.

Loggarna visar tjänsten som lyssnar på https://localhost:<port>, där <port> är det localhost-portnummer som tilldelas slumpmässigt när projektet skapas och anges i Properties/launchSettings.json.

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

Notera

GRPC-mallen är konfigurerad för att använda Transport Layer Security (TLS). gRPC-klienter måste använda HTTPS för att anropa servern. Portnumret för gRPC-tjänsten localhost tilldelas slumpmässigt när projektet skapas och anges i Egenskaper\launchSettings.jspå fil i gRPC-tjänstprojektet.

macOS stöder inte ASP.NET Core gRPC med TLS. Ytterligare konfiguration krävs för att köra gRPC-tjänster på macOS. Mer information finns i Det går inte att starta ASP.NET Core gRPC-appen på macOS-.

Granska projektfilerna

GrpcGreeter projektfiler:

  • Protos/greet.proto: definierar Greeter gRPC och används för att generera gRPC-servertillgångarna. Mer information finns i Introduktion till gRPC-.
  • Services mapp: Innehåller implementeringen av Greeter-tjänsten.
  • appSettings.json: Innehåller konfigurationsdata som det protokoll som används av Kestrel. Mer information finns i Configuration i ASP.NET Core.
  • Program.cs, som innehåller:

Skapa gRPC-klienten i en .NET-konsolapp

  • Öppna en andra instans av Visual Studio och välj Skapa ett nytt projekt.
  • I dialogrutan Skapa ett nytt projekt väljer du Konsolprogramoch väljer Nästa.
  • I textrutan Projektnamn anger du GrpcGreeterClient och väljer Nästa.
  • I dialogrutan Ytterligare information väljer du .NET 6.0 (långsiktigt stöd) och väljer sedan Skapa.

Lägga till nödvändiga NuGet-paket

GRPC-klientprojektet kräver följande NuGet-paket:

  • Grpc.Net.Client, som innehåller .NET Core-klienten.
  • Google.Protobuf, som innehåller protobuf-meddelande-API:er för C#.
  • Grpc.Tools, som innehåller C#-verktygsstöd för protobuf-filer. Verktygspaketet krävs inte vid körning, så beroendet markeras med PrivateAssets="All".

Installera paketen med antingen Package Manager Console (PMC) eller Hantera NuGet-paket.

PMC-alternativ för att installera paket

  • I Visual Studio väljer du Tools>NuGet Package Manager>Package Manager Console

  • Från fönstret Package Manager Console kör du cd GrpcGreeterClient för att ändra kataloger till mappen som innehåller GrpcGreeterClient.csproj-filerna.

  • Kör följande kommandon:

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

Alternativet Hantera NuGet-paket för att installera paket

  • Högerklicka på projektet i Solution Explorer>Hantera NuGet-paket.
  • Välj fliken Bläddra.
  • Ange Grpc.Net.Client i sökrutan.
  • Välj Grpc.Net.Client-paketet på fliken Bläddra och välj Installera.
  • Upprepa för Google.Protobuf och Grpc.Tools.

Lägg till greet.proto

  • Skapa en Protos- mapp i gRPC-klientprojektet.

  • Kopiera filen Protos\greet.proto från gRPC Greeter-tjänsten till mappen Protos i gRPC-klientprojektet.

  • Uppdatera namnområdet i filen greet.proto till projektets namnområde:

    option csharp_namespace = "GrpcGreeterClient";
    
  • Redigera GrpcGreeterClient.csproj-projektfilen:

Högerklicka på projektet och välj Redigera projektfil.

  • Lägg till en objektgrupp med ett <Protobuf> element som refererar till filen greet.proto:

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

Skapa Greeter-klienten

  • Skapa klientprojektet för att skapa typerna i GrpcGreeterClient namnområdet.

Not

De GrpcGreeterClient typerna genereras automatiskt av byggprocessen. Verktygspaketet Grpc.Tools genererar följande filer baserat på filen greet.proto:

  • GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs: Den protokollbuffertkod som fyller, serialiserar och hämtar meddelandetyperna för begäran och svar.
  • GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs: Innehåller de genererade klientklasserna.

Mer information om C#-tillgångarna som genereras automatiskt av Grpc.Toolsfinns i gRPC-tjänster med C#: Genererade C#-tillgångar.

  • Uppdatera gRPC-klientens Program.cs fil med följande kod.

    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();
    
  • I föregående markerade kod ersätter du portnumret localhost 7042 med det HTTPS portnummer som anges i Properties/launchSettings.json i GrpcGreeter-tjänstprojektet.

Program.cs innehåller startpunkten och logiken för gRPC-klienten.

Greeter-klienten skapas av:

  • Instansiera en GrpcChannel som innehåller information för att skapa anslutningen till gRPC-tjänsten.
  • Använd GrpcChannel för att skapa Greeter-klienten:
// 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();

Greeterklienten anropar den asynkrona metoden SayHello. Resultatet av SayHello-anropet visas:

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

Testa gRPC-klienten med gRPC Greeter-tjänsten

Uppdatera filen appsettings.Development.json genom att lägga till följande markerade rader:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
      ,"Microsoft.AspNetCore.Hosting": "Information",
      "Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information"
    }
  }
}
  • I greeter-tjänsten trycker du på Ctrl+F5 för att starta servern utan felsökningsprogrammet.
  • I GrpcGreeterClient-projektet trycker du på Ctrl+F5 för att starta klienten utan felsökningsprogrammet.

Klienten skickar en hälsning till tjänsten med ett meddelande som innehåller dess namn, GreeterClient. Tjänsten skickar meddelandet "Hello GreeterClient" som ett svar. Svaret "Hello GreeterClient" visas i kommandotolken:

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

gRPC-tjänsten registrerar information om det lyckade anropet i loggarna som skrivs ut till kommandotolken.

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

Anteckning

Koden i den här artikeln kräver ASP.NET Core HTTPS-utvecklingscertifikat för att skydda gRPC-tjänsten. Om .NET gRPC-klienten misslyckas med meddelandet The remote certificate is invalid according to the validation procedure. eller The SSL connection could not be established.är utvecklingscertifikatet inte pålitligt. Information om hur du åtgärdar det här problemet finns i Anropa en gRPC-tjänst med ett ej betrott/ogiltigt certifikat.

Nästa steg

Den här handledningen visar hur du skapar en .NET Core gRPC klient och en ASP.NET Core gRPC-server. I slutet har du en gRPC-klient som kommunicerar med gRPC Greeter-tjänsten.

I den här handledningen ska du:

  • Skapa en gRPC-server.
  • Skapa en gRPC-klient.
  • Testa gRPC-klienten med gRPC Greeter-tjänsten.

Förutsättningar

Skapa en gRPC-tjänst

  • Starta Visual Studio 2022 och välj Skapa ett nytt projekt.
  • I dialogrutan Skapa ett nytt projekt söker du efter gRPC. Välj ASP.NET Core gRPC Service och välj Nästa.
  • I dialogrutan Konfigurera ditt nya projekt anger du GrpcGreeter för Projektnamn. Det är viktigt att namnge projektet GrpcGreeter så att namnrymderna matchar när du kopierar och klistrar in kod.
  • Välj Nästa.
  • I dialogrutan Ytterligare information väljer du .NET 6.0 (långsiktigt stöd) och väljer sedan Skapa.

Kör tjänsten

  • Tryck på Ctrl+F5 för att köra utan felsökningsprogrammet.

    Visual Studio visar följande dialogruta när ett projekt ännu inte har konfigurerats för att använda SSL:

    Det här projektet är konfigurerat att använda SSL. För att undvika SSL-varningar i webbläsaren kan du välja att lita på det självsignerade certifikat som IIS Express har genererat. Vill du lita på IIS Express SSL-certifikatet?

    Välj Ja om du litar på IIS Express SSL-certifikatet.

    Följande dialogruta visas:

    säkerhetsvarningsdialogruta

    Välj Ja om du samtycker till att lita på utvecklingscertifikatet.

    Information om att lita på webbläsaren Firefox finns i Firefox SEC_ERROR_INADEQUATE_KEY_USAGE certifikatfel.

    Visual Studio:

    • Startar servern Kestrel.
    • Startar en webbläsare.
    • Navigerar till http://localhost:port, till exempel http://localhost:7042.
      • port: Ett slumpmässigt tilldelat portnummer för appen.
      • localhost: Standardvärdnamnet för den lokala datorn. Localhost hanterar endast webbbegäranden från den lokala datorn.

Loggarna visar att tjänsten lyssnar på https://localhost:<port>, där <port> är det lokala portnummer som slumpmässigt tilldelas när projektet skapas och som anges i Properties/launchSettings.json.

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

Obs

GRPC-mallen är konfigurerad för att använda Transport Layer Security (TLS). gRPC-klienter måste använda HTTPS för att anropa servern. Portnumret för gRPC-tjänsten localhost tilldelas slumpmässigt när projektet skapas och anges i Egenskaper\launchSettings.jspå fil i gRPC-tjänstprojektet.

macOS stöder inte ASP.NET Core gRPC med TLS. Ytterligare konfiguration krävs för att köra gRPC-tjänster på macOS. Mer information finns i Det går inte att starta ASP.NET Core gRPC-appen på macOS-.

Granska projektfilerna

GrpcGreeter projektfiler:

  • Protos/greet.proto: definierar Greeter gRPC och används för att generera gRPC-servertillgångarna. Mer information finns i Introduktion till gRPC-.
  • Services mapp: Innehåller implementeringen av Greeter-tjänsten.
  • appSettings.json: Innehåller konfigurationsdata som det protokoll som används av Kestrel. Mer information finns i Configuration i ASP.NET Core.
  • Program.cs, som innehåller:

Skapa gRPC-klienten i en .NET-konsolapp

  • Öppna en andra instans av Visual Studio och välj Skapa ett nytt projekt.
  • I dialogrutan Skapa ett nytt projekt väljer du Konsolprogramoch väljer Nästa.
  • I textrutan Projektnamn anger du GrpcGreeterClient och väljer Nästa.
  • I dialogrutan Ytterligare information väljer du .NET 6.0 (långsiktigt stöd) och väljer sedan Skapa.

Lägga till nödvändiga NuGet-paket

GRPC-klientprojektet kräver följande NuGet-paket:

  • Grpc.Net.Client, som innehåller .NET Core-klienten.
  • Google.Protobuf, som innehåller protobuf-meddelande-API:er för C#.
  • Grpc.Tools, som innehåller C#-verktygsstöd för protobuf-filer. Verktygspaketet krävs inte vid körning, så beroendet markeras med PrivateAssets="All".

Installera paketen med antingen Package Manager Console (PMC) eller Hantera NuGet-paket.

PMC-alternativ för att installera paket

  • I Visual Studio väljer du Tools>NuGet Package Manager>Package Manager Console

  • Från fönstret Package Manager Console kör du cd GrpcGreeterClient för att ändra kataloger till mappen som innehåller GrpcGreeterClient.csproj-filerna.

  • Kör följande kommandon:

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

Hantera alternativet för NuGet-paket för att installera paket

  • Högerklicka på projektet i Solution Explorer>Hantera NuGet-paket.
  • Välj fliken Bläddra.
  • Ange Grpc.Net.Client i sökrutan.
  • Välj Grpc.Net.Client-paketet på fliken Bläddra och välj Installera.
  • Upprepa för Google.Protobuf och Grpc.Tools.

Lägg till greet.proto

  • Skapa en Protos- mapp i gRPC-klientprojektet.

  • Kopiera filen Protos\greet.proto från gRPC Greeter-tjänsten till mappen Protos i gRPC-klientprojektet.

  • Uppdatera namnområdet i filen greet.proto till projektets namnområde:

    option csharp_namespace = "GrpcGreeterClient";
    
  • Redigera GrpcGreeterClient.csproj-projektfilen:

Högerklicka på projektet och välj Redigera projektfil.

  • Lägg till en objektgrupp med ett <Protobuf> element som refererar till filen greet.proto:

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

Skapa Greeter-klienten

  • Skapa klientprojektet för att skapa typerna i GrpcGreeterClient namnområdet.

Anteckning

De GrpcGreeterClient typerna genereras automatiskt av byggprocessen. Verktygspaketet Grpc.Tools genererar följande filer baserat på filen greet.proto:

  • GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs: Den protokollbuffertkod som fyller, serialiserar och hämtar meddelandetyperna för begäran och svar.
  • GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs: Innehåller de genererade klientklasserna.

Mer information om C#-tillgångarna som genereras automatiskt av Grpc.Toolsfinns i gRPC-tjänster med C#: Genererade C#-tillgångar.

  • Uppdatera gRPC-klientens Program.cs fil med följande kod.

    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();
    
  • I föregående markerade kod ersätter du portnumret localhost 7042 med det HTTPS portnummer som anges i Properties/launchSettings.json i GrpcGreeter-tjänstprojektet.

Program.cs innehåller startpunkten och logiken för gRPC-klienten.

Greeter-klienten skapas av:

  • Instansiera en GrpcChannel som innehåller information för att skapa anslutningen till gRPC-tjänsten.
  • Använd GrpcChannel för att skapa Greeter-klienten:
// 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();

Greeter-klientprogrammet anropar den asynkrona metoden SayHello. Resultatet av SayHello-anropet visas:

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

Testa gRPC-klienten med gRPC Greeter-tjänsten

  • I greeter-tjänsten trycker du på Ctrl+F5 för att starta servern utan felsökningsprogrammet.
  • I GrpcGreeterClient-projektet trycker du på Ctrl+F5 för att starta klienten utan felsökningsprogrammet.

Klienten skickar en hälsning till tjänsten med ett meddelande som innehåller dess namn, GreeterClient. Tjänsten skickar meddelandet "Hello GreeterClient" som ett svar. Svaret "Hello GreeterClient" visas i kommandotolken:

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

gRPC-tjänsten registrerar detaljerna av det lyckade anropet i loggarna som skrivits till kommandotolken.

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

Uppdatera filen appsettings.Development.json genom att lägga till följande rader:

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

Noter

Koden i den här artikeln kräver ASP.NET Core HTTPS-utvecklingscertifikat för att skydda gRPC-tjänsten. Om .NET gRPC-klienten misslyckas och ger meddelandet The remote certificate is invalid according to the validation procedure. eller The SSL connection could not be established.är utvecklingscertifikatet inte tillförlitligt. Information om hur du åtgärdar det här problemet finns i Anropa en gRPC-tjänst med ett ej betrott/ogiltigt certifikat.

Nästa steg

Den här självstudien visar hur du skapar en .NET Core-gRPC--klient och en ASP.NET Core gRPC Server.

I slutet har du en gRPC-klient som kommunicerar med gRPC Greeter-tjänsten.

Visa eller ladda ned exempelkod (hur du laddar ned).

I den här handledningen:

  • Skapa en gRPC-server.
  • Skapa en gRPC-klient.
  • Testa gRPC-klienten med gRPC Greeter-tjänsten.

Förutsättningar

Skapa en gRPC-tjänst

  • Starta Visual Studio och välj Skapa ett nytt projekt.
  • I dialogrutan Skapa ett nytt projekt väljer du gRPC Service och väljer Nästa.
  • I dialogrutan Konfigurera ditt nya projekt anger du GrpcGreeter för Projektnamn. Det är viktigt att namnge projektet GrpcGreeter så att namnrymderna matchar när du kopierar och klistrar in kod.
  • Välj Nästa.
  • I dialogrutan Ytterligare information väljer du .NET 5.0 i listrutan Target Framework.
  • Välj Skapa.

Kör tjänsten

  • Tryck på Ctrl+F5 för att köra utan felsökningsprogrammet.

    Visual Studio visar följande dialogruta när ett projekt ännu inte har konfigurerats för att använda SSL:

    Det här projektet är konfigurerat att använda SSL. För att undvika SSL-varningar i webbläsaren kan du välja att lita på det självsignerade certifikat som IIS Express har genererat. Vill du lita på IIS Express SSL-certifikatet?

    Välj Ja om du litar på IIS Express SSL-certifikatet.

    Följande dialogruta visas:

    Dialogrutan för säkerhetsvarning

    Välj Ja om du samtycker till att lita på utvecklingscertifikatet.

    För information om hur du kan få förtroende för webbläsaren Firefox, se Firefox SEC_ERROR_INADEQUATE_KEY_USAGE certifikatfel.

    Visual Studio startar IIS Express och kör appen. Adressfältet visar localhost:port# och inte något som liknar example.com. Det beror på att localhost är standardvärdnamnet för den lokala datorn. Localhost hanterar endast webbbegäranden från den lokala datorn. När Visual Studio skapar ett webbprojekt används en slumpmässig port för webbservern.

Tjänsten visar att loggarna lyssnar på 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

Anteckning

GRPC-mallen är konfigurerad för att använda Transport Layer Security (TLS). gRPC-klienter måste använda HTTPS för att anropa servern.

macOS stöder inte ASP.NET Core gRPC med TLS. Ytterligare konfiguration krävs för att köra gRPC-tjänster på macOS. Mer information finns i Det går inte att starta ASP.NET Core gRPC-appen på macOS-.

Granska projektfilerna

GrpcGreeter projektfiler:

  • greet.proto: Filen Protos/greet.proto definierar Greeter gRPC och används för att generera gRPC-servertillgångarna. Mer information finns i Introduktion till gRPC-.
  • Services mapp: Innehåller implementeringen av Greeter-tjänsten.
  • appsettings.json: Innehåller konfigurationsdata, till exempel protokoll som används av Kestrel. Mer information finns i Configuration i ASP.NET Core.
  • Program.cs: Innehåller startpunkten för gRPC-tjänsten. Mer information finns i .NET Generic Host i ASP.NET Core.
  • Startup.cs: Innehåller kod som konfigurerar appbeteende. Mer information finns i appstart.

Skapa gRPC-klienten i en .NET-konsolapp

  • Öppna en andra instans av Visual Studio och välj Skapa ett nytt projekt.
  • I dialogrutan Skapa ett nytt projekt väljer du Console App (.NET Core) och väljer Nästa.
  • I textrutan Projektnamn anger du GrpcGreeterClient och väljer Skapa.

Lägga till nödvändiga paket

GRPC-klientprojektet kräver följande paket:

  • Grpc.Net.Client, som innehåller .NET Core-klienten.
  • Google.Protobuf, som innehåller protobuf-meddelande-API:er för C#.
  • Grpc.Tools, som innehåller C#-verktygsstöd för protobuf-filer. Verktygspaketet krävs inte vid körning, så beroendet markeras med PrivateAssets="All".

Installera paketen med antingen Package Manager Console (PMC) eller Hantera NuGet-paket.

PMC-alternativ för att installera paket

  • I Visual Studio väljer du Tools>NuGet Package Manager>Package Manager Console

  • Från fönstret Package Manager Console kör du cd GrpcGreeterClient för att ändra kataloger till mappen som innehåller GrpcGreeterClient.csproj-filerna.

  • Kör följande kommandon:

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

Alternativet "Hantera NuGet-paket" för att installera paket

  • Högerklicka på projektet i Solution Explorer>Hantera NuGet-paket.
  • Välj fliken Bläddra.
  • Ange Grpc.Net.Client i sökrutan.
  • Välj Grpc.Net.Client-paketet på fliken Bläddra och välj Installera.
  • Upprepa för Google.Protobuf och Grpc.Tools.

Lägg till greet.proto

  • Skapa en Protos- mapp i gRPC-klientprojektet.

  • Kopiera filen Protos\greet.proto från gRPC Greeter-tjänsten till mappen Protos i gRPC-klientprojektet.

  • Uppdatera namnområdet i filen greet.proto till projektets namnområde:

    option csharp_namespace = "GrpcGreeterClient";
    
  • Redigera GrpcGreeterClient.csproj-projektfilen:

    Högerklicka på projektet och välj Redigera projektfil.


  • Lägg till en objektgrupp med ett <Protobuf> element som refererar till filen greet.proto:

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

Skapa Greeter-klienten

  • Skapa klientprojektet för att skapa typerna i GrpcGreeterClient namnområdet.

Obs

De GrpcGreeterClient typerna genereras automatiskt av byggprocessen. Verktygspaketet Grpc.Tools genererar följande filer baserat på filen greet.proto:

  • GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs: Den protokollbuffertkod som fyller, serialiserar och hämtar meddelandetyperna för begäran och svar.
  • GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs: Innehåller de genererade klientklasserna.

Mer information om C#-tillgångarna som genereras automatiskt av Grpc.Toolsfinns i gRPC-tjänster med C#: Genererade C#-tillgångar.

  • Uppdatera gRPC-klientens Program.cs fil med följande kod:

    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 innehåller startpunkten och logiken för gRPC-klienten.

Greeter-klienten skapas av:

  • Instansiera en GrpcChannel som innehåller information för att skapa anslutningen till gRPC-tjänsten.
  • Använd GrpcChannel för att skapa Greeter-klienten:
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();
}

Greeter-klienten anropar den asynkrona SayHello-metoden. Resultatet av SayHello-anropet visas:

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

Testa gRPC-klienten med gRPC Greeter-tjänsten

  • I greeter-tjänsten trycker du på Ctrl+F5 för att starta servern utan felsökningsprogrammet.
  • I GrpcGreeterClient-projektet trycker du på Ctrl+F5 för att starta klienten utan felsökningsprogrammet.

Klienten skickar en hälsning till tjänsten med ett meddelande som innehåller dess namn, GreeterClient. Tjänsten skickar meddelandet "Hello GreeterClient" som ett svar. Svaret "Hello GreeterClient" visas i kommandotolken:

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

gRPC-tjänsten registrerar information om det lyckade anropet i loggarna som skrivits till kommandoprompten.

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

Not

Koden i den här artikeln kräver ASP.NET Core HTTPS-utvecklingscertifikat för att skydda gRPC-tjänsten. Om .NET gRPC-klienten ger felmeddelandet The remote certificate is invalid according to the validation procedure. eller The SSL connection could not be established.är utvecklingscertifikatet inte betrott. Information om hur du åtgärdar det här problemet finns i Anropa en gRPC-tjänst med ett ej betrott/ogiltigt certifikat.

Nästa steg

Den här självstudien visar hur du skapar en .NET Core-gRPC--klient och en ASP.NET Core gRPC-server.

I slutet har du en gRPC-klient som kommunicerar med gRPC Greeter-tjänsten.

Visa eller ladda ned exempelkod (hur du laddar ned).

I den här handledningen:

  • Skapa en gRPC-server.
  • Skapa en gRPC-klient.
  • Testa gRPC-klienten med gRPC Greeter-tjänsten.

Förutsättningar

Skapa en gRPC-tjänst

  • Starta Visual Studio och välj Skapa ett nytt projekt. Alternativt, på Visual Studio Arkiv menyn, välj Nytt>Projekt.

  • I dialogrutan Skapa ett nytt projekt väljer du gRPC Service och väljer Nästa:

    Skapa nytt projekt-dialogruta i Visual Studio

  • Ge projektet namnet GrpcGreeter. Det är viktigt att namnge projektet GrpcGreeter så att namnrymderna matchar när du kopierar och klistrar in kod.

  • Välj Skapa.

  • I dialogrutan Skapa en ny gRPC-tjänst:

    • Mallen gRPC Service är markerad.
    • Välj Skapa.

Kör tjänsten

  • Tryck på Ctrl+F5 för att köra utan felsökningsprogrammet.

    Visual Studio visar följande dialogruta när ett projekt ännu inte har konfigurerats för att använda SSL:

    Det här projektet är konfigurerat att använda SSL. För att undvika SSL-varningar i webbläsaren kan du välja att lita på det självsignerade certifikat som IIS Express har genererat. Vill du lita på IIS Express SSL-certifikatet?

    Välj Ja om du litar på IIS Express SSL-certifikatet.

    Följande dialogruta visas:

    säkerhetsvarningsdialogrutan

    Välj Ja om du samtycker till att lita på utvecklingscertifikatet.

    Information om hur du kan lita på webbläsaren Firefox finns i Firefox SEC_ERROR_INADEQUATE_KEY_USAGE certifikatfel.

    Visual Studio startar IIS Express och kör appen. Adressfältet visar localhost:port# och inte något som liknar example.com. Det beror på att localhost är standardvärdnamnet för den lokala datorn. Localhost hanterar endast webbbegäranden från den lokala datorn. När Visual Studio skapar ett webbprojekt används en slumpmässig port för webbservern.

Loggarna visar att tjänsten lyssnar på 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

Anteckning

GRPC-mallen är konfigurerad för att använda Transport Layer Security (TLS). gRPC-klienter måste använda HTTPS för att anropa servern.

macOS stöder inte ASP.NET Core gRPC med TLS. Ytterligare konfiguration krävs för att köra gRPC-tjänster på macOS. Mer information finns i Det går inte att starta ASP.NET Core gRPC-appen på macOS-.

Granska projektfilerna

GrpcGreeter projektfiler:

  • greet.proto: Filen Protos/greet.proto definierar Greeter gRPC och används för att generera gRPC-servertillgångarna. Mer information finns i Introduktion till gRPC-.
  • Services mapp: Innehåller implementeringen av Greeter-tjänsten.
  • appsettings.json: Innehåller konfigurationsdata, till exempel protokoll som används av Kestrel. Mer information finns i Configuration i ASP.NET Core.
  • Program.cs: Innehåller startpunkten för gRPC-tjänsten. Mer information finns i .NET Generic Host i ASP.NET Core.
  • Startup.cs: Innehåller kod som konfigurerar appbeteende. Mer information finns i Appstart.

Skapa gRPC-klienten i en .NET-konsolapp

  • Öppna en andra instans av Visual Studio och välj Skapa ett nytt projekt.
  • I dialogrutan Skapa ett nytt projekt väljer du Console App (.NET Core) och väljer Nästa.
  • I textrutan Projektnamn anger du GrpcGreeterClient och väljer Skapa.

Lägga till nödvändiga paket

GRPC-klientprojektet kräver följande paket:

  • Grpc.Net.Client, som innehåller .NET Core-klienten.
  • Google.Protobuf, som innehåller protobuf-meddelande-API:er för C#.
  • Grpc.Tools, som innehåller C#-verktygsstöd för protobuf-filer. Verktygspaketet krävs inte vid körning, så beroendet markeras med PrivateAssets="All".

Installera paketen med antingen Package Manager Console (PMC) eller Hantera NuGet-paket.

PMC-alternativ för att installera paket

  • I Visual Studio väljer du Tools>NuGet Package Manager>Package Manager Console

  • Från fönstret Package Manager Console kör du cd GrpcGreeterClient för att ändra kataloger till mappen som innehåller GrpcGreeterClient.csproj-filerna.

  • Kör följande kommandon:

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

Alternativet "Hantera NuGet-paket" för att installera paket

  • Högerklicka på projektet i Solution Explorer>Hantera NuGet-paket.
  • Välj fliken Bläddra.
  • Ange Grpc.Net.Client i sökrutan.
  • Välj Grpc.Net.Client-paketet på fliken Bläddra och välj Installera.
  • Upprepa för Google.Protobuf och Grpc.Tools.

Lägg till greet.proto

  • Skapa en Protos- mapp i gRPC-klientprojektet.

  • Kopiera filen Protos\greet.proto från gRPC Greeter-tjänsten till mappen Protos i gRPC-klientprojektet.

  • Uppdatera namnområdet i filen greet.proto till projektets namnområde:

    option csharp_namespace = "GrpcGreeterClient";
    
  • Redigera GrpcGreeterClient.csproj-projektfilen:

    Högerklicka på projektet och välj Redigera projektfil.


  • Lägg till en objektgrupp med ett <Protobuf> element som refererar till filen greet.proto:

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

Skapa Greeter-klienten

  • Skapa klientprojektet för att skapa typerna i GrpcGreeterClient namnområdet.

Not

De GrpcGreeterClient typerna genereras automatiskt av byggprocessen. Verktygspaketet Grpc.Tools genererar följande filer baserat på filen greet.proto:

  • GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs: Den protokollbuffertkod som fyller, serialiserar och hämtar meddelandetyperna för begäran och svar.
  • GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs: Innehåller de genererade klientklasserna.

Mer information om C#-tillgångarna som genereras automatiskt av Grpc.Toolsfinns i gRPC-tjänster med C#: Genererade C#-tillgångar.

Uppdatera gRPC-klientens Program.cs fil med följande kod:

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 innehåller startpunkten och logiken för gRPC-klienten.

Greeter-klienten skapas av:

  • Instansiera en GrpcChannel som innehåller information för att skapa anslutningen till gRPC-tjänsten.
  • Använd GrpcChannel för att skapa Greeter-klienten:
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();
}

Greeter-klienten anropar den asynkrona metoden SayHello. Resultatet av SayHello-anropet visas:

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

Testa gRPC-klienten med gRPC Greeter-tjänsten

  • I greeter-tjänsten trycker du på Ctrl+F5 för att starta servern utan felsökningsprogrammet.
  • I GrpcGreeterClient-projektet trycker du på Ctrl+F5 för att starta klienten utan felsökningsprogrammet.

Klienten skickar en hälsning till tjänsten med ett meddelande som innehåller dess namn, GreeterClient. Tjänsten skickar meddelandet "Hello GreeterClient" som ett svar. Svaret "Hello GreeterClient" visas i kommandotolken:

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

gRPC-tjänsten registrerar information om det lyckade anropet i loggarna som skrivs ut till kommandotolken.

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

Notera

Koden i den här artikeln kräver ASP.NET Core HTTPS-utvecklingscertifikat för att skydda gRPC-tjänsten. Om .NET gRPC-klienten misslyckas och visar meddelandet The remote certificate is invalid according to the validation procedure. eller The SSL connection could not be established., är utvecklingscertifikatet inte betrott. Information om hur du åtgärdar det här problemet finns i Anropa en gRPC-tjänst med ett ej betrott/ogiltigt certifikat.

Nästa steg