Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Note
Esta não é a versão mais recente deste artigo. Para a versão atual, consulte a versão .NET 10 deste artigo.
Warning
Esta versão do ASP.NET Core não é mais suportada. Para obter mais informações, consulte a Política de suporte do .NET e do .NET Core. Para a versão atual, consulte a versão .NET 10 deste artigo.
gRPC é uma estrutura de alto desempenho para Chamada de Procedimento Remoto (RPC) que é independente de linguagem.
Os principais benefícios do gRPC são:
- Estrutura RPC moderna, leve e de alto desempenho.
- Desenvolvimento de API com base em contrato que utiliza Protocol Buffers por defeito, permitindo implementações independentes da linguagem.
- Existem ferramentas disponíveis para muitas linguagens de programação que permitem gerar servidores e clientes fortemente tipados.
- Suporta chamadas de streaming cliente, servidor e bidirecional.
- Redução do uso da rede com a serialização binária Protobuf.
Esses benefícios tornam o gRPC ideal para:
- Microsserviços leves onde a eficiência é crítica.
- Sistemas poliglotas onde são necessárias várias linguagens para o desenvolvimento.
- Serviços ponto a ponto em tempo real que precisam lidar com solicitações ou respostas de streaming.
Suporte de ferramentas C# para ficheiros .proto
O gRPC usa uma abordagem de contrato em primeiro lugar para o desenvolvimento de API. Os serviços e mensagens são definidos em ficheiros .proto :
syntax = "proto3";
service Greeter {
rpc SayHello (HelloRequest) returns (HelloReply);
}
message HelloRequest {
string name = 1;
}
message HelloReply {
string message = 1;
}
.NET tipos para serviços, clientes e mensagens são gerados automaticamente ao incluir ficheiros .proto num projeto:
- Adicione uma referência de pacote ao pacote Grpc.Tools .
- Adiciona ficheiros .proto ao
<Protobuf>grupo de itens.
<ItemGroup>
<Protobuf Include="Protos\greet.proto" />
</ItemGroup>
Para obter mais informações sobre o suporte a ferramentas gRPC, consulte Serviços gRPC com C#.
Serviços gRPC no ASP.NET Core
Os serviços gRPC podem ser hospedados no ASP.NET Core. Os serviços têm integração total com ASP.NET recursos principais, como registro, injeção de dependência (DI), autenticação e autorização.
Adicionar serviços gRPC a um aplicativo ASP.NET Core
gRPC requer o Grpc.AspNetCore pacote. Para obter informações sobre como configurar o gRPC em um aplicativo .NET, consulte Configurar o gRPC.
O modelo de projeto de serviço gRPC
O modelo de projeto ASP.NET Core gRPC Service fornece um serviço inicial:
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 herda do tipo GreeterBase, que é gerado a partir do serviço Greeter no ficheiro .proto. O serviço é disponibilizado aos clientes no ficheiro Program.cs :
app.MapGrpcService<GreeterService>();
Para saber mais, consulte os serviços gRPC com ASP.NET Core.
chamadas de serviço gRPC com um cliente .NET
Os clientes gRPC são tipos concretos de clientes gerados a partir de ficheiros .proto. O cliente gRPC concreto tem métodos que se traduzem no serviço gRPC no ficheiro .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);
Um cliente gRPC é criado usando um canal, que representa uma ligação duradoura a um serviço gRPC. Um canal pode ser criado usando GrpcChannel.ForAddress.
Para obter mais informações sobre como criar clientes e chamar métodos de serviço diferentes, consulte Chamar serviços gRPC com o cliente .NET.
Conteúdo relacionado
gRPC é uma estrutura de alto desempenho para Chamada de Procedimento Remoto (RPC) que é independente de linguagem.
Os principais benefícios do gRPC são:
- Estrutura RPC moderna, leve e de alto desempenho.
- Desenvolvimento de API contract-first, utilizando, por padrão, Protocol Buffers, permitindo implementações agnósticas de linguagem.
- Ferramentas disponíveis para muitas linguagens de programação para gerar servidores e clientes fortemente tipados.
- Suporta chamadas de streaming cliente, servidor e bidirecional.
- Redução do uso da rede com a serialização binária Protobuf.
Esses benefícios tornam o gRPC ideal para:
- Microsserviços leves onde a eficiência é crítica.
- Sistemas poliglotas onde são necessárias várias linguagens para o desenvolvimento.
- Serviços ponto a ponto em tempo real que precisam lidar com solicitações ou respostas de streaming.
Suporte a ferramentas C# para .proto arquivos
O gRPC usa uma abordagem de contrato em primeiro lugar para o desenvolvimento de API. Serviços e mensagens são definidos em .proto arquivos:
syntax = "proto3";
service Greeter {
rpc SayHello (HelloRequest) returns (HelloReply);
}
message HelloRequest {
string name = 1;
}
message HelloReply {
string message = 1;
}
Os tipos .NET para serviços, clientes e mensagens são gerados automaticamente pela inclusão .proto de arquivos em um projeto:
- Adicione uma referência de pacote ao pacote Grpc.Tools .
- Adicione
.protoarquivos ao grupo de<Protobuf>itens.
<ItemGroup>
<Protobuf Include="Protos\greet.proto" />
</ItemGroup>
Para mais informações sobre suporte a ferramentas gRPC, consulte Serviços gRPC com C#.
Serviços gRPC no ASP.NET Core
Os serviços gRPC podem ser hospedados no ASP.NET Core. Os serviços têm integração total com ASP.NET recursos principais, como registro, injeção de dependência (DI), autenticação e autorização.
Adicionar serviços gRPC a um aplicativo ASP.NET Core
gRPC requer o Grpc.AspNetCore pacote. Para obter informações sobre como configurar o gRPC em um aplicativo .NET, consulte Configurar o gRPC.
O modelo de projeto de serviço gRPC
O modelo de projeto de serviço gRPC fornece um serviço inicial:
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 herda do tipo GreeterBase, que é gerado a partir do serviço Greeter no ficheiro .proto. O serviço é disponibilizado aos clientes em Startup.cs:
app.UseEndpoints(endpoints =>
{
endpoints.MapGrpcService<GreeterService>();
});
Para saber mais sobre os serviços gRPC no ASP.NET Core, consulte Serviços gRPC com ASP.NET Core.
Chamar serviços gRPC com um cliente .NET
Os clientes gRPC são tipos de clientes concretos que são gerados a partir de arquivos .proto. O cliente gRPC concreto tem métodos que correspondem ao serviço gRPC no arquivo .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);
Um cliente gRPC é criado usando um canal, que representa uma conexão de longa duração com um serviço gRPC. Um canal pode ser criado usando GrpcChannel.ForAddress.
Para obter mais informações sobre como criar clientes e chamar métodos de serviço diferentes, consulte Chamar serviços gRPC com o cliente .NET.