grpc with aspnet core
2022. 5. 18. 00:00ㆍASPNET/Grpc
반응형
aspnet core 를 통해 grpc server 를 생성 할 수 있다.
Protos/greet.proto 수정
syntax = "proto3";
option csharp_namespace = "GrpcInterface"; // <--- change name
package greet;
// The greeting service definition.
service Greeter {
// Sends a greeting
rpc SayHello (HelloRequest) returns (HelloReply);
}
// The request message containing the user's name.
message HelloRequest {
string name = 1;
}
// The response message containing the greetings.
message HelloReply {
string message = 1;
}
Program.cs 분석
using GrpcServerWithASPNet.Services;
var builder = WebApplication.CreateBuilder(args);
// Additional configuration is required to successfully run gRPC on macOS.
// For instructions on how to configure Kestrel and gRPC clients on macOS, visit https://go.microsoft.com/fwlink/?linkid=2099682
// Add services to the container.
builder.Services.AddGrpc();
var app = builder.Build();
// Configure the HTTP request pipeline.
app.MapGrpcService<GreeterService>();
app.MapGet("/", () => "Communication with gRPC endpoints must be made through a gRPC client. To learn how to create a client, visit: https://go.microsoft.com/fwlink/?linkid=2086909");
app.Run();
Services/GreeterService.cs
using Grpc.Core;
using GrpcInterface;
namespace GrpcServerWithASPNet.Services
{
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)
{
var httpContext = context.GetHttpContext();
var clientCertificate = httpContext.Connection.ClientCertificate;
return Task.FromResult(new HelloReply
{
Message = "Hello " + request.Name
});
}
}
}
aspnet core 의 모든 기능을 사용할 수 있다.
ILogger 를 통해서 Logging을 하고 있다. (Dependency Injection 이용)
ServerCallContext 를 통해 HttpContext 를 가져와서 client 와 관련된 정보를 얻어올 수 있다.
var httpContext = context.GetHttpContext();
var clientCertificate = httpContext.Connection.ClientCertificate;
해당 server 를 호출 하기 위한 간단한 client
1. Console project 를 생성한다.
2. GrpcClient 로 이름 정한 후 Create 한다.
3. GrpcClient 에서 마우스 오른쪽 클릭 --> Add -->Connected Service 선택
4. Service References 에서 + 클릭
5. gRPC 선택 후 next
6. File 선택 후 Browse
7. 이전에 만들었던 grpc server 의 위치로 이동 후 Protos/greet.proto 파일 선택
8. Finish
아래와 같이 구성되었는지 확인
Program.cs 로 이동 다음 코드 입력
using Grpc.Net.Client;
using GrpcInterface;
var channel = GrpcChannel.ForAddress("https://localhost:7253");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "나는 천재" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
서버 실행 후 client 도 실행
관련영상
반응형
'ASPNET > Grpc' 카테고리의 다른 글
gRPC - Configuration (0) | 2022.05.23 |
---|---|
grpc test - grpcui (0) | 2022.05.20 |
grpc test - grpcurl (0) | 2022.05.19 |
grpc - console client (0) | 2022.05.17 |
grpc - console server (0) | 2022.05.16 |