1、新建Asp.Net Core WebApi項目
2、在webapi項目中集成gRPC環境
2.1 添加nuget依賴包:Google.Protobuf 、 Grpc.Net.Client 、 Grpc.Tools
webapi中多添加一個【可選】: Grpc.AspNetCore (用於在startup.cs配置IOC)。
2.2 新建Protos文件夾。
2.3 將gRPC服務端的.proto文件複製到當前項目Protos文件夾下。
2.4 修改項目文件。 也可以直接重新生成項目,會自動添加。
<ItemGroup>
<Protobuf Include="Protos\demo.proto" GrpcServices="Client" />
</ItemGroup>
2.5 重新生成項目
3、調用第三方gRPC服務
3.1 手動創建對象來調用,用起來麻煩,適合初學者學習。
// 1、建立連接
using (GrpcChannel grpcChannel = GrpcChannel.ForAddress("https://localhost:5001"))
{
// 2、客戶端創建
var demo = new Demo.DemoClient(grpcChannel);
//// 3、開始調用
var response = demo.DemoMethod(new RequestParam()
{
Id = 1
});
Console.WriteLine(JsonConvert.SerializeObject(response));
}
3.2 在startup.cs中配置依賴注入來調用【webapi / MVC項目】
多個服務實例的情況下無法使用負載均衡算法來動態設置。可以配合nginx的grpc負載均衡策略來使用,伸縮性也不好。
a) 配置startup.cs
public void ConfigureServices(IServiceCollection services)
{
// 1、GRPC客戶端
services.AddGrpcClient<Demo.DemoClient>(options => {
options.Address = new Uri("https://localhost:5001");
});
services.AddGrpcClient<Greeter.GreeterClient>(options => {
options.Address = new Uri("https://localhost:5001");
});
services.AddControllers();
}
b) 調用