服务端
优质
小牛编辑
133浏览
2023-12-01
定义一个自己的服务
定义自己的proto文件,声明自己的服务接口
syntax = "proto3";
package grpc.domain;
service RpcTest{
rpc SayHello(HelloRequest) returns (HelloReponse);
}
message HelloReponse{
string Result = 1;
int32 Code = 2;
string Msg = 3;
}
message HelloRequest {
string name = 1;
int32 Age = 2;
}
nuget安装Grpc.Tools grpc工具,在声明该项目为grpc服务
<ItemGroup>
<Protobuf Include="Protos\*.proto" GrpcServices="Server" />
</ItemGroup>
实现定义的服务
public class HelloService : RpcTest.RpcTestBase
{
public override Task<HelloReponse> SayHello(HelloRequest request, ServerCallContext context)
{
return Task.FromResult(new HelloReponse()
{
Code = 1,
Msg = "hello simple",
Result = JsonConvert.SerializeObject(request)
});
}
}
注册服务
在模块中重写MapGrpcService方法
public override void MapGrpcService(IEndpointRouteBuilder endpointRoute)
{
endpointRoute.MapGrpcService<HelloService>();
}
配置文件server.json 设置
{
"Logging": { //日志配置节点
"LogLevel": { //默认筛选器
"Default": "Debug", //默认日志类别
"System": "Information" //日志类别为System
},
"Console": { //针对日志提供程序Console的配置
"LogLevel": { //日志筛选器
"Default": "Information", //默认日志类别//Error
"LoggingSample.Program": "Debug" //日志类别为LoggingSample.Program的筛选器
}
}
},
"Server": {
"Name": "sample", //服务名称
"Ip": "192.168.3.11", //服务地址
"Port": "5003", //服务端口
"EnableHttp": true, //是否开启http
"Security": {
"Whitelist": "*", //白名单
"BlackList": "" //黑名单
}
//"KongAddress": "192.168.190.114:8001" //网关kong 地址(默认不使用)
//"Weight": 5 //权重 --当负载策略为RandomWeight时设置权重值
},
//注册中心配置
"Consul": {
"ConnectionString": "192.168.180.55:8500", //注册中心地址
"IsHealthCheck": true //是否进行健康检查
//"Strategy": "RandomWeight" //随机权重。默认随机算法
}
}