0% found this document useful (0 votes)
78 views2 pages

GRPC NET PDF

The document discusses gRPC support for C# tooling. It describes how .proto files are used to define gRPC services and messages, and how .NET types are automatically generated from these files. It also summarizes how gRPC services can be hosted on ASP.NET Core with features like dependency injection and logging, and how clients can call services using generated client types.

Uploaded by

Kleine Gustav
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
78 views2 pages

GRPC NET PDF

The document discusses gRPC support for C# tooling. It describes how .proto files are used to define gRPC services and messages, and how .NET types are automatically generated from these files. It also summarizes how gRPC services can be hosted on ASP.NET Core with features like dependency injection and logging, and how clients can call services using generated client types.

Uploaded by

Kleine Gustav
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 2

C# Tooling support for .

proto files
gRPC uses a contract-first approach to API development. Services and messages are
defined in *.proto files:

ProtoBuf
syntax = "proto3";

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

message HelloRequest {
string name = 1;
}

message HelloReply {
string message = 1;
}

.NET types for services, clients and messages are automatically generated by including
*.proto files in a project:

• Add a package reference to Grpc.Tools package.


• Add *.proto files to the <Protobuf> item group.

XML
<ItemGroup>
<Protobuf Include="Protos\greet.proto" />
</ItemGroup>

For more information on gRPC tooling support, see gRPC services with C#.

gRPC services on ASP.NET Core


gRPC services can be hosted on ASP.NET Core. Services have full integration with
popular ASP.NET Core features such as logging, dependency injection (DI),
authentication and authorization.

The gRPC service project template provides a starter service:

C#
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 inherits from the GreeterBase type, which is generated from the
Greeter service in the *.proto file. The service is made accessible to clients in
Startup.cs:

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

To learn more about gRPC services on ASP.NET Core, see gRPC services with
ASP.NET Core.

Call gRPC services with a .NET client


gRPC clients are concrete client types that are generated from *.proto files. The
concrete gRPC client has methods that translate to the gRPC service in the *.proto file.

C#
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);

A gRPC client is created using a channel, which represents a long-lived connection to a


gRPC service. A channel can be created using GrpcChannel.ForAddress.

For more information on creating clients, and calling different service methods, see Call
gRPC services with the .NET client.

You might also like