gRPC para C# (.NET): bibliotecas e exemplos de uso

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

gRPC para C# (.NET): bibliotecas e exemplos



gRPC é um framework de chamada remota de procedimentos (RPC) de alto desempenho do Google, baseado em HTTP/2 e Protocol Buffers (protobuf). No ecossistema .NET, o gRPC tornou-se o padrão de facto para comunicação entre microsserviços, oferecendo tipagem forte, transmissão bidirecional em fluxo e baixa latência. Neste artigo, abordaremos as principais bibliotecas para trabalhar com gRPC em C# e forneceremos exemplos práticos de configuração de servidor e cliente.



Principais bibliotecas gRPC para .NET



Para trabalhar com gRPC no .NET, são utilizados os seguintes pacotes do NuGet:



  • Grpc.AspNetCore — integração do servidor gRPC no ASP.NET Core (recomendado para hospedagem).
  • Grpc.Net.Client — biblioteca cliente para .NET (incluindo .NET Core, .NET 5+).
  • Grpc.Tools — gerador de código a partir de arquivos .proto (adicionado como item Protobuf no .csproj).
  • Google.Protobuf — manipulação de mensagens protobuf.


Todos esses pacotes são mantidos pela Microsoft e estão em desenvolvimento ativo. A instalação é feita via NuGet Package Manager ou dotnet CLI:



dotnet add package Grpc.AspNetCoredotnet add package Grpc.Net.Clientdotnet add package Google.Protobufdotnet add package Grpc.Tools


Criação de um servidor gRPC em C#



Vamos criar passo a passo um serviço simples para gerenciamento de pedidos.



1. Definição do arquivo proto

Crie o arquivo order.proto no projeto do servidor (exemplo: GrpcServer):



syntax = "proto3";

service OrderService { rpc GetOrder (OrderRequest) returns (OrderResponse); rpc SubscribeOrders (OrderRequest) returns (stream OrderResponse);}

message OrderRequest { int32 order_id = 1;}

message OrderResponse { int32 order_id = 1; string status = 2; double total = 3;}


2. Configuração do .csproj para geração de código

Adicione ao arquivo .csproj:



<ItemGroup>    <Protobuf Include="order.proto" GrpcServices="Server" /></ItemGroup>


3. Implementação do serviço

Crie uma classe que herda da classe base gerada:



public class OrderServiceImpl : OrderService.OrderServiceBase{    public override Task<OrderResponse> GetOrder(OrderRequest request, ServerCallContext context)    {        return Task.FromResult(new OrderResponse        {            OrderId = request.OrderId,            Status = "Shipped",            Total = 99.99        });    }

public override async Task SubscribeOrders(OrderRequest request, IServerStreamWriter<OrderResponse> responseStream, ServerCallContext context) { for (int i = 0; i < 5; i++) { await responseStream.WriteAsync(new OrderResponse { OrderId = request.OrderId, Status = $"Update #{i}", Total = 100 + i * 10 }); await Task.Delay(1000); } }}


4. Registro no Program.cs



var builder = WebApplication.CreateBuilder(args);builder.Services.AddGrpc();

var app = builder.Build();app.MapGrpcService<OrderServiceImpl>();app.MapGet("/", () => "gRPC server is running");app.Run();


Criação de um cliente gRPC em C#



Agora vamos criar um aplicativo de console cliente (GrpcClient).



1. Preparação

Copie o arquivo order.proto para o projeto cliente e especifique no .csproj:



<Protobuf Include="order.proto" GrpcServices="Client" />


2. Código do cliente



using Grpc.Net.Client;using GrpcClient;

var channel = GrpcChannel.ForAddress("https://localhost:5001");\

Recommendations