记.net core 8 集成 grpc
1、创建一个grpc服务
2、编写一个test.proto文件
syntax = "proto3";
option csharp_namespace = "GrpcService";
package test;
service TestPro{
rpc Test01 (TestRequest) returns (TestResult);
}
//返回结果
message TestResult{
string name =1;
string password = 2;
}
//返回结果
message TestRequest{
string name =1;
string password = 2;
}
3、在项目文件中加上路径
4、点击生成将会看到自动生成的cs文件
注:如果未自动生成代表存在问题
5、编写服务
public class Test01Service : TestPro.TestProBase
{
public override Task<TestResult> Test01(TestRequest request, ServerCallContext context)
{
return Task.FromResult(new TestResult()
{
Name = request.Name,
Password = request.Password,
});
}
}
6、运行,成功后创建一个客户端,无论是不是grpc工程都可以。添加包
7、将上传创建的服务端的文件拷贝过来,并在项目文件中添加路径
8、创建api然后运行
/// <summary>
/// grpc调用测试
/// </summary>
/// <returns></returns>
[HttpGet("testGrpc01")]
//可以返回的状态码
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
//swagger归属不同版本
[ApiExplorerSettings(GroupName = "v2")]
public string TestGrpc01()
{
string url = "http://localhost:5123";
using (var channel = GrpcChannel.ForAddress(url))
{
var client = new TestPro.TestProClient(channel);
var reply = client.Test01(new TestRequest()
{
Name = "Test传递",
Password = "passwordc传递"
});
Console.WriteLine($"密码:{reply.Password},name:{reply.Name}");
}
return "ok";
}