Úvod do gRPC v .NET

Od James Newton – král

gRPC je jazyk nezávislá, vysoce výkonné rozhraní vzdáleného volání procedur (RPC).

Mezi výhody gRPC patří:

  • Moderní, výkonná a jednoduchá architektura RPC
  • Vývoj rozhraní API začínající kontraktem, který standardně využívá vyrovnávací paměti protokolů, čímž umožňuje implementace nezávislé na jazycích
  • Nástroje dostupné pro řadu jazyků, se kterými lze generovat servery a klienty silného typu
  • Podpora volání klienta, serveru a obousměrného streamování
  • Menší využití sítě díky binární serializaci Protobuf

Díky těmto výhodám je gRPC ideální pro:

  • Odlehčené mikroslužby, ve kterých je efektivita nejdůležitější.
  • Polyglot systémy, ve kterých se pro vývoj vyžaduje více jazyků.
  • Služby v reálném čase Point-to-Point, které potřebují zpracovávat žádosti o streamování nebo odpovědi.

Upozornění

ASP.NET Core gRPC má další požadavky pro použití s Azure App Service nebo službou IIS. Další informace o tom, kde lze použít gRPC, naleznete v tématu gRPC na platformách podporovaných .NET .

Podpora nástrojů C# pro soubory.

gRPC využívá přístup ke vývoji rozhraní API, který je prvním kontraktem. Služby a zprávy jsou definovány v souboru * . proto soubory:

syntax = "proto3";

service Greeter {
  rpc SayHello (HelloRequest) returns (HelloReply);
}

message HelloRequest {
  string name = 1;
}

message HelloReply {
  string message = 1;
}

Typy .NET pro služby, klienty a zprávy jsou automaticky generovány zahrnutím * souborů do projektu:

  • Přidejte odkaz na balíček do balíčku Grpc. Tools .
  • Do skupiny položek přidejte soubory * .. . <Protobuf>
<ItemGroup>
  <Protobuf Include="Protos\greet.proto" />
</ItemGroup>

Další informace o podpoře nástrojů gRPC naleznete v tématu Služby gRPC s jazykem C# .

gRPC Services na ASP.NET Core

služby gRPC lze hostovat na ASP.NET Core. služby mají úplnou integraci s ASP.NET Core funkcemi, jako je protokolování, vkládání závislostí (DI), ověřování a autorizace.

přidání služeb gRPC services do aplikace ASP.NET Core

gRPC vyžaduje balíček gRPC. AspNetCore . Informace o konfiguraci gRPC v aplikaci .NET najdete v tématu Configure gRPC.

Šablona projektu služby gRPC

šablona projektu služby ASP.NET Core gRPC poskytuje počáteční službu:

public class GreeterService : Greeter.GreeterBase
{
    private readonly ILogger<GreeterService> _logger;

    public GreeterService(ILogger<GreeterService> logger)
    {
        _logger = logger;
    }

    public override Task<HelloReply> SayHello(HelloRequest request,
        ServerCallContext context)
    {
        _logger.LogInformation("Saying hello to {Name}", request.Name);
        return Task.FromResult(new HelloReply 
        {
            Message = "Hello " + request.Name
        });
    }
}

GreeterServicedědí z GreeterBase typu, který je vygenerován ze Greeter služby v souboru * .. . Služba je zpřístupněna klientům v programu. cs:

app.UseEndpoints(endpoints =>
{
    endpoints.MapGrpcService<GreeterService>();
});

Další informace o službách gRPC Services v ASP.NET Core najdete v tématu Služby gRPC s ASP.NET Core .

Volání služeb gRPC Services pomocí klienta .NET

gRPC klienti jsou konkrétní typy klientů, které jsou vygenerovány ze souborů * . proto. Konkrétní klient gRPC má metody, které se převádějí do služby gRPC v souboru * .. .

var channel = GrpcChannel.ForAddress("https://localhost:5001");
var client = new Greeter.GreeterClient(channel);

var response = await client.SayHelloAsync(
    new HelloRequest { Name = "World" });

Console.WriteLine(response.Message);

Klient gRPC se vytvoří pomocí kanálu, který představuje dlouhodobé připojení ke službě gRPC. Kanál se dá vytvořit pomocí GrpcChannel.ForAddress .

Další informace o vytváření klientů a volání různých metod služby najdete v tématu Volání služeb gRPC pomocí klienta .NET .

Další zdroje informací

gRPC je jazyk nezávislá, vysoce výkonné rozhraní vzdáleného volání procedur (RPC).

Mezi výhody gRPC patří:

  • Moderní, výkonná a jednoduchá architektura RPC
  • Vývoj rozhraní API začínající kontraktem, který standardně využívá vyrovnávací paměti protokolů, čímž umožňuje implementace nezávislé na jazycích
  • Nástroje dostupné pro řadu jazyků, se kterými lze generovat servery a klienty silného typu
  • Podpora volání klienta, serveru a obousměrného streamování
  • Menší využití sítě díky binární serializaci Protobuf

Díky těmto výhodám je gRPC ideální pro:

  • Odlehčené mikroslužby, ve kterých je efektivita nejdůležitější.
  • Polyglot systémy, ve kterých se pro vývoj vyžaduje více jazyků.
  • Služby v reálném čase Point-to-Point, které potřebují zpracovávat žádosti o streamování nebo odpovědi.

Upozornění

ASP.NET Core gRPC má další požadavky pro použití s Azure App Service nebo službou IIS. Další informace o tom, kde lze použít gRPC, naleznete v tématu gRPC na platformách podporovaných .NET .

Podpora nástrojů C# pro soubory.

gRPC využívá přístup ke vývoji rozhraní API, který je prvním kontraktem. Služby a zprávy jsou definovány v souboru * . proto soubory:

syntax = "proto3";

service Greeter {
  rpc SayHello (HelloRequest) returns (HelloReply);
}

message HelloRequest {
  string name = 1;
}

message HelloReply {
  string message = 1;
}

Typy .NET pro služby, klienty a zprávy jsou automaticky generovány zahrnutím * souborů do projektu:

  • Přidejte odkaz na balíček do balíčku Grpc. Tools .
  • Do skupiny položek přidejte soubory * .. . <Protobuf>
<ItemGroup>
  <Protobuf Include="Protos\greet.proto" />
</ItemGroup>

Další informace o podpoře nástrojů gRPC naleznete v tématu Služby gRPC s jazykem C# .

gRPC Services na ASP.NET Core

služby gRPC lze hostovat na ASP.NET Core. služby mají úplnou integraci s ASP.NET Core funkcemi, jako je protokolování, vkládání závislostí (DI), ověřování a autorizace.

přidání služeb gRPC services do aplikace ASP.NET Core

gRPC vyžaduje balíček gRPC. AspNetCore . Informace o konfiguraci gRPC v aplikaci .NET najdete v tématu Configure gRPC.

Šablona projektu služby gRPC

Šablona projektu služby gRPC poskytuje počáteční službu:

public class GreeterService : Greeter.GreeterBase
{
    private readonly ILogger<GreeterService> _logger;

    public GreeterService(ILogger<GreeterService> logger)
    {
        _logger = logger;
    }

    public override Task<HelloReply> SayHello(HelloRequest request,
        ServerCallContext context)
    {
        _logger.LogInformation("Saying hello to {Name}", request.Name);
        return Task.FromResult(new HelloReply 
        {
            Message = "Hello " + request.Name
        });
    }
}

GreeterServicedědí z GreeterBase typu, který je vygenerován ze Greeter služby v souboru * .. . Služba je k dispozici pro klienty při spuštění. cs:

app.UseEndpoints(endpoints =>
{
    endpoints.MapGrpcService<GreeterService>();
});

Další informace o službách gRPC Services v ASP.NET Core najdete v tématu Služby gRPC s ASP.NET Core .

Volání služeb gRPC Services pomocí klienta .NET

gRPC klienti jsou konkrétní typy klientů, které jsou vygenerovány ze souborů * . proto. Konkrétní klient gRPC má metody, které se převádějí do služby gRPC v souboru * .. .

var channel = GrpcChannel.ForAddress("https://localhost:5001");
var client = new Greeter.GreeterClient(channel);

var response = await client.SayHelloAsync(
    new HelloRequest { Name = "World" });

Console.WriteLine(response.Message);

Klient gRPC se vytvoří pomocí kanálu, který představuje dlouhodobé připojení ke službě gRPC. Kanál se dá vytvořit pomocí GrpcChannel.ForAddress .

Další informace o vytváření klientů a volání různých metod služby najdete v tématu Volání služeb gRPC pomocí klienta .NET .

Další materiály