Přehled gRPC v .NET
Autor: James Newton-King
gRPC je výkonná architektura využívající vzdálené volání procedur (RPC) nezávislá na programovacím jazyku.
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:
- Jednoduché mikroslužby, u kterých je důležitá efektivita
- Polyglotní systémy, při jejichž vývoji se vyžaduje více jazyků
- Služby typu point-to-point fungující v reálném čase, které musí zpracovávat požadavky nebo odpovědi streamování
Podpora nástrojů jazyka C# pro soubory .proto
V gRPC se při vývoji rozhraní API používá přístup založený na kontraktech. Služby a zprávy se definují v souborech .proto
:
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 se generují automaticky vložením souborů .proto
do projektu:
- Přidejte odkaz na balíček Grpc.Tools.
- Přidejte soubory
.proto
do skupiny položek<Protobuf>
.
<ItemGroup>
<Protobuf Include="Protos\greet.proto" />
</ItemGroup>
Další informace o podpoře nástrojů gRPC najdete v tématu Služby gRPC v jazyce C#.
Služby gRPC v ASP.NET Core
Služby gRPC je možné hostovat v ASP.NET Core. Služby jsou plně integrované s funkcemi ASP.NET Core, jako jsou protokolování, injektáž závislostí, ověřování nebo autorizace.
Přidání služeb gRPC do aplikace ASP.NET Core
Pro gRPC se vyžaduje balíček Grpc.AspNetCore. Informace o konfiguraci gRPC v aplikaci .NET najdete v části Konfigurace gRPC.
Šablona projektu služby gRPC
Šablona projektu služby ASP.NET Core gRPC nabízí základní 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
});
}
}
Třída GreeterService
dědí typ z třídy GreeterBase
, která se generuje ze služby Greeter
v souboru .proto
. Služba je přístupná klientům v souboru Program.cs
:
app.MapGrpcService<GreeterService>();
Další informace o službách gRPC v ASP.NET Core najdete v tématu Služby gRPC v ASP.NET Core.
Volání služeb gRPC pomocí klienta .NET
Klienti gRPC jsou konkrétní typy klientů, kteří se generují ze souborů .proto
. Konkrétní klient gRPC obsahuje metody, které se překládají na službu gRPC v souboru .proto
.
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 vytváří pomocí kanálu, který představuje dlouhodobé připojení ke službě gRPC. Kanál je možné vytvořit pomocí metody GrpcChannel.ForAddress
.
Další informace o vytváření klientů a volání různých metod služeb najdete v tématu Volání služeb gRPC pomocí klienta .NET.
Další prostředky
gRPC je výkonná architektura využívající vzdálené volání procedur (RPC) nezávislá na programovacím jazyku.
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:
- Jednoduché mikroslužby, u kterých je důležitá efektivita
- Polyglotní systémy, při jejichž vývoji se vyžaduje více jazyků
- Služby typu point-to-point fungující v reálném čase, které musí zpracovávat požadavky nebo odpovědi streamování
Podpora nástrojů jazyka C# pro soubory .proto
V gRPC se při vývoji rozhraní API používá přístup založený na kontraktech. Služby a zprávy se definují v souborech .proto
:
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 se generují automaticky vložením souborů .proto
do projektu:
- Přidejte odkaz na balíček Grpc.Tools.
- Přidejte soubory
.proto
do skupiny položek<Protobuf>
.
<ItemGroup>
<Protobuf Include="Protos\greet.proto" />
</ItemGroup>
Další informace o podpoře nástrojů gRPC najdete v tématu Služby gRPC v jazyce C#.
Služby gRPC v ASP.NET Core
Služby gRPC je možné hostovat v ASP.NET Core. Služby jsou plně integrované s funkcemi ASP.NET Core, jako jsou protokolování, injektáž závislostí, ověřování nebo autorizace.
Přidání služeb gRPC do aplikace ASP.NET Core
Pro gRPC se vyžaduje balíček Grpc.AspNetCore. Informace o konfiguraci gRPC v aplikaci .NET najdete v části Konfigurace gRPC.
Šablona projektu služby gRPC
Šablona projektu služby gRPC nabízí základní 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
});
}
}
Třída GreeterService
dědí typ z třídy GreeterBase
, která se generuje ze služby Greeter
v souboru .proto
. Služba je přístupná klientům v souboru Startup.cs
:
app.UseEndpoints(endpoints =>
{
endpoints.MapGrpcService<GreeterService>();
});
Další informace o službách gRPC v ASP.NET Core najdete v tématu Služby gRPC v ASP.NET Core.
Volání služeb gRPC pomocí klienta .NET
Klienti gRPC jsou konkrétní typy klientů, kteří se generují ze souborů .proto
. Konkrétní klient gRPC obsahuje metody, které se překládají na službu gRPC v souboru .proto
.
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 vytváří pomocí kanálu, který představuje dlouhodobé připojení ke službě gRPC. Kanál je možné vytvořit pomocí metody GrpcChannel.ForAddress
.
Další informace o vytváření klientů a volání různých metod služeb najdete v tématu Volání služeb gRPC pomocí klienta .NET.
Další prostředky
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro