Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Note
Toto není nejnovější verze tohoto článku. Aktuální verzi najdete ve verzi .NET 10 tohoto článku.
Warning
Tato verze ASP.NET Core se už nepodporuje. Další informace najdete v zásadách podpory .NET a .NET Core. Aktuální verzi najdete ve verzi .NET 10 tohoto článku.
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 lehký RPC framework.
- Vývoj API založený na specifikaci kontraktu, který ve výchozím nastavení používá Protocol Buffers, což umožňuje implementace nezávislé na jazyku.
- Nástroje dostupné pro mnoho jazyků pro generování serverů a klientů se silným typováním.
- 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 bod-bod v reálném čase, které musí zpracovávat streamovací požadavky nebo odpovědi.
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 jsou definovány v souborech .proto :
syntax = "proto3";
service Greeter {
rpc SayHello (HelloRequest) returns (HelloReply);
}
message HelloRequest {
string name = 1;
}
message HelloReply {
string message = 1;
}
.NET typy služeb, klientů a zpráv se automaticky generují zahrnutím souborů .proto v projektu:
- Přidejte odkaz na balíček Grpc.Tools .
- Přidejte soubory .proto do
<Protobuf>skupiny položek.
<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(ILogger<GreeterService> logger) : Greeter.GreeterBase
{
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
});
}
}
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
});
}
}
GreeterService je odvozen z typu 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 najdete v tématu služby gRPC s ASP.NET Core.
Volání služby gRPC s klientem .NET
Klienti gRPC jsou konkrétní typy klientů, které jsou generovány ze souborů .proto. Konkrétní klient gRPC má metody, které se překládají do služby 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 je vytvořen pomocí kanálu, který představuje dlouhodobé připojení ke službě gRPC. Kanál lze vytvořit pomocí .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.
Související obsah
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 lehký RPC framework.
- Vývoj rozhraní API s návrhem kontraktu jako prvním krokem, který standardně využívá Protocol Buffers, čímž umožňuje jazykově nezávislé implementace.
- Nástroje dostupné pro mnoho jazyků na generování serverů a klientů s přísnými typovými pravidly
- 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 pracující v reálném čase, které musí zpracovávat streamové požadavky nebo odpovědi.
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
.protodo skupiny položek<Protobuf>.
<ItemGroup>
<Protobuf Include="Protos\greet.proto" />
</ItemGroup>
Další informace o podpoře nástrojů gRPC najdete v tématu gRPC Services s jazykem 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
});
}
}
GreeterService dědí z typu GreeterBase, který je generován 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.